# adona-robot > Market data sold by capacity: one-second OHLC candles and a live bid/ask quote stream for 46 FX pairs and 5 metals, redistribution allowed: show it in your product, relay it to your own clients, keep it. Priced by the monthly peak of simultaneous connections and by slices of 1000 bars, not per seat, plus CHF 150 per symbol you follow live around the clock. From CHF 500 a month. Prices exclude VAT. Swiss VAT is added for a customer established in Switzerland or Liechtenstein; a business established elsewhere pays no Swiss VAT (reverse charge). A company number is asked at payment. Swiss company (Adona Robot Sàrl). Facts as of 2026-10-28. ## What it is - REST history: `GET https://api.adona-robot.com/v1/candles?symbol=EURUSD&timeframe=S1`, timeframes S1 (1s), M1 (1m), M5 (5m), M15 (15m), H1 (1h), H4 (4h), D1 (1d), up to 5000 bars a page, prices as strings. - History: 1m to 1d since 2025-05-16 for EURUSD, GBPUSD, USDJPY, XAUUSD, since 2026-03-17 or 2026-05-17 for the others; before 2026-05-21 (2026-05-22 for EURUSD) the 1m history comes from a different price feed than the live series, and so do some gap-filled 1m bars until 2026-06-04 at the latest; each symbol's own dates are on its page and in https://adona-robot.com/symbols.json. A candle's volume is a tick volume, the number of price updates received in the bar, not a traded volume; bars from the other feed, on any timeframe until 2026-06-05 at the latest (per symbol and timeframe: other_feed_until in /symbols.json), carry its tick volume, not counted the same way. 1s kept 180 days rolling (the archive opened on 2026-09-06), the same on every paid plan (the trial reads the last 7 days). - Live stream: WebSocket `wss://api.adona-robot.com/v1/stream`. Get a single-use ticket from `POST /v1/ws-ticket`, then offer TWO subprotocols: `adona.data.v1` and `ticket.`, e.g. `new WebSocket(url, ["adona.data.v1", "ticket." + ticket])`. The ticket never goes in the URL: a ticket sent only in the query string is ignored, and the connection is refused. The `subscribed` and `candle.watched` acknowledgements say, per symbol, whether its market is `open`, `closed` (outside trading hours, such as a weekend: after the snapshot the channel stays silent until the open) or `unknown`, as of that acknowledgement. - Auth: an API key (`adk_live_...`) stays on your server and is exchanged at `POST /v1/tokens` for a twelve-hour token per end user; the browser uses that token. - Paid plans never refuse a connection. Every paid plan starts on Starter; after that the month's reading (peak simultaneous connections and slices) sets the next invoice's plan, up or down, never mid-month except for a closing invoice. A lower plan applies only after a month at least 90% measured. If you cancel, the plan runs to the end of the month and the closing invoice arrives on the 1st: it counts as that next invoice, for the month just ended. If the subscription ends earlier (a key cut off for more than 24 h, by you or by us; a blocked account; an unpaid invoice), it comes within minutes and reads the month up to then. Either way, if that reading calls for a higher plan than the one paid, the closing invoice carries the difference, in full and not prorated; the correction only goes up, never a refund. - Use: redistribution is allowed on every plan. Show the data in your product, relay it to your own clients, keep what you receive; there is no feed contract to negotiate. There is no bulk export or download: history comes through the metered API only. - Continuous feed: a symbol followed live (one of your connections subscribed to it on the stream, even while its price does not move, or a REST answer carrying the bar still forming or a one-second bar closed less than 10 s ago; history never counts) for more than 80% of its open hours in the month adds CHF 150 to the invoice, on top of the plan, no cap, on the invoice that follows the month, or on the closing invoice when the subscription ends. Only time while the market was open and our service was up, during the part of the month you were on a paid plan, counts; a moment our service was down or we did not measure is never billed. Reaching the threshold never cuts the feed. - Examples of a month: Scale with no continuous feed = CHF 2 400; Scale with 5 continuous feeds = CHF 3 150; Starter with 24 continuous feeds = CHF 4 100; Starter with 51 continuous feeds = CHF 8 150; Enterprise with 51 continuous feeds = CHF 12 650. ## Plans - Trial: free for 7 days, EURUSD and XAUUSD only, 3 simultaneous connections, 2 500 slices a day, 7 days of history, company email required, one per company. - Starter: CHF 500 a month, all 51 symbols, sized for 30 simultaneous connections, 750 000 slices a month. - Growth: CHF 1 200 a month, all 51 symbols, sized for 100 simultaneous connections, 2 500 000 slices a month. - Scale: CHF 2 400 a month, all 51 symbols, sized for 300 simultaneous connections, 7 500 000 slices a month. - Enterprise: CHF 5 000 a month, all 51 symbols, sized for 1 000 simultaneous connections, 25 000 000 slices a month, with an SLA of an answer to every request within 24 h and a dedicated support agent. - Above Enterprise: on quote: write to sales@adona-robot.com. - Price a month of usage: https://adona-robot.com/en/calculator?connections=&slices=&feeds= answers the plan and the CHF total before VAT, by the rule the monthly review applies (the MCP tool `quote_price_for` gives the same answer). ## Symbols Every paid plan carries all 51; the trial carries EURUSD and XAUUSD. The same list as JSON: https://adona-robot.com/symbols.json. Each symbol has its own page, https://adona-robot.com/en/symbols/, for example https://adona-robot.com/en/symbols/usdchf. - FX pairs: AUDCAD, AUDCHF, AUDJPY, AUDNZD, AUDSGD, AUDUSD, CADCHF, CADJPY, CHFJPY, EURAUD, EURCAD, EURCHF, EURDKK, EURGBP, EURJPY, EURNOK, EURNZD, EURSEK, EURSGD, EURUSD, GBPAUD, GBPCAD, GBPCHF, GBPDKK, GBPJPY, GBPNOK, GBPNZD, GBPSEK, GBPSGD, GBPUSD, NOKJPY, NOKSEK, NZDCAD, NZDCHF, NZDJPY, NZDUSD, SEKJPY, SGDJPY, USDCAD, USDCHF, USDDKK, USDHKD, USDJPY, USDNOK, USDSEK, USDSGD. - Metals: XAGUSD (Silver / USD), XAUEUR (Gold / EUR), XAUUSD (Gold / USD), XPDUSD (Palladium / USD), XPTUSD (Platinum / USD). ## Uses - [A one-second FX data API](https://adona-robot.com/en/use/1-second-fx-data-api) - [A forex data feed you may redistribute](https://adona-robot.com/en/use/redistributable-forex-data-feed) - [A live gold price API](https://adona-robot.com/en/use/live-gold-price-api) - [A forex one-minute history API](https://adona-robot.com/en/use/forex-1-minute-history-api) - [A live forex WebSocket API](https://adona-robot.com/en/use/forex-websocket-price-stream) - [A market-data MCP server for AI agents](https://adona-robot.com/en/use/market-data-mcp-server-ai-agent) - [A forex data API in Python](https://adona-robot.com/en/use/forex-data-api-python) - [Live forex rates in your app, for your own users](https://adona-robot.com/en/use/display-forex-rates-in-your-app) - [Market data redistribution, without a separate agreement](https://adona-robot.com/en/use/market-data-redistribution) - [A precious metals price API](https://adona-robot.com/en/use/precious-metals-price-api) - [Tick volume in forex](https://adona-robot.com/en/use/tick-volume) - [One-second OHLC bars and tick data](https://adona-robot.com/en/use/one-second-ohlc-vs-tick-data) - [A gold price WebSocket API](https://adona-robot.com/en/use/gold-price-websocket) - [A Swiss market data API](https://adona-robot.com/en/use/swiss-market-data-api) - [A forex API that answers in JSON](https://adona-robot.com/en/use/forex-api-json) - [A live forex API, update by update](https://adona-robot.com/en/use/real-time-forex-api) - [A forex OHLC candles API](https://adona-robot.com/en/use/forex-ohlc-candles-api) - [How a forex data API is priced here](https://adona-robot.com/en/use/forex-data-api-pricing) - [A forex data feed for brokers and trading platforms](https://adona-robot.com/en/use/forex-data-feed-for-brokers) - [A gold price in euros API](https://adona-robot.com/en/use/gold-price-in-euros-api) - [Can I display market data in my app?](https://adona-robot.com/en/use/can-i-display-market-data-in-my-app) ## MCP server (for AI agents) - URL: https://api.adona-robot.com/mcp, transport streamable-http (stateless). Add it to an MCP client as a remote server. - `get_offer`: the plans, prices, limits, trial and continuous feed. No key needed. - `list_symbols`: every symbol a paid plan carries, with its name and class. No key needed. - `quote_price_for`: the plan and the CHF total, before VAT, for a month of usage. No key needed. - `get_candles`: candle history for one symbol, one page, oldest first. Needs your API key on every call (the headers are below), and is billed exactly like `GET /v1/candles`: slices of 1000 bars, from your plan. - The key goes in `Authorization: Bearer adk_live_...`, or in `X-API-Key: adk_live_...` for a client or gateway that keeps Authorization for itself; two different keys in the two headers are refused with `CONFLICTING_API_KEYS`. - A client configuration, for Claude Code (.mcp.json) and Cursor. The key goes in the agent's configuration on your machine or server, never in a web page; the three keyless tools need no header: ```json { "mcpServers": { "adona-robot": { "type": "http", "url": "https://api.adona-robot.com/mcp", "headers": { "Authorization": "Bearer adk_live_..." } } } } ``` ## Docs - [API reference](https://adona-robot.com/en/reference): every route, every response body, every refusal code and what to do about it. - [OpenAPI document](https://api.adona-robot.com/v1/openapi.json): the same, machine-readable. Generate a client from it. - [Changelog](https://adona-robot.com/en/changelog): dated changes to the /v1 contract: breaking, deprecated, corrected in the reference, added. Last change: 2026-10-28. - [Example: token-server.ts](https://adona-robot.com/examples/token-server.ts): Node 18+, no dependency. Exchanges the API key for a twelve-hour token per end user and reuses it until a minute before it expires, with a fresh one after a key rotation; the key never reaches a browser. - [Example: browser.ts](https://adona-robot.com/examples/browser.ts): No dependency. Reads candle history once with the cursor, then keeps the chart current from the live stream: the ticket as a subprotocol, a reconnect through deploys and network loss, and a stop on the refusals that retrying cannot change. - [Example: history.py](https://adona-robot.com/examples/history.py): Python 3.9+, standard library only. Pulls every bar back to a date into a CSV and keeps a local store, so the next run asks for about as many bars as can have arrived since: closed history is paid for once. - [Offer as JSON](https://adona-robot.com/spec.json): plans, prices, limits and symbols. - [Everything in one file](https://adona-robot.com/llms-full.txt): this text, the API reference, the changelog and the examples' code. - [Product page](https://adona-robot.com/en): the same facts for humans; [en français](https://adona-robot.com/fr). - [Terms of service](https://adona-robot.com/en/terms): what binds a customer, with the price table; the French text prevails ([en français](https://adona-robot.com/fr/terms)). - [Privacy](https://adona-robot.com/en/privacy) and [legal notice](https://adona-robot.com/en/legal): what is kept, and who publishes the site. - [Security](https://adona-robot.com/en/security): how the key, the tokens and an account are kept, how a key is cut off, and where to report a vulnerability (also https://adona-robot.com/.well-known/security.txt). ## Contact - Support, for customers: support@adona-robot.com, by email on business days in Geneva. - Sales, for Enterprise and above it: sales@adona-robot.com. ## Optional - [Open an account](https://adona-robot.com/en/signup): the trial key is issued from the account page.