# Broker API Hub: the full reference > The core of an independent reference for retail broker trading APIs, in one file: 21 broker records and 8 platform API records with their claims and limits, 359 endpoints by method and path, 215 functions and messages of APIs that are not HTTP, and 1,776 error codes by code and HTTP status. Every fact carries its status, the page it was read on and the date that page was checked. Independent and unofficial. Not affiliated with or endorsed by any broker or platform named here. Educational only: nothing here is advice, and nothing here recommends a broker or a trade. Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders. How to read this file: - Status is one of verified, conflicting, unverified or superseded. Unverified means no dated source stands behind the line: treat it as unverified. Conflicting means two sources disagree, and both readings are given. - Checked is the date the source page was last opened. It is never the date this file was built. - Not recorded means this site holds no record. It never means the thing does not exist. - Lists are in name, path or code order. Nothing here is ranked. - A function or message line gives the name, its kind, the interface it belongs to and the page. It is a call of an API that is not HTTP, so it has no method and no path. - An endpoint line gives the method, the path and the page. An error line gives the code, the HTTP status, the status of the record and the page. The parameters of an endpoint and the meaning and fix of an error are on the page: add .md to the page address for markdown. - The index of the site is https://openbrokerapi.com/llms.txt. The same data as JSON and CSV is listed at https://openbrokerapi.com/data. The newest check of a broker record, a platform record or a rate limit is dated 2026-10-12. ## Capabilities in this file Each record below carries its row of the capability grid. This is what each capability means and how its cell is decided. - [Own API](https://openbrokerapi.com/capabilities/own-api): The state is the record's nativeApi field: true is yes and false is no. The words and the source beside it are the record's own statement of how you get access. Where the field is empty, the state is a row of the capability facts register if the record's sentence about access settles it: the row gives the reason, and its status, source and date are that sentence's. With neither, the row is not recorded. Where the field and the sentence disagree, trust the sentence and its source over the field: the field is then the part of the record that needs correcting. Platform records are left out, because a platform record is itself an API. - [Documentation link](https://openbrokerapi.com/capabilities/documentation): Yes means the record holds a documentation address in its docsUrl field. The date is the newest date on which a source at exactly that address was checked in the same record. Where the record holds the address but no dated reading of it, the row is labelled unverified. - [Demo or sandbox](https://openbrokerapi.com/capabilities/demo): Each record holds a sentence about demo access, not a yes or no field. A person read each sentence and entered yes, partial or no in the capability facts register only where the sentence's own words settle it. The reason is printed in this site's words, the scope says what the demo is of, and the sentence itself is quoted under it. A demo of a trading platform is not a demo of an API: where the sentence describes only a platform demo, the state is partial and the scope says so. The status, the source and the date are the sentence's own, so a reading of an unverified sentence is unverified. A sentence that settles nothing stays at not recorded. - [Streaming](https://openbrokerapi.com/capabilities/streaming): Each record holds a sentence about streaming, not a yes or no field. A person read each sentence and entered yes, partial or no in the capability facts register only where the sentence's own words settle it. Yes means the record describes a connection that pushes data to you. It does not by itself say what is pushed: each row also says whether the record names prices, account updates, both or neither, and where an endpoint or error record names one, that record is cited. Partial means streaming on one route and not another. The status, the source and the date are the sentence's own. A sentence that settles nothing stays at not recorded. - [Authentication described](https://openbrokerapi.com/capabilities/authentication): Each record holds a sentence about authentication, not a yes or no field. A person read each sentence and entered a state in the capability facts register only where its own words settle it. Yes means the sentence names how a request is authenticated, which includes a platform whose code runs inside a terminal that is already logged in. Partial means it names part of it. No means the record says there is no authentication route, for example because the API was withdrawn. The status, the source and the date are the sentence's own. A record with no such sentence, or one that says the method could not be read, stays at not recorded. - [Published rate limits](https://openbrokerapi.com/capabilities/rate-limits): Yes means the limits register holds at least one limit record for it: a figure or a wording, with its scope, read on the source shown. Where there is no limit record, the state is a row of the capability facts register if a sentence or an error record settles it. No means the record says no limit is published, which is not a statement that the API has no limit. Partial means a limit is documented for part of the API, or the record says limits exist and are served at runtime with no published figure. Any other sentence is printed and the state stays at not recorded. - [Official SDK or library](https://openbrokerapi.com/capabilities/official-sdk): Yes means the record lists at least one library, sample or tool marked official, meaning published by the broker or platform itself. The languages are as the record words them. A record that lists only community libraries, or none, is not recorded: this site holding no official entry is not evidence that none exists. - [Python library](https://openbrokerapi.com/capabilities/python-library): Yes means the record lists at least one library whose language field names Python, official or community. Each is shown as official or community, as the record marks it. A record that lists no Python library is not recorded, which is not evidence that none exists. The finder on /compare reads this same cell for its Python library tick, so the two give one answer. - [Official MCP server](https://openbrokerapi.com/capabilities/official-mcp-server): Yes means the MCP server register holds a server marked official whose owner is this record. Anything else is not recorded. A server that was looked for and not found is still not recorded here, because not finding one on the pages opened is not proof that none exists. - [Community MCP server](https://openbrokerapi.com/capabilities/community-mcp-server): Yes means the MCP server register holds a server not marked official whose owner is this record. Anything else is not recorded, which is not evidence that none exists. - [Platform APIs reachable](https://openbrokerapi.com/capabilities/platform-apis): Each broker record lists platforms with an available field. Yes means at least one is marked true. No means every listed platform is marked false. Anything else, including a record that lists none, is not recorded. Platform records are left out. - [Endpoints documented here](https://openbrokerapi.com/capabilities/endpoints): Yes means this site publishes at least one endpoint record for it, and the count is of those records. Not recorded means this site has documented none yet. It says nothing about how many endpoints the API has. - [Error codes decoded here](https://openbrokerapi.com/capabilities/error-codes): Yes means this site publishes at least one error record for it, and the count is of those records. Not recorded means this site has decoded none yet. It says nothing about which errors the API can return. - [OpenAPI file here](https://openbrokerapi.com/capabilities/openapi-file): Yes means this site generates an OpenAPI file for it from its endpoint records. Not recorded means this site publishes no such file. It says nothing about whether the provider publishes an OpenAPI file of its own. - [Quickstart here](https://openbrokerapi.com/capabilities/quickstart): Yes means this site publishes a quickstart record for it. Not recorded means this site has written none yet. - [Dated changes recorded](https://openbrokerapi.com/capabilities/dated-changes): Yes means this site's change log holds at least one dated entry for it, and the count is of those entries. Not recorded means the change log holds none. It does not mean the API has not changed. ## Functions, messages and streaming Besides HTTP endpoints the site records 215 calls of interfaces that are not HTTP: 106 functions of language bindings and 109 messages of wire protocols and streaming connections, owned by brokers as well as by platform APIs. A message is a request, a response, an event the server sends unasked, or a subscription the client opens and the server then feeds. Each interface is below, and each call is listed under its owner. The same records are in https://openbrokerapi.com/data/calls.json, and the endpoints in https://openbrokerapi.com/data/endpoints.json. - Bitget WebSocket API, the broker's own interface of Bitget: 10 messages (2 requests, 8 subscriptions), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/bitget/messages - Capital.com WebSocket API, the broker's own interface of Capital.com: 7 messages (2 events, 5 requests), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/capital-com/messages - Deriv WebSocket API, the broker's own interface of Deriv: 19 messages (19 requests), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/deriv/messages - eToro WebSocket API, the broker's own interface of eToro: 6 messages (3 requests, 3 subscriptions), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/etoro/messages - IG Streaming API, the broker's own interface of IG: 5 messages (5 subscriptions), each travels over a Lightstreamer connection that stays open, which a Lightstreamer client library manages; the records name Lightstreamer as the transport. Index: https://openbrokerapi.com/brokers/ig/messages - Saxo OpenAPI streaming connection, the broker's own interface of Saxo OpenAPI: 5 messages (4 events, 1 request), each travels over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/saxo/messages - cTrader Open API, a platform API interface of cTrader Open API: 49 messages (7 events, 23 requests, 19 responses), each is sent over an open TCP or WebSocket connection, as Protocol Buffers or as JSON. Index: https://openbrokerapi.com/platforms/ctrader/messages - DXtrade Push API, a platform API interface of DXtrade APIs: 8 messages (2 events, 6 requests), each is sent as JSON or XML over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/platforms/dxtrade/messages - MQL4, a platform API interface of MetaTrader 4 (MQL4): 28 functions, called from an MQL4 program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-4/functions - MetaTrader5 Python package, a platform API interface of MetaTrader 5 (Python package and MQL5): 32 functions, called from a Python program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-5/functions - MQL5, a platform API interface of MetaTrader 5 (Python package and MQL5): 46 functions, called from an MQL5 program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-5/functions ## Brokers ### Axi - Page: https://openbrokerapi.com/brokers/axi (markdown: https://openbrokerapi.com/brokers/axi.md, JSON: https://openbrokerapi.com/data/brokers/axi.json) - Kind: broker, recorded as having no API of its own - Newest reading: 2026-10-12 - Official documentation: [axi.com](https://www.axi.com/uk) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: Platform access only, on the pages opened. Axi's UK site lists the Axi Trading Platform, MetaTrader 4, MetaTrader 5 and Axi Copy Trading, and its platforms page presents Expert Advisors on MetaTrader as the way to automate. No Axi page opened on 12 Oct 2026 mentions an API of Axi's own. That is what the pages show, not a statement by Axi that it has none. - Status: verified. Source: [Trading platforms, Axi UK](https://www.axi.com/uk/trading-platforms), checked 2026-10-12. - Status: verified. Source: [Axi UK](https://www.axi.com/uk), checked 2026-10-12. - Demo: Platform demo only: a free demo account on MetaTrader 4 or MetaTrader 5 with USD 50,000 in virtual funds, created in the Axi Client Portal, which expires after 30 consecutive days without a trade. It is a demo of the platform, not of an API, because the pages opened describe no Axi API. - Status: verified. Source: [Demo account, Axi UK](https://www.axi.com/uk/demo-account), checked 2026-10-12. - Rate limits, as worded: Unverified. The Axi help article this was read on in September 2026 answered 404 on 12 Oct 2026, and Axi's help centre is now a portal that does not render without scripts. No Axi page opened today mentions an API or a request limit, which is not evidence that there is none. Code that runs on MetaTrader meets the platform's own limits, held in the MetaTrader records. - Status: unverified. Source: [Trading platforms, Axi UK](https://www.axi.com/uk/trading-platforms), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Not recorded - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### Bitget - Page: https://openbrokerapi.com/brokers/bitget (markdown: https://openbrokerapi.com/brokers/bitget.md, JSON: https://openbrokerapi.com/data/brokers/bitget.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [bitget.com](https://www.bitget.com/docs/uta/Introduction) - Base address, recorded as "live": https://api.bitget.com - Base address, recorded as "stream_live": wss://ws.bitget.com/v3/ws/public - Base address, recorded as "stream_live_private": wss://ws.bitget.com/v3/ws/private - Base address, recorded as "stream_demo": wss://wspap.bitget.com/v3/ws/public - Base address, recorded as "stream_demo_private": wss://wspap.bitget.com/v3/ws/private #### Claims - How you get a key: Log in to the Bitget website and create an API key under API Key Management. Each key set is an API key, a secret key and a passphrase you choose, with read or read and write permissions, and one UID can hold up to 50 key sets. Bitget recommends binding the key to an IP address. - Status: verified. Source: [Bitget API quick start](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Demo: Yes: demo trading with virtual funds. Switch the account to Demo mode on the website, create a Demo API key there, then send REST requests to the usual host with the header paptrading set to 1. WebSocket demo trading has its own addresses on wspap.bitget.com. - Status: verified. Source: [Bitget API quick start, Demo Trading](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Authentication: Signed requests. Every REST request carries the headers ACCESS-KEY, ACCESS-SIGN, ACCESS-TIMESTAMP and ACCESS-PASSPHRASE. The signature is the timestamp, the upper case method, the request path, the query string and the body joined together, signed with HMAC SHA256 using the secret key (or with an RSA private key) and then Base64 encoded. For REST the page gives the timestamp in milliseconds since the epoch, and its sample code computes it that way. The WebSocket login is signed in a similar way, but Bitget's page is not consistent about its timestamp unit, so this record states none for it; the login message page sets out both readings. - Status: verified. Source: [Bitget API quick start, Header and Signature](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Streaming: WebSocket, with a public channel and a private channel that needs a login message. Stated on the quick start page: at most 100 connections per IP, 300 connection requests per IP in 5 minutes, at most 1,000 channel subscriptions per connection (Bitget advises fewer than 50), 240 subscription requests an hour per connection, and up to 10 messages a second per connection. Send the string ping every 30 seconds; the server disconnects after 2 minutes without one. - Status: verified. Source: [Bitget API quick start, WebSocket](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Rate limits, as worded: The quick start page for the current API states an overall limit of 6,000 requests a minute per IP on the common domain name, with each endpoint also carrying its own limit on its own documentation page, counted separately. REST and WebSocket share one allowance, and a breach returns HTTP 429. The response header x-mbx-used-remain-limit reports what is left for the endpoint called. Bitget's legacy v1 documentation, still published, states 20 requests in 2 seconds for public market data and 10 a second for a general endpoint with no figure of its own. - Status: verified. Source: [Bitget API quick start, Rate Limit](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Status: verified. Source: [Bitget API docs (legacy v1), frequency limiting rules](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12. #### Limits - Public market data, legacy v1 API: 20 per 2 s per IP, public market data - Scope: Per IP address, public market data endpoints of the legacy v1 API - Status: verified. Source: [bitgetlimited.github.io](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12. - Note: Re-read on the legacy v1 documentation on 12 Oct 2026: 20 requests in 2 seconds. Authenticated endpoints there are set per endpoint per UID, and a general endpoint with no figure of its own is 10 a second. HTTP 429 on breach. The window is 2 seconds, which a single unit cannot state, so the figure stays as wording. The current API states its own overall limit, held in a separate record. - Overall requests a minute: 6,000 requests per minute - Scope: Per IP address, all requests to the common domain name, with REST and WebSocket sharing one allowance - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Note: Each endpoint also carries its own limit on its own documentation page, counted separately. HTTP 429 on breach. - Concurrent WebSocket connections: 100 connections - Scope: Per IP address - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Note: Also 300 connection requests per IP in 5 minutes. - WebSocket messages a second: 10 messages per second - Scope: Per WebSocket connection, counting ping, login, subscribe and unsubscribe messages - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Note: A connection that sends more is disconnected, and an IP that is disconnected repeatedly may be blocked. - WebSocket subscription requests an hour: 240 subscription requests per hour - Scope: Per WebSocket connection - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Concurrent WebSocket channel subscriptions: 1,000 channel subscriptions - Scope: Per WebSocket connection - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12. - Note: Bitget recommends fewer than 50 channels on one connection. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes #### Functions and messages 10 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - Bitget WebSocket API, the broker's own interface of Bitget: 10 messages (2 requests, 8 subscriptions), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/bitget/messages - `account` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/account - `books` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/books - `fill` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/fill - `kline` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/kline - `login` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/login - `order` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/order - `ping` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/ping - `position` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/position - `publicTrade` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/publictrade - `ticker` (message, Bitget WebSocket API): https://openbrokerapi.com/brokers/bitget/messages/ticker ### Capital.com - Page: https://openbrokerapi.com/brokers/capital-com (markdown: https://openbrokerapi.com/brokers/capital-com.md, JSON: https://openbrokerapi.com/data/brokers/capital-com.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [open-api.capital.com](https://open-api.capital.com/) - Base address, recorded as "live": https://api-capital.backend-capital.com/ - Base address, recorded as "demo": https://demo-api-capital.backend-capital.com/ - Platform APIs the record marks as offered: MetaTrader 4 (MQL4) #### Claims - How you get a key: Enable 2FA, then Settings > API integrations > Generate new key, with a custom key password. - Status: verified. Source: [Capital.com Public API](https://open-api.capital.com/), checked 2026-10-12. - Who can use it: Any Capital.com account (demo or live) with 2FA enabled. Regional limits not published. - Status: verified. Source: [Capital.com Public API](https://open-api.capital.com/), checked 2026-10-12. - Demo: Yes: separate demo base URL. - Status: verified. Source: [Capital.com Public API](https://open-api.capital.com/), checked 2026-10-12. - Authentication: POST /session with the X-CAP-API-KEY header plus login credentials returns CST and X-SECURITY-TOKEN, sent on later calls. The session expires after 10 minutes of inactivity. - Status: verified. Source: [Capital.com Public API](https://open-api.capital.com/), checked 2026-10-12. - Streaming: WebSocket wss://api-streaming-capital.backend-capital.com/connect, maximum of 40 epics per subscription; the session lasts 10 minutes and is kept alive with ping. - Status: verified. Source: [Capital.com Public API](https://open-api.capital.com/), checked 2026-10-12. - History depth: Candles: max 1,000 per request (default 10), MINUTE to WEEK. Activity history: max 1 day per from/to call. Transactions default to last 10 minutes. - Status: verified. Source: [Capital.com API reference](https://open-api.capital.com/), checked 2026-10-12. - Status: verified. Source: [Capital.com official Postman collection](https://github.com/capital-com-sv/capital-api-postman/blob/main/capital.collection.json), checked 2026-09-22. - Rate limits, as worded: Re-verified verbatim on 19 Sep 2026. 10 requests per second per user; 1 request per 0.1 seconds per user when opening positions or creating orders, which is an order limit and not a session limit; POST /session 1 request per second per API key; on demo, POST /positions and /workingorders are capped at 1000 requests per hour; API key generation 100 attempts per 24 hours. HTTP 429 when exceeded. New on 20 Sep 2026: the demo topUp endpoint is capped at 10 requests a second and 100 requests per account a day. - Status: verified. Source: [Capital.com Open API documentation](https://open-api.capital.com/), checked 2026-10-12. #### Limits - Headline limit: 10/s per user - Scope: user - Status: verified. Source: [open-api.capital.com](https://open-api.capital.com/), checked 2026-09-18. - Note: Orders and new positions: 1 per 0.1 s. POST /session: 1 a second per API key. Demo: 1000 an hour for POST /positions and /workingorders. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Yes - Platform APIs reachable: Yes - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 36 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/capital-com.json - `GET /api/v1/accounts`: https://openbrokerapi.com/brokers/capital-com/endpoints/accounts - `GET /api/v1/accounts/preferences`: https://openbrokerapi.com/brokers/capital-com/endpoints/accounts-preferences - `PUT /api/v1/accounts/preferences`: https://openbrokerapi.com/brokers/capital-com/endpoints/put-accounts-preferences - `POST /api/v1/accounts/topUp`: https://openbrokerapi.com/brokers/capital-com/endpoints/post-accounts-top-up - `GET /api/v1/clientsentiment`: https://openbrokerapi.com/brokers/capital-com/endpoints/client-sentiment-list - `GET /api/v1/clientsentiment/{marketId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/client-sentiment - `GET /api/v1/confirms/{dealReference}`: https://openbrokerapi.com/brokers/capital-com/endpoints/confirms - `GET /api/v1/history/activity`: https://openbrokerapi.com/brokers/capital-com/endpoints/history-activity - `GET /api/v1/history/transactions`: https://openbrokerapi.com/brokers/capital-com/endpoints/history-transactions - `GET /api/v1/marketnavigation`: https://openbrokerapi.com/brokers/capital-com/endpoints/marketnavigation - `GET /api/v1/marketnavigation/{nodeId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/marketnavigation-by-node - `GET /api/v1/markets`: https://openbrokerapi.com/brokers/capital-com/endpoints/markets - `GET /api/v1/markets/{epic}`: https://openbrokerapi.com/brokers/capital-com/endpoints/market - `GET /api/v1/ping`: https://openbrokerapi.com/brokers/capital-com/endpoints/ping - `GET /api/v1/positions`: https://openbrokerapi.com/brokers/capital-com/endpoints/positions - `POST /api/v1/positions`: https://openbrokerapi.com/brokers/capital-com/endpoints/post-positions - `DELETE /api/v1/positions/{dealId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/delete-position - `GET /api/v1/positions/{dealId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/position - `PUT /api/v1/positions/{dealId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/put-position - `GET /api/v1/prices/{epic}`: https://openbrokerapi.com/brokers/capital-com/endpoints/prices - `DELETE /api/v1/session`: https://openbrokerapi.com/brokers/capital-com/endpoints/delete-session - `GET /api/v1/session`: https://openbrokerapi.com/brokers/capital-com/endpoints/session - `POST /api/v1/session`: https://openbrokerapi.com/brokers/capital-com/endpoints/post-session - `PUT /api/v1/session`: https://openbrokerapi.com/brokers/capital-com/endpoints/put-session - `GET /api/v1/session/encryptionKey`: https://openbrokerapi.com/brokers/capital-com/endpoints/session-encryption-key - `GET /api/v1/time`: https://openbrokerapi.com/brokers/capital-com/endpoints/time - `GET /api/v1/watchlists`: https://openbrokerapi.com/brokers/capital-com/endpoints/watchlists - `POST /api/v1/watchlists`: https://openbrokerapi.com/brokers/capital-com/endpoints/post-watchlists - `DELETE /api/v1/watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/delete-watchlist-by-id - `GET /api/v1/watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/watchlist-by-id - `PUT /api/v1/watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/put-watchlist-by-id - `DELETE /api/v1/watchlists/{watchlistId}/{epic}`: https://openbrokerapi.com/brokers/capital-com/endpoints/delete-watchlist-epic - `GET /api/v1/workingorders`: https://openbrokerapi.com/brokers/capital-com/endpoints/working-orders - `POST /api/v1/workingorders`: https://openbrokerapi.com/brokers/capital-com/endpoints/post-working-orders - `DELETE /api/v1/workingorders/{dealId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/delete-working-order - `PUT /api/v1/workingorders/{dealId}`: https://openbrokerapi.com/brokers/capital-com/endpoints/put-working-order #### Functions and messages 7 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - Capital.com WebSocket API, the broker's own interface of Capital.com: 7 messages (2 events, 5 requests), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/capital-com/messages - `marketData.subscribe` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/marketdata-subscribe - `marketData.unsubscribe` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/marketdata-unsubscribe - `ohlc.event` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/ohlc-event - `OHLCMarketData.subscribe` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/ohlcmarketdata-subscribe - `OHLCMarketData.unsubscribe` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/ohlcmarketdata-unsubscribe - `ping` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/ping - `quote` (message, Capital.com WebSocket API): https://openbrokerapi.com/brokers/capital-com/messages/quote #### Error codes 24 recorded. Index: https://openbrokerapi.com/errors/capital-com - `error.account.limit.reached`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/account-limit-reached - `error.invalid.account`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-account - `error.invalid.accountId`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-accountid - `error.invalid.amount`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-amount - `error.invalid.details`: HTTP 401, status verified, https://openbrokerapi.com/errors/capital-com/invalid-details - `error.invalid.from`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-from - `error.invalid.leverage.value`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-leverage-value - `error.invalid.limit`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-limit - `error.invalid.resolution`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-resolution - `error.invalid.stoploss.maxvalue`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-stoploss-maxvalue - `error.invalid.stoploss.minvalue`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-stoploss-minvalue - `error.invalid.takeprofit.maxvalue`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-takeprofit-maxvalue - `error.invalid.takeprofit.minvalue`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/invalid-takeprofit-minvalue - `error.invalid.watchlist`: HTTP 404, status verified, https://openbrokerapi.com/errors/capital-com/invalid-watchlist - `error.not-found.dealId`: HTTP 404, status verified, https://openbrokerapi.com/errors/capital-com/not-found-dealid - `error.not-found.dealReference`: HTTP 404, status verified, https://openbrokerapi.com/errors/capital-com/not-found-dealreference - `error.not-found.epic`: HTTP 404, status verified, https://openbrokerapi.com/errors/capital-com/not-found-epic - `error.not-found.watchlist`: HTTP 404, status verified, https://openbrokerapi.com/errors/capital-com/not-found-watchlist - `error.not-in-future.goodTillDate`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/not-in-future-goodtilldate - `error.null.api.key`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/null-api-key - `error.null.epic`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/null-epic - `error.null.searchTerm`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/null-searchterm - `error.size.createwatchlistrequest.name`: HTTP 400, status verified, https://openbrokerapi.com/errors/capital-com/size-watchlist-name - `error.too-many.requests`: HTTP 429, status verified, https://openbrokerapi.com/errors/capital-com/too-many-requests ### CMC Markets - Page: https://openbrokerapi.com/brokers/cmc-markets (markdown: https://openbrokerapi.com/brokers/cmc-markets.md, JSON: https://openbrokerapi.com/data/brokers/cmc-markets.json) - Kind: broker, recorded as having no API of its own - Newest reading: 2026-10-12 - Official documentation: [cmcmarkets.com](https://www.cmcmarkets.com/en-gb/trading-platforms/metatrader-4) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4) #### Claims - How you get a key: Platform access only for retail clients, on the pages opened. CMC's UK platforms page offers its own web platform, its mobile app and MetaTrader 4, and the MT4 page presents Expert Advisors as the way to automate. An API appears only on CMC Connect, the institutional side, which offers market data and trade execution over the FIX protocol, either through a direct API or through a third party technology hub. No page opened on 12 Oct 2026 offers an API to retail clients, which is what the pages show and not a statement by CMC that none exists. - Status: verified. Source: [CMC Markets UK trading platforms](https://www.cmcmarkets.com/en-gb/trading-platforms), checked 2026-10-12. - Status: verified. Source: [CMC Markets UK MetaTrader 4](https://www.cmcmarkets.com/en-gb/trading-platforms/metatrader-4), checked 2026-10-12. - Status: verified. Source: [CMC Connect connectivity](https://www.cmcmarkets.com/en/connect/solutions/connectivity), checked 2026-10-12. - Demo: Platform demo only: an MT4 demo account with GBP 10,000 of virtual funds, which stays open as long as you log in to MT4 at least once every 30 days. It is a demo of the platform, not of an API. The CMC Connect page does not say whether a test FIX session is offered. - Status: verified. Source: [CMC Markets UK MetaTrader 4](https://www.cmcmarkets.com/en-gb/trading-platforms/metatrader-4), checked 2026-10-12. - Status: verified. Source: [CMC Connect connectivity](https://www.cmcmarkets.com/en/connect/solutions/connectivity), checked 2026-10-12. - Rate limits, as worded: No retail API on the pages opened. CMC Connect offers market data and execution through the FIX protocol to institutional clients, and its connectivity page states no rate limit (re-read 12 Oct 2026). A page that states no limit is not evidence that there is none. - Status: verified. Source: [CMC Connect connectivity](https://www.cmcmarkets.com/en/connect/solutions/connectivity), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Not recorded - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Not recorded ### Deriv - Page: https://openbrokerapi.com/brokers/deriv (markdown: https://openbrokerapi.com/brokers/deriv.md, JSON: https://openbrokerapi.com/data/brokers/deriv.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [developers.deriv.com](https://developers.deriv.com/docs/limits) - Base address, recorded as "rest": https://api.derivws.com #### Claims - How you get a key: Two kinds of app. With an OAuth 2.0 app the user signs in and consents at Deriv, and the app exchanges the code it gets back for an access token. With a Personal Access Token app the user generates a token in Deriv and enters it into the app. An earlier wording here (register an app_id in Manage Applications, or try the test app_id 1089) is legacy: it is not on Deriv's authentication page as read on 12 Oct 2026. - Status: verified. Source: [Deriv API: authentication](https://developers.deriv.com/docs/intro/authentication/), checked 2026-10-12. - Who can use it: A Deriv account. The app registration is self serve. - Status: unverified. No source opened. - Demo: Yes: the overview says each user gets a default demo account at signup, and there is a separate demo WebSocket endpoint. - Status: verified. Source: [Deriv API: API overview](https://developers.deriv.com/docs/intro/api-overview/), checked 2026-10-12. - Authentication: Two routes: an OAuth 2.0 app, or a Personal Access Token the user generates and pastes into the app. Either way the token is sent as a bearer token. With a Personal Access Token, REST requests also need a Deriv-App-ID header. - Status: verified. Source: [Deriv API: authentication](https://developers.deriv.com/docs/intro/authentication/), checked 2026-10-12. - Streaming: WebSocket carries trading and market data, on a public endpoint and on demo and real endpoints opened with a one time password fetched over REST. Each connection can send 10 pings a second, outside the call budgets. - Status: verified. Source: [Deriv API: API overview](https://developers.deriv.com/docs/intro/api-overview/), checked 2026-10-12. - Status: verified. Source: [Deriv API: limits](https://developers.deriv.com/docs/limits), checked 2026-10-12. - History depth: Not recorded yet: the limits page was the page opened in this rotation. - Status: unverified. No source opened. - Rate limits, as worded: Websocket, per minute and per hour: proposal, buy and sell 360 and 14,400; balance and statement 100 and 2,000; portfolio and profit_table 30 and 1,500; everything else 220 and 14,400. REST: 300 a minute and 1,000 per 10 minutes per IP, and 80 a minute per logged in user, which is the binding constraint for most retail scripts. Deriv's API overview in the text form it publishes for AI tools gives different figures: REST 60 a minute per token, and on the WebSocket 100 requests a second and 100 active subscriptions per connection, with 5 concurrent connections per user. Deriv's own pages disagree. - Sources conflict: Deriv Limits page: REST 80 a minute per logged in user, 300 a minute and 1,000 per 10 minutes per IP, WebSocket budgets per group of calls. Deriv API overview (llms/api-overview.md): REST 60 a minute per token, WebSocket 100 requests a second and 100 subscriptions per connection, 5 connections per user. - Status: conflicting. Source: [Deriv API: limits](https://developers.deriv.com/docs/limits), checked 2026-10-12. - Status: conflicting. Source: [Deriv API overview, text form for AI tools](https://developers.deriv.com/llms/api-overview.md), checked 2026-10-12. #### Limits - Headline limit: 80/min per logged in user (REST) - Scope: user, REST - Sources conflict: [developers.deriv.com](https://developers.deriv.com/llms/api-overview.md) states 60 REST requests per minute per token, checked 2026-10-12. Deriv's API overview in the text form it publishes for AI tools gives REST 60 requests a minute per token, where its Limits page gives 80 a minute per logged in user. The same overview also gives 100 WebSocket requests a second per connection, 100 active subscriptions per connection and 5 concurrent WebSocket connections per user, none of which the Limits page mentions. Deriv's own pages disagree; the conflict is labelled, not resolved. Pace against 60. - Status: conflicting. Source: [developers.deriv.com](https://developers.deriv.com/docs/limits/), checked 2026-10-12. - Note: From the Limits page: REST is also capped at 300 a minute and 1,000 per ten minutes per IP address. WebSocket budgets, each shared by the calls in its row, a minute and an hour: proposal, proposal_open_contract, buy and sell 360 and 14,400; balance and statement 100 and 2,000; portfolio and profit table 30 and 1,500; all other calls 220 and 14,400. ping sits outside these budgets at 10 a second per connection. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 5 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/deriv.json - `GET /trading/v1/options/accounts`: https://openbrokerapi.com/brokers/deriv/endpoints/accounts - `POST /trading/v1/options/accounts`: https://openbrokerapi.com/brokers/deriv/endpoints/post-accounts - `POST /trading/v1/options/accounts/{account_id}/reset-demo-balance`: https://openbrokerapi.com/brokers/deriv/endpoints/post-account-reset-demo-balance - `POST /trading/v1/options/accounts/{accountId}/otp`: https://openbrokerapi.com/brokers/deriv/endpoints/post-account-otp - `GET /v1/health`: https://openbrokerapi.com/brokers/deriv/endpoints/health #### Functions and messages 19 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - Deriv WebSocket API, the broker's own interface of Deriv: 19 messages (19 requests), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/deriv/messages - `active_symbols` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/active-symbols - `balance` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/balance - `buy` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/buy - `cancel` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/cancel - `contract_update` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/contract-update - `contracts_for` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/contracts-for - `forget` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/forget - `forget_all` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/forget-all - `ping` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/ping - `portfolio` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/portfolio - `profit_table` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/profit-table - `proposal` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/proposal - `proposal_open_contract` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/proposal-open-contract - `sell` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/sell - `statement` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/statement - `ticks` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/ticks - `ticks_history` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/ticks-history - `time` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/time - `transaction` (message, Deriv WebSocket API): https://openbrokerapi.com/brokers/deriv/messages/transaction #### Error codes 10 recorded. Index: https://openbrokerapi.com/errors/deriv - `ContractNotFound`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/contract-not-found - `Deriv-App-ID header is required for PAT tokens`: HTTP 401, status verified, https://openbrokerapi.com/errors/deriv/app-id-header-required - `InputValidationFailed`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/input-validation-failed - `InsufficientBalance`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/insufficient-balance - `InternalError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/internal-error - `InvalidToken`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/invalid-token - `NotFound`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/not-found - `RateLimit`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/rate-limit - `Unauthorized`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/deriv/unauthorized - `ValidationError`: HTTP 400, status verified, https://openbrokerapi.com/errors/deriv/validation-error ### Dukascopy - Page: https://openbrokerapi.com/brokers/dukascopy (markdown: https://openbrokerapi.com/brokers/dukascopy.md, JSON: https://openbrokerapi.com/data/brokers/dukascopy.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [dukascopy.com](https://www.dukascopy.com/swiss/english/forex/api/jforex-api/) - Base address, recorded as "jforex_demo": http://platform.dukascopy.com/demo_3/jforex_3.jnlp - Base address, recorded as "jforex_live": http://platform.dukascopy.com/live_3/jforex_3.jnlp #### Claims - How you get a key: Two routes of Dukascopy's own. The JForex API is a Java client library, shipped as the JForex SDK, that connects straight to Dukascopy's trade servers without the JForex platform running. The FIX API, on FIX 4.4, is described as for professional market participants: Dukascopy issues a TargetCompId, two SenderCompIds, a username and a password, and connections must come from IP addresses and ports agreed beforehand. The FIX page states no minimum deposit. - Status: verified. Source: [Dukascopy JForex API](https://www.dukascopy.com/swiss/english/forex/api/jforex-api/), checked 2026-10-12. - Status: verified. Source: [Dukascopy FIX API](https://www.dukascopy.com/swiss/english/forex/api/fix-api/), checked 2026-10-12. - Status: verified. Source: [Dukascopy FIX API Programming Guide, revision 8.8.1](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Demo: Partial: yes for the JForex API, where Dukascopy's wiki says every example program in the JForex SDK is written to run in demo mode and gives a separate connection address for live mode. Not stated for the FIX API: its page and its programming guide do not say whether a demo FIX session is offered. - Status: verified. Source: [Dukascopy wiki, JForex SDK LIVE mode](https://www.dukascopy.com/wiki/en/development/get-started-api/use-jforex-sdk/live-mode/), checked 2026-10-12. - Status: verified. Source: [Dukascopy wiki, JForex SDK client](https://www.dukascopy.com/wiki/en/development/get-started-api/use-jforex-sdk/sdk-client/), checked 2026-10-12. - Authentication: JForex API: the client connects with the platform's connection address, a username and a password. In live mode a connection from an IP address that is not registered also has to answer a captcha image for a PIN. FIX API: a Logon message carrying the username and password issued by Dukascopy, over an SSL encrypted TCP socket, from an agreed IP address. - Status: verified. Source: [Dukascopy wiki, JForex SDK LIVE mode](https://www.dukascopy.com/wiki/en/development/get-started-api/use-jforex-sdk/live-mode/), checked 2026-10-12. - Status: verified. Source: [Dukascopy FIX API Programming Guide, revision 8.8.1](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Streaming: JForex API: live data arrives through the client once you subscribe to instruments explicitly, and the subscription is asynchronous. FIX API: two FIX connections per client, one for the data feed and one for trading. A dropped FIX session that is not restored within 2 hours is disconnected. - Status: verified. Source: [Dukascopy wiki, JForex SDK client](https://www.dukascopy.com/wiki/en/development/get-started-api/use-jforex-sdk/sdk-client/), checked 2026-10-12. - Status: verified. Source: [Dukascopy FIX API Programming Guide, revision 8.8.1](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Rate limits, as worded: FIX API: at most 16 orders a second, at most 100 open positions, and five connection attempts a minute per server for each IP address, per the FIX API Programming Guide, revision 8.8.1, re-read 12 Oct 2026. The JForex API pages opened state no request limit, which is not evidence that there is none. - Status: verified. Source: [Dukascopy FIX API Programming Guide, revision 8.8.1](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. #### Limits - Connection attempts a minute: 5 connection attempts per minute - Scope: Per IP address, per FIX server - Status: verified. Source: [dukascopy.com](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Open positions: 100 open positions - Scope: FIX API. The guide does not say whether the count is per session or per account - Status: verified. Source: [dukascopy.com](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Orders a second: 16 orders per second - Scope: FIX API, orders only. The guide does not say whether the count is per session or per account - Status: verified. Source: [dukascopy.com](https://www.dukascopy.com/media-storage/3000474271/o/), checked 2026-10-12. - Note: Orders, not every request. Stated in the introduction of the FIX API Programming Guide, revision 8.8.1. The JForex API pages opened state no limit. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Not recorded - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### eToro - Page: https://openbrokerapi.com/brokers/etoro (markdown: https://openbrokerapi.com/brokers/etoro.md, JSON: https://openbrokerapi.com/data/brokers/etoro.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [api-portal.etoro.com](https://api-portal.etoro.com/) - Base address, recorded as "live": https://public-api.etoro.com - Base address, recorded as "demo": Same host; demo trading calls use /demo/ paths, for example POST /api/v2/trading/execution/demo/orders - Platform APIs the record marks as offered: none marked as offered #### Claims - How you get a key: Settings > Trading > API Key Management > Create New Key; choose Read or Write, optional IP whitelist and expiry. - Status: verified. Source: [eToro API portal: authentication](https://api-portal.etoro.com/core/getting-started/authentication.md), checked 2026-10-12. - Who can use it: Verified eToro account required. Regional availability not published on pages opened. - Status: verified. Source: [eToro API Portal](https://api-portal.etoro.com/), checked 2026-09-21. - Demo: Yes: the environment is bound to the key when it is created, Demo or Real, and each key supports one environment only. - Status: verified. Source: [eToro Builders FAQ](https://builders.etoro.com/faq), checked 2026-09-21. - Authentication: Headers x-api-key, x-user-key and x-request-id on every request, or an OAuth 2.0 bearer token instead of the key headers. eToro now states the exclusivity itself rather than leaving it to be inferred: a request presenting both is rejected. - Status: verified. Source: [eToro API portal: authentication](https://api-portal.etoro.com/core/getting-started/authentication.md), checked 2026-10-12. - Status: verified. Source: [SSO and OAuth, eToro API portal](https://api-portal.etoro.com/core/getting-started/sso-oauth.md), checked 2026-10-12. - Streaming: WebSocket at wss://ws.etoro.com/ws, described by an AsyncAPI 3.0 document that eToro publishes. Instrument topics need no authentication; the private topic needs an Authenticate message first, which carries the user key and API key inside its data object over the open socket, never as a header. A Subscribe message lists topics such as instrument:\ or private, with an optional snapshot flag. The AsyncAPI document, the Topics page and the example code agree on that shape. The server sends a single binary frame from time to time as a heartbeat. No connection or subscription limit is given and no reconnection or replay behaviour is described. - Status: verified. Source: [eToro WebSocket API, AsyncAPI document](https://api-portal.etoro.com/api-reference/asyncapi.json), checked 2026-10-12. - Status: verified. Source: [eToro API portal: WebSocket authentication](https://api-portal.etoro.com/core/websocket/authentication.md), checked 2026-10-12. - Status: verified. Source: [eToro API portal: WebSocket topics](https://api-portal.etoro.com/core/websocket/topics.md), checked 2026-10-12. - History depth: Candles: max 1,000 per request, one minute to one week. Trading history: lookback under 1 year per request; split longer ranges. - Status: verified. Source: [eToro API: Get instrument candle history](https://api-portal.etoro.com/api-reference/market-data/get-instrument-candle-history.md), checked 2026-10-12. - Rate limits, as worded: 60 requests a minute for most GET calls and 20 a minute for trading and writes, tracked per user key over a one minute rolling window, with 429 on excess. The rate limits page read on 20 Sep 2026 states no response headers at all, so the 120 per 60 seconds market data quota and the RateLimit response headers carried from earlier readings are now unverified. - Status: verified. Source: [eToro API portal: rate limits](https://api-portal.etoro.com/core/getting-started/rate-limits.md), checked 2026-10-12. #### Limits - Headline limit: 60/min reads per key - Scope: user - Status: verified. Source: [api-portal.etoro.com](https://api-portal.etoro.com/core/getting-started/rate-limits.md), checked 2026-09-20. - Note: Most GET calls. Trading and writes: 20 a minute. Tracked per user key over a one minute rolling window, 429 on excess. The page states no response headers, and the 120 per 60 seconds market data quota carried from earlier readings is now unverified. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: No - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 51 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/etoro.json - `GET /api/v1/balances`: https://openbrokerapi.com/brokers/etoro/endpoints/balances - `GET /api/v1/market-data/exchanges`: https://openbrokerapi.com/brokers/etoro/endpoints/exchanges - `GET /api/v1/market-data/instrument-types`: https://openbrokerapi.com/brokers/etoro/endpoints/instrument-types - `GET /api/v1/market-data/instruments`: https://openbrokerapi.com/brokers/etoro/endpoints/instrument-display-data - `GET /api/v1/market-data/instruments/{instrumentId}/history/candles/{direction}/{interval}/{candlesCount}`: https://openbrokerapi.com/brokers/etoro/endpoints/candles - `GET /api/v1/market-data/instruments/history/closing-price`: https://openbrokerapi.com/brokers/etoro/endpoints/closing-prices - `GET /api/v1/market-data/instruments/rates`: https://openbrokerapi.com/brokers/etoro/endpoints/instrument-rates - `GET /api/v1/market-data/search`: https://openbrokerapi.com/brokers/etoro/endpoints/search-instruments - `GET /api/v1/market-data/stocks-industries`: https://openbrokerapi.com/brokers/etoro/endpoints/stocks-industries - `GET /api/v1/me`: https://openbrokerapi.com/brokers/etoro/endpoints/me - `DELETE /api/v1/trading/execution/demo/market-close-orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-cancel-close-order - `POST /api/v1/trading/execution/demo/market-close-orders/positions/{positionId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-close-position - `DELETE /api/v1/trading/execution/market-close-orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-cancel-close-order - `POST /api/v1/trading/execution/market-close-orders/positions/{positionId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-close-position - `GET /api/v1/trading/info/aggregate-portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/real-aggregate-portfolio - `POST /api/v1/trading/info/aggregate-portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/real-aggregate-portfolio-filtered - `GET /api/v1/trading/info/demo/aggregate-portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-aggregate-portfolio - `POST /api/v1/trading/info/demo/aggregate-portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-aggregate-portfolio-filtered - `GET /api/v1/trading/info/demo/close-orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-close-order-info - `GET /api/v1/trading/info/demo/pnl`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-pnl - `GET /api/v1/trading/info/demo/portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-portfolio - `GET /api/v1/trading/info/portfolio`: https://openbrokerapi.com/brokers/etoro/endpoints/real-portfolio - `GET /api/v1/trading/info/real/close-orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-close-order-info - `GET /api/v1/trading/info/real/pnl`: https://openbrokerapi.com/brokers/etoro/endpoints/real-pnl - `GET /api/v1/trading/info/trade/demo/history`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-trade-history - `GET /api/v1/trading/info/trade/history`: https://openbrokerapi.com/brokers/etoro/endpoints/real-trade-history - `GET /api/v1/user-info/people`: https://openbrokerapi.com/brokers/etoro/endpoints/user-info-people - `GET /api/v1/watchlists`: https://openbrokerapi.com/brokers/etoro/endpoints/get-watchlists - `POST /api/v1/watchlists`: https://openbrokerapi.com/brokers/etoro/endpoints/create-watchlist - `POST /api/v1/watchlists/{watchlistId}/items`: https://openbrokerapi.com/brokers/etoro/endpoints/add-watchlist-items - `GET /api/v2/market-data/instruments`: https://openbrokerapi.com/brokers/etoro/endpoints/instruments-v2 - `GET /api/v2/market-data/instruments/search`: https://openbrokerapi.com/brokers/etoro/endpoints/instruments-search-v2 - `GET /api/v2/market-data/rates`: https://openbrokerapi.com/brokers/etoro/endpoints/rates-v2 - `PATCH /api/v2/trading/demo/positions/{positionId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-edit-sl-tp - `POST /api/v2/trading/execution/demo/orders`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-create-order - `DELETE /api/v2/trading/execution/demo/orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-cancel-order - `POST /api/v2/trading/execution/orders`: https://openbrokerapi.com/brokers/etoro/endpoints/real-create-order - `DELETE /api/v2/trading/execution/orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-cancel-order - `POST /api/v2/trading/info/costs`: https://openbrokerapi.com/brokers/etoro/endpoints/real-costs - `POST /api/v2/trading/info/demo/costs`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-costs - `POST /api/v2/trading/info/demo/eligibility`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-eligibility - `GET /api/v2/trading/info/demo/instrument-breakdown`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-instrument-breakdown - `GET /api/v2/trading/info/demo/orders:lookup`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-order-lookup - `POST /api/v2/trading/info/eligibility`: https://openbrokerapi.com/brokers/etoro/endpoints/real-eligibility - `GET /api/v2/trading/info/instrument-breakdown`: https://openbrokerapi.com/brokers/etoro/endpoints/real-instrument-breakdown - `GET /api/v2/trading/info/orders:lookup`: https://openbrokerapi.com/brokers/etoro/endpoints/real-order-lookup - `PATCH /api/v2/trading/positions/{positionId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-edit-sl-tp - `POST /api/v3/trading/execution/demo/orders`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-submit-order-v3 - `DELETE /api/v3/trading/execution/demo/orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/demo-cancel-order-v3 - `POST /api/v3/trading/execution/orders`: https://openbrokerapi.com/brokers/etoro/endpoints/real-submit-order-v3 - `DELETE /api/v3/trading/execution/orders/{orderId}`: https://openbrokerapi.com/brokers/etoro/endpoints/real-cancel-order-v3 #### Functions and messages 6 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - eToro WebSocket API, the broker's own interface of eToro: 6 messages (3 requests, 3 subscriptions), each is sent as JSON over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/etoro/messages - `Authenticate` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/authenticate - `candle:{instrumentId}` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/instrument-candles - `instrument:{instrumentId}` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/instrument-rates - `private` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/private - `Subscribe` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/subscribe - `Unsubscribe` (message, eToro WebSocket API): https://openbrokerapi.com/brokers/etoro/messages/unsubscribe #### Error codes 16 recorded. Index: https://openbrokerapi.com/errors/etoro - `ApiKeyRequired`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/api-key-required - `DataRequired`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/data-required - `Forbidden`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/ws-forbidden - `HTTP 400`: HTTP 400, status verified, https://openbrokerapi.com/errors/etoro/bad-request - `HTTP 401`: HTTP 401, status verified, https://openbrokerapi.com/errors/etoro/unauthorised - `HTTP 403`: HTTP 403, status verified, https://openbrokerapi.com/errors/etoro/forbidden - `HTTP 404`: HTTP 404, status verified, https://openbrokerapi.com/errors/etoro/not-found - `HTTP 409`: HTTP 409, status verified, https://openbrokerapi.com/errors/etoro/position-closed - `HTTP 500`: HTTP 500, status verified, https://openbrokerapi.com/errors/etoro/server-error - `InvalidKey`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/invalid-key - `Rate limit exceeded`: HTTP 429, status verified, https://openbrokerapi.com/errors/etoro/rate-limit-exceeded - `SessionAlreadyAuthenticated`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/session-already-authenticated - `TooManyRequests`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/too-many-requests - `Unauthorized`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/ws-unauthorized - `UnhandledException`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/unhandled-exception - `UserKeyRequired`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/etoro/user-key-required ### Exness - Page: https://openbrokerapi.com/brokers/exness (markdown: https://openbrokerapi.com/brokers/exness.md, JSON: https://openbrokerapi.com/data/brokers/exness.json) - Kind: broker with an API of its own, not verified - Newest reading: 2026-10-05 - Official documentation: [get.exness.help](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API) #### Claims - How you get a key: Unverified. Exness' help centre answered 403 Forbidden to automated reading on 12 Oct 2026, so the Exness API help article could not be re-read. Carried over from the prototype and not confirmed today: in the Personal Area, complete full verification and make a minimum deposit, then generate an API key. - Status: unverified. Source: [Exness API help article (did not open on 12 Oct 2026)](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - Who can use it: Exness trading accounts only. MT4 and MT5 accounts cannot connect. The help page records a region scope, kept below with its source. - Status: verified. Source: [Exness help centre: Exness API](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - Demo: Unverified. When the Exness API help article was read on 23 Sep 2026 it did not say whether a demo account can use the API. The article answered 403 Forbidden on 12 Oct 2026, so it could not be read again. - Status: unverified. Source: [Exness API help article (did not open on 12 Oct 2026)](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - Authentication: An API Key plus a Secret Key. - Status: verified. Source: [Exness help centre: Exness API](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - Streaming: Websocket, throttled to roughly 100 to 500 ms. - Status: verified. Source: [Exness help centre: Exness API](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - History depth: Unverified. Not recorded: the Exness API help article was not read for price history depth in September, and it answered 403 Forbidden on 12 Oct 2026. - Status: unverified. Source: [Exness API help article (did not open on 12 Oct 2026)](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. - Rate limits, as worded: Not published. Exness tells clients to read them at runtime from getRateLimits rather than hardcoding any figure. - Status: verified. Source: [Exness help centre: Exness API](https://get.exness.help/hc/en-us/articles/27866287512476-Exness-API), checked 2026-09-23. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Not recorded - Streaming: Yes - Authentication described: Yes - Published rate limits: Partial - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Not recorded ### FOREX.com / StoneX Trading (City Index) - Page: https://openbrokerapi.com/brokers/forex-com-city-index (markdown: https://openbrokerapi.com/brokers/forex-com-city-index.md, JSON: https://openbrokerapi.com/data/brokers/forex-com-city-index.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [docs.labs.gaincapital.com](https://docs.labs.gaincapital.com/) - Base address, recorded as "live": https://ciapi.cityindex.com/tradingapi/ - Base address, recorded as "stream_live": https://push.cityindex.com/ - Base address, recorded as "preprod": https://ciapipreprod.cityindextest9.co.uk/TradingApi - Base address, recorded as "stream_preprod": https://pushpreprod.cityindextest9.co.uk/ - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 4 (MQL4) #### Claims - How you get a key: Open and fund a standard account, then request API access from support; an AppKey is emailed if accepted. - Status: verified. Source: [FOREX.com API Trading](https://www.forex.com/en/trading-tools/api-trading/), checked 2026-09-21. - Who can use it: By application: you must describe your expertise, language, goal and expected volume, and sign API terms. - Status: verified. Source: [StoneX API Getting Started](https://docs.labs.gaincapital.com/Content/Getting%20Started/Getting%20Started.htm), checked 2026-09-21. - Demo: Partial: the StoneX API documentation describes two environments, Live and Pre-Production, each with its own API and streaming address. It says most users work on Live and that only some users, depending on user type and circumstances, are given Pre-Production access. An account in one environment is not recognised in the other. The documentation does not say that a retail demo account can use the API. - Status: verified. Source: [StoneX API documentation, Getting Started](https://docs.labs.gaincapital.com/Content/Getting%20Started/Getting%20Started.htm), checked 2026-10-12. - Authentication: A session token. POST your user name, password and the AppKey you were issued to /v2/Session, then send the returned session token and your user name with every request as the request headers Session and UserName. Passing them in the query string is marked obsolete. The documentation says a token is valid for at least 20 minutes, and an expired one is signalled by HTTP 401. Subscribing to the streams uses the user name and the session token as its credentials. - Status: verified. Source: [StoneX API documentation, API basics](https://docs.labs.gaincapital.com/Content/Getting%20Started/CIAPI%20Basics.htm), checked 2026-10-12. - Status: verified. Source: [StoneX API documentation, LogOn v2](https://docs.labs.gaincapital.com/Content/HTTP%20Services/LogOn%20v2.htm), checked 2026-10-12. - Streaming: Lightstreamer, a third party streaming protocol, over long lived HTTP connections and not WebSocket as documented. Streams cover prices, news headlines, client account margin, orders and quotes, grouped into adapters. Each adapter needs one HTTP connection plus one control connection. The documentation says the servers still run Lightstreamer 7.4.1 and that clients should use that version of the Lightstreamer SDK. - Status: verified. Source: [StoneX API documentation, architecture](https://docs.labs.gaincapital.com/Content/Getting%20Started/CIAPI%20Arky.htm), checked 2026-10-12. - History depth: Price bars: max 4,000 per request (default 1,000). Trade history: max 200 results per call, filter by from date. - Status: verified. Source: [GAIN Capital API docs: GetPriceBarsBeforeDate](https://docs.labs.gaincapital.com/Content/HTTP%20Services/GetPriceBarsBeforeDate.htm), checked 2026-09-22. - Rate limits, as worded: The StoneX API documentation says the servers throttle a client application that sends more than 500 requests in a 5 second window. A throttled request gets HTTP 429, and the client must then wait 1 second before sending more. It names requests for market information and for price history as the usual causes. FOREX.com's own API page answered 403 Forbidden on 12 Oct 2026 and was not re-read. - Status: verified. Source: [StoneX API documentation, API basics, throttling](https://docs.labs.gaincapital.com/Content/Getting%20Started/CIAPI%20Basics.htm), checked 2026-10-12. #### Limits - Request throttle: 500 requests per 5 s, HTTP 429 above it - Scope: Requests from one client application. The page does not say whether the count is per session, per AppKey or per IP address - Status: verified. Source: [docs.labs.gaincapital.com](https://docs.labs.gaincapital.com/Content/Getting%20Started/CIAPI%20Basics.htm), checked 2026-10-12. - Note: After a 429 the client must wait 1 second before sending more requests. The window is 5 seconds, which a single unit cannot state, so the figure stays as wording. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Not recorded - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### FXCM - Page: https://openbrokerapi.com/brokers/fxcm (markdown: https://openbrokerapi.com/brokers/fxcm.md, JSON: https://openbrokerapi.com/data/brokers/fxcm.json) - Kind: broker with an API of its own - Newest reading: 2026-10-09 - Official documentation: [fxcm.com](https://www.fxcm.com/markets/algorithmic-trading/api-trading/) - Base address, recorded as "live": https://api.fxcm.com (legacy REST, retired) - Base address, recorded as "demo": https://api-demo.fxcm.com (legacy REST, retired) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4) #### Claims - How you get a key: Free SDKs from FXCM GitHub; sign the EULA and apply for a demo account. Support at api@fxcm.com. - Status: verified. Source: [GitHub fxcm/ForexConnectAPI](https://github.com/fxcm/ForexConnectAPI), checked 2026-09-21. - Who can use it: Trading Station account. FIX needs a minimum of 5,000 pounds or dollars. UK page dated 25 Jun 2025. - Status: verified. Source: [FXCM API Trading](https://www.fxcm.com/markets/algorithmic-trading/api-trading/), checked 2026-09-20. - Demo: Yes: ForexConnect connects to demo and real Trading Station accounts. - Status: verified. Source: [GitHub fxcm/ForexConnectAPI](https://github.com/fxcm/ForexConnectAPI), checked 2026-09-21. - Authentication: FIX, the Java API and ForexConnect only. No REST API is listed on FXCM's current API pages, so the legacy REST token flow this site described is recorded as no longer listed rather than retired. - Status: verified. Source: [FXCM Socket REST API spec](https://fxcm-rest.readthedocs.io/en/latest/socketrestapispecs.html), checked 2026-09-21. - Streaming: ForexConnect pushes live prices; the retired legacy REST API streamed over Socket.IO. - Status: verified. Source: [FXCM Socket REST API spec](https://fxcm-rest.readthedocs.io/en/latest/socketrestapispecs.html), checked 2026-09-21. - History depth: Candles: up to 10,000 per request with optional from and to. Depth of history and a trade history endpoint not documented. - Status: verified. Source: [FXCM Socket REST API specs](https://fxcm-rest.readthedocs.io/en/latest/socketrestapispecs.html), checked 2026-09-22. - Rate limits, as worded: Not published. No REST API is listed, so there is nothing to publish limits for. - Status: verified. Source: [FXCM Socket REST API spec](https://fxcm-rest.readthedocs.io/en/latest/socketrestapispecs.html), checked 2026-09-21. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Not recorded - Published rate limits: No - Official SDK or library: Yes - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### FxPro - Page: https://openbrokerapi.com/brokers/fxpro (markdown: https://openbrokerapi.com/brokers/fxpro.md, JSON: https://openbrokerapi.com/data/brokers/fxpro.json) - Kind: broker, recorded as having no API of its own, not verified - Newest reading: 2026-10-05 - Official documentation: [fxpro.com](https://www.fxpro.com/trading-platforms/comparison) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5), cTrader Open API #### Claims - How you get a key: Unverified. FxPro's site answered 403 Forbidden to automated reading on 12 Oct 2026 (the platform comparison page and the prime brokerage page), so no FxPro page was opened and nothing could be confirmed either way. Carried over from the prototype and not confirmed: no API of FxPro's own for retail clients, with automation through the MetaTrader and cTrader platforms it offers. - Status: unverified. Source: [FxPro platform comparison (did not open on 12 Oct 2026)](https://www.fxpro.com/trading-platforms/comparison), checked 2026-09-21. - Demo: Unverified. The platform comparison page carried an Open Demo Account button when read on 21 Sep 2026, which is a platform demo and says nothing about an API. The page answered 403 Forbidden on 12 Oct 2026, so it could not be read again. - Status: unverified. Source: [FxPro platform comparison (did not open on 12 Oct 2026)](https://www.fxpro.com/trading-platforms/comparison), checked 2026-09-21. - Rate limits, as worded: No retail API. FxPro Prime offers FIX via PrimeXM XCore, MT5 bridge via Ultency and cTrader FIX via cBroker, for institutions; no limit stated (read 22 Sep 2026). - Status: verified. Source: [FxPro Prime brokerage](https://www.fxpro.com/primebrokerage), checked 2026-09-22. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Not recorded - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Not recorded ### IG - Page: https://openbrokerapi.com/brokers/ig (markdown: https://openbrokerapi.com/brokers/ig.md, JSON: https://openbrokerapi.com/data/brokers/ig.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [labs.ig.com](https://labs.ig.com/) - Base address, recorded as "live": https://api.ig.com/gateway/deal - Base address, recorded as "demo": https://demo-api.ig.com/gateway/deal - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: API keys are only issued to existing live account holders: generate one in My IG > Settings > API keys. - Status: verified. Source: [How to use IG API](https://www.ig.com/uk/trading-platforms/trading-apis/how-to-use-ig-api), checked 2026-10-12. - Who can use it: Spread bet and CFD accounts only. Share dealing, ISA and SIPP are not supported (error stockbroking-not-supported). - Status: verified. Source: [trading-ig FAQ (community source)](https://trading-ig.readthedocs.io/en/latest/faq.html), checked 2026-10-12. - Demo: Partial: demo API works, but no key from a standalone demo account unless it is linked to a live account. - Status: verified. Source: [How to use IG API](https://www.ig.com/uk/trading-platforms/trading-apis/how-to-use-ig-api), checked 2026-10-12. - Status: verified. Source: [IG Labs FAQ: the demo and live base addresses, and the demo key rule](https://labs.ig.com/faq.html), checked 2026-10-12. - Status: verified. Source: [IG REST trading API guide: examples on the demo host](https://labs.ig.com/rest-trading-api-guide.html), checked 2026-10-12. - Authentication: API key plus username and password returns CST and X-SECURITY-TOKEN, valid 12 hours on a rolling basis with each call resetting the clock on the IG Labs FAQ, while IG's REST trading API guide says 6 hours at first, extended up to a maximum of 72 hours: a disagreement between two IG pages that the blocked reference page could not settle on 23 Sep 2026. The v3 OAuth access token lasts as long as the login response says, with a refresh token that expires later. All tokens are invalidated during weekend maintenance. - Sources conflict: IG Labs FAQ: 12 hours between calls, reset by each call. IG Labs REST trading API guide: 6 hours at first, extended up to 72 hours while in use. - Status: conflicting. Source: [IG Labs REST trading API guide](https://labs.ig.com/rest-trading-api-guide.html), checked 2026-10-12. - Status: conflicting. Source: [IG Labs FAQ](https://labs.ig.com/faq.html), checked 2026-10-12. - Streaming: Streaming runs on Lightstreamer: IG's Streaming API Guide starts by sending you to the Lightstreamer client library, and the server address to connect to comes back from the /session call. By default a connection holds up to 40 simultaneous subscriptions. The guide asks you to contact IG to raise that quota and the FAQ says to manage it by unsubscribing and subscribing as needed; both warn that opening extra connections to get past it may cost you the API key or your API permissions. The streaming API does not take OAuth tokens, only the CST and X-SECURITY-TOKEN pair. - Status: verified. Source: [IG Labs Streaming API Guide](https://labs.ig.com/streaming-api-guide.html), checked 2026-10-12. - Status: verified. Source: [IG Labs FAQ](https://labs.ig.com/faq.html), checked 2026-10-12. - History depth: Up to 20 years of price history depending on resolution; 10,000 historical data points per week. Transactions and activity history are paged. - Status: verified. Source: [IG: How to use IG API](https://www.ig.com/uk/trading-platforms/trading-apis/how-to-use-ig-api), checked 2026-10-12. - Status: verified. Source: [IG Labs FAQ](https://labs.ig.com/faq.html), checked 2026-10-12. #### Limits - Historical price data points a week: 10,000 data points per week - Scope: Per account, price history endpoints only - Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12. - Non trading requests a minute: 30 requests per minute - Scope: Per account, non trading calls only - Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12. - Non trading requests a minute: 60 requests per minute - Scope: Per application, that is per API key, non trading calls only - Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12. - Concurrent streaming subscriptions: 40 subscriptions - Scope: Per streaming connection - Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12. - Corroborated by [labs.ig.com/streaming-api-guide.html](https://labs.ig.com/streaming-api-guide.html) - Trading requests a minute: 100 requests per minute - Scope: Per account, trading calls only - Sources conflict: [ig.com](https://www.ig.com/en/trading-platforms/trading-apis/how-to-use-ig-api) states around 40 trade requests per minute, checked 2026-10-05. IG's own pages disagree. The conflict is labelled, not resolved. Pace against 40. - Status: conflicting. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Yes - Platform APIs reachable: Yes - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 49 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/ig.json - `GET /accounts`: https://openbrokerapi.com/brokers/ig/endpoints/accounts - `GET /accounts/preferences`: https://openbrokerapi.com/brokers/ig/endpoints/accounts-preferences - `PUT /accounts/preferences`: https://openbrokerapi.com/brokers/ig/endpoints/put-accounts-preferences - `GET /categories`: https://openbrokerapi.com/brokers/ig/endpoints/categories - `GET /categories/{categoryId}/instruments`: https://openbrokerapi.com/brokers/ig/endpoints/category-instruments - `GET /client-sentiment`: https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment - `GET /client-sentiment/{marketId}`: https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment-by-market-id - `GET /client-sentiment/related/{marketId}`: https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment-related - `GET /confirms/{dealReference}`: https://openbrokerapi.com/brokers/ig/endpoints/confirms-by-deal-reference - `GET /history/activity`: https://openbrokerapi.com/brokers/ig/endpoints/history-activity - `GET /history/activity/{fromDate}/{toDate}`: https://openbrokerapi.com/brokers/ig/endpoints/history-activity-by-dates - `GET /history/activity/{lastPeriod}`: https://openbrokerapi.com/brokers/ig/endpoints/history-activity-by-period - `GET /history/transactions`: https://openbrokerapi.com/brokers/ig/endpoints/history-transactions - `GET /history/transactions/{transactionType}/{fromDate}/{toDate}`: https://openbrokerapi.com/brokers/ig/endpoints/history-transactions-by-dates - `GET /history/transactions/{transactionType}/{lastPeriod}`: https://openbrokerapi.com/brokers/ig/endpoints/history-transactions-by-period - `POST /indicativecostsandcharges/close`: https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-close - `GET /indicativecostsandcharges/durablemedium/{indicativeQuoteReference}`: https://openbrokerapi.com/brokers/ig/endpoints/indicative-costs-durable-medium - `POST /indicativecostsandcharges/edit`: https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-edit - `GET /indicativecostsandcharges/history/from/{from}/to/{to}`: https://openbrokerapi.com/brokers/ig/endpoints/indicative-costs-history - `POST /indicativecostsandcharges/open`: https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-open - `GET /markets`: https://openbrokerapi.com/brokers/ig/endpoints/markets - `GET /markets/{epic}`: https://openbrokerapi.com/brokers/ig/endpoints/markets-by-epic - `GET /operations/application`: https://openbrokerapi.com/brokers/ig/endpoints/operations-application - `PUT /operations/application`: https://openbrokerapi.com/brokers/ig/endpoints/put-operations-application - `PUT /operations/application/disable`: https://openbrokerapi.com/brokers/ig/endpoints/put-operations-application-disable - `GET /positions`: https://openbrokerapi.com/brokers/ig/endpoints/positions - `GET /positions/{dealId}`: https://openbrokerapi.com/brokers/ig/endpoints/positions-by-deal-id - `DELETE /positions/otc`: https://openbrokerapi.com/brokers/ig/endpoints/delete-positions-otc - `POST /positions/otc`: https://openbrokerapi.com/brokers/ig/endpoints/post-positions-otc - `PUT /positions/otc/{dealId}`: https://openbrokerapi.com/brokers/ig/endpoints/put-positions-otc-by-deal-id - `GET /prices/{epic}`: https://openbrokerapi.com/brokers/ig/endpoints/prices-by-epic - `GET /prices/{epic}/{resolution}/{numPoints}`: https://openbrokerapi.com/brokers/ig/endpoints/prices-by-num-points - `GET /prices/{epic}/{resolution}/{startDate}/{endDate}`: https://openbrokerapi.com/brokers/ig/endpoints/prices-by-date-range - `DELETE /session`: https://openbrokerapi.com/brokers/ig/endpoints/delete-session - `GET /session`: https://openbrokerapi.com/brokers/ig/endpoints/session - `POST /session`: https://openbrokerapi.com/brokers/ig/endpoints/post-session - `PUT /session`: https://openbrokerapi.com/brokers/ig/endpoints/put-session - `GET /session/encryptionKey`: https://openbrokerapi.com/brokers/ig/endpoints/session-encryption-key - `POST /session/refresh-token`: https://openbrokerapi.com/brokers/ig/endpoints/post-session-refresh-token - `GET /watchlists`: https://openbrokerapi.com/brokers/ig/endpoints/watchlists - `POST /watchlists`: https://openbrokerapi.com/brokers/ig/endpoints/post-watchlists - `DELETE /watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/ig/endpoints/delete-watchlist-by-id - `GET /watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/ig/endpoints/watchlist-by-id - `PUT /watchlists/{watchlistId}`: https://openbrokerapi.com/brokers/ig/endpoints/put-watchlist-by-id - `DELETE /watchlists/{watchlistId}/{epic}`: https://openbrokerapi.com/brokers/ig/endpoints/delete-watchlist-epic - `GET /working-orders`: https://openbrokerapi.com/brokers/ig/endpoints/workingorders - `POST /working-orders/otc`: https://openbrokerapi.com/brokers/ig/endpoints/post-workingorders-otc - `DELETE /working-orders/otc/{dealId}`: https://openbrokerapi.com/brokers/ig/endpoints/delete-workingorders-otc-by-deal-id - `PUT /working-orders/otc/{dealId}`: https://openbrokerapi.com/brokers/ig/endpoints/put-working-orders-otc-by-deal-id #### Functions and messages 5 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - IG Streaming API, the broker's own interface of IG: 5 messages (5 subscriptions), each travels over a Lightstreamer connection that stays open, which a Lightstreamer client library manages; the records name Lightstreamer as the transport. Index: https://openbrokerapi.com/brokers/ig/messages - `ACCOUNT:{account identifier}` (message, IG Streaming API): https://openbrokerapi.com/brokers/ig/messages/account - `CHART:{epic}:{scale}` (message, IG Streaming API): https://openbrokerapi.com/brokers/ig/messages/chart-candle - `CHART:{epic}:TICK` (message, IG Streaming API): https://openbrokerapi.com/brokers/ig/messages/chart-tick - `PRICE:{account identifier}:{epic}` (message, IG Streaming API): https://openbrokerapi.com/brokers/ig/messages/price - `TRADE:{account identifier}` (message, IG Streaming API): https://openbrokerapi.com/brokers/ig/messages/trade #### Error codes 132 recorded. Index: https://openbrokerapi.com/errors/ig - `ACCOUNT_NOT_ENABLED_TO_TRADING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/account-not-enabled-to-trading - `ATTACHED_ORDER_LEVEL_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/attached-order-level-error - `ATTACHED_ORDER_TRAILING_STOP_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/attached-order-trailing-stop-error - `authentication.failure.not-a-client-account`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/not-a-client-account - `CANNOT_CHANGE_STOP_TYPE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/cannot-change-stop-type - `CANNOT_REMOVE_STOP`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/cannot-remove-stop - `CLOSING_ONLY_TRADES_ACCEPTED_ON_THIS_MARKET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/closing-only-trades-on-this-market - `CLOSINGS_ONLY_ACCOUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/closings-only-account - `CONFLICTING_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/conflicting-order - `CONTACT_SUPPORT_INSTRUMENT_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/contact-support-instrument-error - `CR_SPACING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/cr-spacing - `DUPLICATE_ORDER_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/duplicate-order-error - `endpoint.unavailable.for.api-key`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/endpoint-unavailable-for-api-key - `error.confirms.deal-not-found`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/confirms-deal-not-found - `error.invalid.daterange`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/invalid-daterange - `error.invalid.watchlist`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/invalid-watchlist - `error.malformed.date`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/malformed-date - `error.position.notfound`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/position-notfound - `error.positions.generic`: HTTP 500, status verified, https://openbrokerapi.com/errors/ig/positions-generic - `error.price-history.io-error`: HTTP not recorded, status unverified, https://openbrokerapi.com/errors/ig/price-history-io-error - `error.public-api.epic-not-found`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/epic-not-found - `error.public-api.exceeded-account-allowance`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/exceeded-account-allowance - `error.public-api.exceeded-account-historical-data-allowance`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/exceeded-account-historical-data-allowance - `error.public-api.exceeded-account-trading-allowance`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/exceeded-account-trading-allowance - `error.public-api.exceeded-api-key-allowance`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/exceeded-api-key-allowance - `error.public-api.failure.encryption.required`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/encryption-required - `error.public-api.failure.kyc.required`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/kyc-required - `error.public-api.failure.missing.credentials`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/missing-credentials - `error.public-api.failure.pending.agreements.required`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/pending-agreements-required - `error.public-api.failure.preferred.account.disabled`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/preferred-account-disabled - `error.public-api.failure.preferred.account.not.set`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/preferred-account-not-set - `error.public-api.failure.product-code-not-allowed`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/product-code-not-allowed - `error.public-api.failure.stockbroking-not-supported`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/stockbroking-not-supported - `error.public-api.too-many-epics`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/too-many-epics - `error.request.invalid.date-range`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/request-invalid-date-range - `error.request.invalid.page-size`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/request-invalid-page-size - `error.security.account-access-denied`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-access-denied - `error.security.account-migrated`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-migrated - `error.security.account-not-yet-activated`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-not-yet-activated - `error.security.account-suspended`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-suspended - `error.security.account-token-invalid`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-token-invalid - `error.security.account-token-missing`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/account-token-missing - `error.security.all-accounts-pending`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/all-accounts-pending - `error.security.all-accounts-suspended`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/all-accounts-suspended - `error.security.api-key-disabled`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/api-key-disabled - `error.security.api-key-invalid`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/api-key-invalid - `error.security.api-key-missing`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/api-key-missing - `error.security.api-key-restricted`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/api-key-restricted - `error.security.api-key-revoked`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/api-key-revoked - `error.security.authentication.timeout`: HTTP 504, status verified, https://openbrokerapi.com/errors/ig/authentication-timeout - `error.security.client-suspended`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/client-suspended - `error.security.client-token-invalid`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/client-token-invalid - `error.security.client-token-missing`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/client-token-missing - `error.security.generic`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/security-generic - `error.security.get.session.timeout`: HTTP 500 or 504, status verified, https://openbrokerapi.com/errors/ig/get-session-timeout - `error.security.invalid-application`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/invalid-application - `error.security.invalid-details`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/invalid-details - `error.security.invalid-website`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/invalid-website - `error.security.oauth-token-invalid`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/oauth-token-invalid - `error.security.too-many-failed-attempts`: HTTP 401, status verified, https://openbrokerapi.com/errors/ig/too-many-failed-attempts - `error.service.watchlists.add-instrument.invalid-epic`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/watchlists-add-invalid-epic - `error.switch.accountId-must-be-different`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/switch-accountid-must-be-different - `error.switch.cannot-set-default-account`: HTTP 500, status verified, https://openbrokerapi.com/errors/ig/switch-cannot-set-default-account - `error.switch.invalid-accountId`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/switch-invalid-accountid - `error.trading.otc.instrument-not-found`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/otc-instrument-not-found - `error.trading.otc.market-orders.not-supported`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/otc-market-orders-not-supported - `error.unsupported.epic`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/unsupported-epic - `error.watchlists.management.cannot-delete-watchlist`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/watchlists-cannot-delete - `error.watchlists.management.duplicate-name`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/watchlists-duplicate-name - `error.watchlists.management.error`: HTTP 400 or 500, status verified, https://openbrokerapi.com/errors/ig/watchlists-management-error - `error.watchlists.management.watchlist-not-found`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/watchlists-watchlist-not-found - `EXCHANGE_MANUAL_OVERRIDE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/exchange-manual-override - `EXPIRY_LESS_THAN_SPRINT_MARKET_MIN_EXPIRY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/expiry-less-than-sprint-min-expiry - `FINANCE_REPEAT_DEALING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/finance-repeat-dealing - `FORCE_OPEN_ON_SAME_MARKET_DIFFERENT_CURRENCY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/force-open-different-currency - `GENERAL_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/general-error - `GOOD_TILL_DATE_IN_THE_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/good-till-date-in-the-past - `INSTRUMENT_NOT_FOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/instrument-not-found - `INSTRUMENT_NOT_TRADEABLE_IN_THIS_CURRENCY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/instrument-not-tradeable-in-currency - `INSUFFICIENT_FUNDS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/insufficient-funds - `invalid.input`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/invalid-input - `invalid.input.too.many.markets`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/too-many-markets - `invalid.request.forceOpen`: HTTP 4xx, status verified, https://openbrokerapi.com/errors/ig/invalid-request-forceopen - `invalid.url`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/invalid-url - `LEVEL_TOLERANCE_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/level-tolerance-error - `LIMIT_ORDER_WRONG_SIDE_OF_MARKET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/limit-order-wrong-side-of-market - `MANUAL_ORDER_TIMEOUT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/manual-order-timeout - `MARGIN_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/margin-error - `MARKET_CLOSED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-closed - `MARKET_CLOSED_WITH_EDITS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-closed-with-edits - `MARKET_CLOSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-closing - `MARKET_NOT_BORROWABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-not-borrowable - `MARKET_OFFLINE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-offline - `MARKET_ORDERS_NOT_ALLOWED_ON_INSTRUMENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-orders-not-allowed - `MARKET_PHONE_ONLY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-phone-only - `MARKET_ROLLED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-rolled - `MARKET_UNAVAILABLE_TO_CLIENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/market-unavailable-to-client - `MAX_AUTO_SIZE_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/max-auto-size-exceeded - `MINIMUM_ORDER_SIZE_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/minimum-order-size-error - `MOVE_AWAY_ONLY_LIMIT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/move-away-only-limit - `MOVE_AWAY_ONLY_STOP`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/move-away-only-stop - `MOVE_AWAY_ONLY_TRIGGER_LEVEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/move-away-only-trigger-level - `NCR_POSITIONS_ON_CR_ACCOUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/ncr-positions-on-cr-account - `OPPOSING_DIRECTION_ORDERS_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/opposing-direction-orders-not-allowed - `OPPOSING_POSITIONS_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/opposing-positions-not-allowed - `ORDER_DECLINED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/order-declined - `ORDER_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/order-locked - `ORDER_NOT_FOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/order-not-found - `ORDER_SIZE_CANNOT_BE_FILLED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/order-size-cannot-be-filled - `OVER_NORMAL_MARKET_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/over-normal-market-size - `PARTIALY_CLOSED_POSITION_NOT_DELETED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/partialy-closed-position-not-deleted - `POSITION_ALREADY_EXISTS_IN_OPPOSITE_DIRECTION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/position-exists-in-opposite-direction - `POSITION_NOT_AVAILABLE_TO_CANCEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/position-not-available-to-cancel - `POSITION_NOT_AVAILABLE_TO_CLOSE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/position-not-available-to-close - `POSITION_NOT_FOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/position-not-found - `public-api.costs-and-charges.client-error`: HTTP 400, status verified, https://openbrokerapi.com/errors/ig/costs-and-charges-client-error - `public-api.costs-and-charges.general-error`: HTTP 500, status verified, https://openbrokerapi.com/errors/ig/costs-and-charges-general-error - `public-api.costs-and-charges.indicative-quote-reference-not-found`: HTTP 404, status verified, https://openbrokerapi.com/errors/ig/costs-quote-reference-not-found - `REJECT_CFD_ORDER_ON_SPREADBET_ACCOUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/reject-cfd-order-on-spreadbet-account - `REJECT_SPREADBET_ORDER_ON_CFD_ACCOUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/reject-spreadbet-order-on-cfd-account - `SIZE_INCREMENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/size-increment - `SPRINT_MARKET_EXPIRY_AFTER_MARKET_CLOSE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/sprint-market-expiry-after-market-close - `STOP_OR_LIMIT_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/stop-or-limit-not-allowed - `STOP_REQUIRED_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/stop-required-error - `STRIKE_LEVEL_TOLERANCE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/strike-level-tolerance - `system.error`: HTTP 500, status verified, https://openbrokerapi.com/errors/ig/system-error - `TRAILING_STOP_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/trailing-stop-not-allowed - `unauthorised.access.to.equity.exception`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/unauthorised-access-to-equity - `unauthorised.api-key.revoked`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/unauthorised-api-key-revoked - `unauthorised.clientId.api-key.mismatch`: HTTP 403, status verified, https://openbrokerapi.com/errors/ig/clientid-api-key-mismatch - `UNKNOWN`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/unknown - `WRONG_SIDE_OF_MARKET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ig/wrong-side-of-market ### Interactive Brokers - Page: https://openbrokerapi.com/brokers/ibkr (markdown: https://openbrokerapi.com/brokers/ibkr.md, JSON: https://openbrokerapi.com/data/brokers/ibkr.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [interactivebrokers.com](https://www.interactivebrokers.com/docs/tws-api/doc/introduction) - Base address, recorded as "live": https://localhost:5000/v1/api (Client Portal Gateway) - Base address, recorded as "oauth": https://api.ibkr.com/v1/api - Platform APIs the record marks as offered: none marked as offered #### Claims - How you get a key: No key: run TWS or IB Gateway (TWS API) or the Client Portal Gateway and log in via browser (Web API). - Status: verified. Source: [IBKR TWS API documentation, the IB Gateway](https://www.interactivebrokers.com/docs/tws-api/doc/architecture/the-trader-workstation/the-ib-gateway), checked 2026-10-12. - Status: verified. Source: [IBKR Web API documentation, Client Portal Gateway installation and authentication](https://www.interactivebrokers.com/docs/web-api/authentication/cpgw/installation-authentication), checked 2026-10-12. - Who can use it: Open, funded IBKR Pro account. The Web API supports only IBKR Pro accounts, and the TWS API lists a funded and opened IBKR Pro account among its requirements. - Status: verified. Source: [IBKR Web API v1.0 documentation, requirements and limitations](https://www.interactivebrokers.com/docs/web-api/v1/requirements-limitations/introduction), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, introduction](https://www.interactivebrokers.com/docs/web-api/v1/introduction), checked 2026-10-12. - Status: verified. Source: [IBKR TWS API documentation, requirements](https://www.interactivebrokers.com/docs/tws-api/doc/notes-limitations/requirements), checked 2026-10-12. - Demo: Partial: paper trading accounts are supported and the Web API is logged in to with a separate paper username; demo accounts cannot subscribe to data. - Status: verified. Source: [IBKR Web API documentation, using a paper account](https://www.interactivebrokers.com/docs/web-api/authentication/paper), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, requirements and limitations](https://www.interactivebrokers.com/docs/web-api/v1/requirements-limitations/introduction), checked 2026-10-12. - Authentication: TWS API: local socket to a TWS or IB Gateway the user has logged in to by hand. Web API: Client Portal Gateway with a browser login on the same machine; the Web API also lists OAuth 1.0a, OAuth 2.0 and SSO, and IBKR's older use cases page gives OAuth as the route for institutional clients. - Status: verified. Source: [IBKR TWS API documentation, the IB Gateway](https://www.interactivebrokers.com/docs/tws-api/doc/architecture/the-trader-workstation/the-ib-gateway), checked 2026-10-12. - Status: verified. Source: [IBKR Web API documentation, limitations of the Client Portal Gateway](https://www.interactivebrokers.com/docs/web-api/authentication/cpgw/limitations-of-the-client-portal-gateway), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, introduction](https://www.interactivebrokers.com/docs/web-api/v1/introduction), checked 2026-10-12. - Status: verified. Source: [Client Portal API documentation, use cases (IBKR GitHub pages)](https://interactivebrokers.github.io/cpwebapi/use-cases), checked 2026-10-12. - Streaming: TWS API is event driven over the socket. The Web API websocket is at /v1/api/ws (wss://localhost:5000/v1/api/ws through the gateway): the number of market data subscriptions depends on the account's market data lines, 100 by default, a market data stream ends after 15 minutes unless it is requested again, and at most 5 historical data requests run at once. - Status: verified. Source: [IBKR Web API v1.0 documentation, websockets introduction](https://www.interactivebrokers.com/docs/web-api/v1/ws/introduction), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, websocket market data request](https://www.interactivebrokers.com/docs/web-api/v1/ws/market-data/market-data-request), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, websocket historical market data request](https://www.interactivebrokers.com/docs/web-api/v1/ws/market-data/historical-market-data-request), checked 2026-10-12. - Status: verified. Source: [IBKR Campus: Web API documentation](https://www.interactivebrokers.com/campus/ibkr-api-page/webapi-doc/), checked 2026-10-12. - History depth: Bars of 30 seconds or less are not available beyond six months, and expired futures not beyond two years from expiry. IBKR's current TWS API documentation, read on 12 Oct 2026, counts three pacing violations for bars of 30 seconds or less: an identical historical data request within 15 seconds, six or more requests for the same contract, exchange and tick type within two seconds, and more than 60 requests in any ten minute period, with a BID_ASK request counted twice. The Web API endpoint /iserver/marketdata/history has its own published pacing of 10 requests a second or 50 a minute. Executions: since midnight by default, up to 7 days in TWS if its Trade Log setting is changed, and the current day only in IB Gateway. - Status: verified. Source: [IBKR TWS API documentation, unavailable historical data](https://www.interactivebrokers.com/docs/tws-api/doc/market-data-historical/historical-data-limitations/unavailable-historical-data), checked 2026-10-12. - Status: verified. Source: [IBKR TWS API documentation, pacing violations for small bars](https://www.interactivebrokers.com/docs/tws-api/doc/market-data-historical/historical-data-limitations/pacing-violations-for-small-bars-30-secs-or-less), checked 2026-10-12. - Status: verified. Source: [IBKR TWS API documentation, execution details](https://www.interactivebrokers.com/docs/tws-api/doc/order-management/execution-details/introduction), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, pacing limitations](https://www.interactivebrokers.com/docs/web-api/v1/pacing-limitations), checked 2026-10-12. - Rate limits, as worded: Web API: 10 requests a second for each authenticated username, which IBKR equates with each Web API session, and the same figure through the Client Portal Gateway. Some endpoints carry their own limit: /iserver/marketdata/snapshot 10 a second; /iserver/marketdata/history 10 a second or 50 a minute, with 5 concurrent requests; /iserver/orders and /iserver/trades 1 per 5 seconds; /iserver/scanner/params 1 per 15 minutes; /tickle 1 a second; /sso/validate 1 a minute. A breach returns HTTP 429. The two IBKR pages cited first, read on 12 Oct 2026, say a violating IP address may be put in a penalty box for 10 minutes and that repeat violators may be blocked permanently until the issue is resolved. IBKR's Web API v1.0 pacing page, read the same day, says 15 minutes. TWS API, read again on 12 Oct 2026: the maximum is market data lines divided by two, per second, so the default 100 lines gives 50 requests a second, and for more than that IBKR suggests its FIX API. - Status: verified. Source: [IBKR Web API, pacing limitations](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Status: verified. Source: [IBKR Campus, Web API documentation](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/), checked 2026-10-12. - Status: verified. Source: [IBKR Web API v1.0 documentation, pacing limitations](https://www.interactivebrokers.com/docs/web-api/v1/pacing-limitations), checked 2026-10-12. - Status: verified. Source: [IBKR TWS API: pacing limitations](https://www.interactivebrokers.com/docs/tws-api/doc/pacing-limitations/introduction), checked 2026-10-12. #### Limits - Global requests a second (Web API): 10 requests per second - Scope: Per authenticated username, that is per Web API session - Status: verified. Source: [ibkrcampus.com](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/), checked 2026-10-12. - Corroborated by [interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations) - Note: Client Portal Web API. Some endpoints carry their own lower limit, held in separate records. A breach returns HTTP 429, and both IBKR pages read on 12 Oct 2026 give a penalty box of 10 minutes for a violating IP address. - Historical market data requests: Either 10 req/s or 50 req/minute, as the page words it - Scope: GET /iserver/marketdata/history only - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Corroborated by [ibkrcampus.com/campus/ibkr-api-page/webapi-doc/](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/) - Note: The page gives two figures joined by or and does not say which applies when, so no single number is recorded. The IBKR Campus page also lists 5 concurrent requests for this endpoint. - Market data snapshot requests a second: 10 requests per second - Scope: GET /iserver/marketdata/snapshot only - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Corroborated by [ibkrcampus.com/campus/ibkr-api-page/webapi-doc/](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/) - Order and trade list requests: 1 req/5 s - Scope: GET /iserver/orders and GET /iserver/trades, each counted on its own - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Corroborated by [ibkrcampus.com/campus/ibkr-api-page/webapi-doc/](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/) - Note: The same figure applies to /iserver/account/pnl/partitioned, /portfolio/accounts and /portfolio/subaccounts. The window is 5 seconds, which a single unit cannot state, so the figure stays as wording. - Session validation requests a minute: 1 requests per minute - Scope: GET /sso/validate only - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Corroborated by [ibkrcampus.com/campus/ibkr-api-page/webapi-doc/](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/) - Session keep alive requests a second: 1 requests per second - Scope: GET /tickle only - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/trading/usage-and-availability/pacing-limitations), checked 2026-10-12. - Corroborated by [ibkrcampus.com/campus/ibkr-api-page/webapi-doc/](https://www.ibkrcampus.com/campus/ibkr-api-page/webapi-doc/) #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 23 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/ibkr.json - `DELETE /iserver/account/{accountId}/order/{orderId}`: https://openbrokerapi.com/brokers/ibkr/endpoints/cancel-order - `POST /iserver/account/{accountId}/order/{orderId}`: https://openbrokerapi.com/brokers/ibkr/endpoints/modify-order - `POST /iserver/account/{accountId}/orders`: https://openbrokerapi.com/brokers/ibkr/endpoints/place-order - `POST /iserver/account/{accountId}/orders/whatif`: https://openbrokerapi.com/brokers/ibkr/endpoints/order-whatif - `GET /iserver/account/order/status/{orderId}`: https://openbrokerapi.com/brokers/ibkr/endpoints/order-status - `GET /iserver/account/orders`: https://openbrokerapi.com/brokers/ibkr/endpoints/live-orders - `GET /iserver/account/pnl/partitioned`: https://openbrokerapi.com/brokers/ibkr/endpoints/pnl-partitioned - `GET /iserver/account/trades`: https://openbrokerapi.com/brokers/ibkr/endpoints/trades - `GET /iserver/accounts`: https://openbrokerapi.com/brokers/ibkr/endpoints/iserver-accounts - `POST /iserver/auth/ssodh/init`: https://openbrokerapi.com/brokers/ibkr/endpoints/ssodh-init - `POST /iserver/auth/status`: https://openbrokerapi.com/brokers/ibkr/endpoints/auth-status - `GET /iserver/contract/{conid}/info`: https://openbrokerapi.com/brokers/ibkr/endpoints/contract-info - `GET /iserver/marketdata/history`: https://openbrokerapi.com/brokers/ibkr/endpoints/marketdata-history - `GET /iserver/marketdata/snapshot`: https://openbrokerapi.com/brokers/ibkr/endpoints/marketdata-snapshot - `POST /iserver/reply/{replyId}`: https://openbrokerapi.com/brokers/ibkr/endpoints/order-reply - `GET /iserver/secdef/info`: https://openbrokerapi.com/brokers/ibkr/endpoints/secdef-info - `GET /iserver/secdef/search`: https://openbrokerapi.com/brokers/ibkr/endpoints/secdef-search - `POST /logout`: https://openbrokerapi.com/brokers/ibkr/endpoints/logout - `GET /portfolio/{accountId}/ledger`: https://openbrokerapi.com/brokers/ibkr/endpoints/portfolio-ledger - `GET /portfolio/{accountId}/positions/{pageId}`: https://openbrokerapi.com/brokers/ibkr/endpoints/portfolio-positions - `GET /portfolio/{accountId}/summary`: https://openbrokerapi.com/brokers/ibkr/endpoints/portfolio-summary - `GET /portfolio/accounts`: https://openbrokerapi.com/brokers/ibkr/endpoints/portfolio-accounts - `POST /tickle`: https://openbrokerapi.com/brokers/ibkr/endpoints/tickle #### Error codes 511 recorded. Index: https://openbrokerapi.com/errors/ibkr - `0`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/0-internal-server-error - `100`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/100-max-message-rate-exceeded - `101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/101-max-tickers-reached - `102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/102-duplicate-ticker-id - `103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/103-duplicate-order-id - `104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/104-cant-modify-filled-order - `105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/105-order-does-not-match - `106`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/106-cant-transmit-order-id - `107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/107-incomplete-order - `109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/109-price-out-of-percent-range - `110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/110-price-min-variation - `111`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/111-tif-order-type-incompatible - `113`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/113-tif-day-for-moc-loc - `114`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/114-relative-orders-stocks-only - `115`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/115-relative-orders-us-routing - `116`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/116-dead-exchange - `117`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/117-block-order-size-min-50 - `118`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/118-vwap-orders-vwap-exchange - `119`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/119-only-vwap-on-vwap-exchange - `120`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/120-too-late-for-vwap-today - `121`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/121-invalid-bd-flag - `122`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/122-no-request-tag-for-order - `123`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/123-no-record-for-conid - `124`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/124-no-market-rule-for-conid - `125`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/125-buy-price-must-match-ask - `126`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/126-sell-price-must-match-bid - `129`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/129-vwap-three-minutes-before - `131`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/131-sweep-to-fill-ignored - `132`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/132-no-clearing-account - `133`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/133-submit-new-order-failed - `134`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/134-modify-order-failed - `135`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/135-cant-find-order - `136`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/136-order-cannot-be-cancelled - `137`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/137-vwap-cancel-three-minutes - `138`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/138-cant-parse-ticker-request - `139`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/139-parsing-error - `140`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/140-size-should-be-integer - `141`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/141-price-should-be-double - `142`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/142-no-account-info - `143`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/143-requested-id-not-integer - `144`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/144-size-not-share-allocation - `145`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/145-error-validating-fields - `146`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/146-invalid-trigger-method - `147`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/147-conditional-info-incomplete - `148`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/148-conditional-limit-or-market - `151`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/151-no-user-name - `152`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/152-hidden-attribute-not-allowed - `153`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/153-efps-limit-orders-only - `154`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/154-halted-security - `155`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/155-sizeop-user-name-account - `156`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/156-sizeop-must-go-to-ibsx - `157`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/157-iceberg-or-discretionary - `158`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/158-offset-amount-or-percent - `159`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/159-percent-offset-0-to-100 - `160`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/160-size-cannot-be-zero - `161`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/161-not-in-cancellable-state - `162`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/162-historical-data-service-error - `163`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/163-price-percent-constraint - `164`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/164-no-data-for-percent-check - `165`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/165-historical-data-query-msg - `166`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/166-hmds-expired-contract - `167`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/167-vwap-time-must-be-future - `168`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/168-discretionary-min-variation - `200`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/200-no-security-definition - `201`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/201-order-rejected - `202`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/202-order-cancelled - `203`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/203-security-not-allowed - `300`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/300-cant-find-eid-ticker-id - `301`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/301-invalid-ticker-action - `302`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/302-error-parsing-stop-ticker - `303`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/303-invalid-action - `304`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/304-invalid-account-value-action - `305`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/305-request-parsing-error - `306`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/306-error-processing-dde - `307`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/307-invalid-request-topic - `308`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/308-max-api-pages - `309`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/309-max-market-depth-requests - `310`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/310-cant-find-market-depth - `311`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/311-origin-invalid - `312`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/312-combo-details-invalid - `313`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/313-combo-leg-details-invalid - `314`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/314-bag-requires-combo-legs - `315`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/315-stock-combo-legs-smart - `316`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/316-market-depth-halted - `317`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/317-market-depth-reset - `319`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/319-invalid-log-level - `320`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/320-server-error-reading - `321`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/321-server-error-validating - `322`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/322-server-error-processing - `323`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/323-server-error-cause - `324`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/324-server-error-reading-dde - `325`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/325-discretionary-unsupported - `326`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/326-client-id-in-use - `327`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/327-auto-bind-client-id-0 - `328`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/328-trailing-stop-attach - `329`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/329-cannot-change-order-type - `330`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/330-fa-or-stl-only - `331`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/331-no-managed-accounts - `332`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/332-invalid-account-codes - `333`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/333-invalid-share-allocation - `334`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/334-invalid-good-till-date - `335`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/335-invalid-delta-0-to-100 - `336`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/336-invalid-time-or-time-zone - `337`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/337-invalid-date-time-zone - `338`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/338-good-after-time-disabled - `339`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/339-futures-spread-unsupported - `340`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/340-invalid-improvement-amount - `341`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/341-invalid-delta-1-to-100 - `342`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/342-pegged-order-unsupported - `343`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/343-invalid-date-time-format - `344`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/344-not-an-fa-account - `345`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/345-generic-combo-not-for-fa - `346`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/346-not-institutional-account - `347`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/347-short-sale-slot-1-or-2 - `348`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/348-not-a-short-sale - `349`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/349-combo-no-good-after - `350`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/350-min-qty-best-combo - `351`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/351-rth-only-flag-not-valid - `352`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/352-slot-2-requires-location - `353`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/353-slot-1-no-location - `354`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/354-market-data-not-subscribed - `355`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/355-order-size-market-rule - `356`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/356-smart-combo-no-oca - `357`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/357-client-version-out-of-date - `358`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/358-smart-combo-child-order - `359`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/359-combo-reduce-on-fill - `360`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/360-no-whatif-for-smart-combo - `361`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/361-invalid-trigger-price - `362`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/362-invalid-adjusted-stop - `363`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/363-invalid-adjusted-stop-limit - `364`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/364-invalid-adjusted-trailing - `365`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/365-no-scanner-subscription - `366`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/366-no-historical-data-query - `367`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/367-volatility-type-1-or-2 - `368`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/368-reference-price-type-1-or-2 - `369`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/369-vol-orders-us-options-only - `370`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/370-dynamic-vol-smart-routed - `371`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/371-vol-order-needs-volatility - `372`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/372-dynamic-vol-on-non-vol - `373`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/373-stock-range-attribute - `374`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/374-stock-range-lower-upper - `375`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/375-stock-range-negative - `376`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/376-not-eligible-continuous - `377`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/377-delta-hedge-aux-price - `378`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/378-delta-hedge-needs-aux-price - `379`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/379-delta-hedge-no-aux-price - `380`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/380-delta-hedge-order-type - `381`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/381-dde-dll-needs-upgrade - `382`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/382-price-ticks-constraint - `383`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/383-size-constraint - `384`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/384-invalid-dde-array-request - `385`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/385-duplicate-scanner-ticker-id - `386`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/386-duplicate-hist-ticker-id - `387`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/387-unsupported-order-type - `388`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/388-order-size-below-minimum - `389`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/389-routed-order-id-not-unique - `390`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/390-routed-order-id-invalid - `391`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/391-invalid-time-format - `392`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/392-contract-expired - `393`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/393-short-sale-slot-delta-hedge - `394`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/394-invalid-process-time - `395`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/395-oca-orders-not-accepted - `396`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/396-market-and-limit-only - `397`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/397-market-limit-only-contract - `398`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/398-invalid-condition-trigger - `399`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/399-order-message-error - `400`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/400-algo-order-error - `401`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/401-length-restriction - `401 Unauthorized`: HTTP 401, status verified, https://openbrokerapi.com/errors/ibkr/web-api-401-unauthorized - `402`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/402-conditions-not-allowed - `403`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/403-invalid-stop-price - `404`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/404-shares-not-available-short - `405`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/405-child-qty-parent-size - `406`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/406-currency-not-allowed - `407`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/407-symbol-non-unicode - `408`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/408-invalid-scale-increment - `409`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/409-scale-component-size - `410`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/410-scale-subsequent-size - `411`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/411-outside-rth-not-valid - `412`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/412-contract-not-available - `413`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/413-what-if-transmit-flag - `414`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/414-snapshot-generic-ticks - `415`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/415-wait-for-previous-rfq - `416`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/416-rfq-not-applicable - `417`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/417-scale-initial-size-invalid - `418`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/418-scale-profit-offset-invalid - `419`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/419-scale-initial-size-missing - `420`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/420-invalid-real-time-query - `421`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/421-invalid-route - `422`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/422-account-clearing-attributes - `423`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/423-cross-order-rfq-expired - `424`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/424-fa-order-needs-allocation - `425`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/425-fa-manual-allocations - `426`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/426-not-enough-shares - `427`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/427-mutual-fund-needs-value - `428`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/428-mutual-fund-sell-shares - `429`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/429-delta-neutral-combos-only - `429 Too Many Requests`: HTTP 429, status verified, https://openbrokerapi.com/errors/ibkr/web-api-429 - `430`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/430-fundamentals-not-available - `431`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/431-what-to-show-missing - `432`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/432-commission-not-negative - `433`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/433-invalid-restore-size - `434`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/434-order-size-cannot-be-zero - `435`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/435-must-specify-account - `436`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/436-must-specify-allocation - `437`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/437-outside-rth-or-preopen - `438`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/438-application-locked - `439`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/439-algo-definition-not-found - `440`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/440-algo-cannot-be-modified - `441`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/441-algo-validation-failed - `442`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/442-algorithm-not-allowed - `443`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/443-unknown-algo-attribute - `444`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/444-vol-combo-not-acknowledged - `445`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/445-rfq-no-longer-valid - `446`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/446-scale-profit-offset-missing - `447`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/447-scale-price-adjust-missing - `448`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/448-scale-adjust-interval - `449`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/449-scale-adjust-unexpected - `456`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/456-max-number-of - `481`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/481-order-size-reduced - `500 Internal Server Error`: HTTP 500, status verified, https://openbrokerapi.com/errors/ibkr/web-api-500-internal-server-error - `501`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/501-already-connected - `502`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/502-cannot-connect-to-tws - `503`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/503-tws-out-of-date - `503 on order reply`: HTTP 503, status verified, https://openbrokerapi.com/errors/ibkr/web-api-503-reply-timeout - `503 Service Unavailable`: HTTP 503, status verified, https://openbrokerapi.com/errors/ibkr/web-api-503-service-unavailable - `504`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/504-not-connected - `505`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/505-fatal-error-unknown - `506`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/506-unsupported-version - `507`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/507-bad-message-length - `508`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/508-bad-message - `509`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/509-exception-caught-while - `510`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/510-request-market-data - `511`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/511-cancel-market-data - `512`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/512-order - `513`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/513-account-update-request - `514`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/514-request-for-executions - `515`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/515-cancel-order - `516`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/516-request-open-order - `517`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/517-unknown-contract-verify - `518`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/518-request-contract-data - `519`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/519-request-market-depth - `520`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/520-failed-to-create - `521`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/521-set-server-log - `522`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/522-fa-information-request - `523`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/523-fa-information-replace - `524`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/524-request-scanner-subscription - `525`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/525-cancel-scanner-subscription - `526`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/526-request-scanner-parameter - `527`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/527-request-historical-data - `528`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/528-request-historical-data - `529`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/529-request-real-time - `530`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/530-cancel-real-time - `531`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/531-request-current-time - `532`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/532-request-fundamental-data - `533`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/533-cancel-fundamental-data - `534`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/534-request-calculate-implied - `535`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/535-request-calculate-option - `536`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/536-cancel-calculate-implied - `537`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/537-cancel-calculate-option - `538`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/538-request-global-cancel - `539`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/539-request-market-data - `540`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/540-request-positions - `541`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/541-cancel-positions - `542`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/542-request-account-data - `543`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/543-cancel-account-data - `544`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/544-verify-request - `545`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/545-verify-message - `546`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/546-query-display-groups - `547`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/547-subscribe-to-group - `548`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/548-update-display-group - `549`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/549-unsubscribe-from-group - `550`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/550-start-api - `551`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/551-verify-and-auth - `552`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/552-verify-and-auth - `553`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/553-request-positions-multi - `554`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/554-cancel-positions-multi - `555`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/555-request-account-updates - `556`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/556-cancel-account-updates - `557`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/557-request-security-definition - `558`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/558-request-soft-dollar - `559`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/559-request-family-codes - `560`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/560-request-matching-symbols - `561`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/561-request-market-depth - `562`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/562-request-smart-components - `563`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/563-request-news-providers - `564`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/564-request-news-article - `565`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/565-request-historical-news - `566`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/566-request-head-time - `567`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/567-request-histogram-data - `568`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/568-cancel-request-histogram - `569`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/569-cancel-head-time - `570`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/570-request-market-rule - `571`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/571-request-pnl - `572`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/572-cancel-pnl - `573`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/573-request-pnl-single - `574`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/574-cancel-pnl-single - `575`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/575-request-historical-ticks - `576`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/576-request-tick-by - `577`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/577-cancel-tick-by - `578`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/578-request-completed-orders - `579`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/579-invalid-symbol-in - `580`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/580-request-wsh-meta - `581`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/581-cancel-wsh-meta - `582`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/582-request-wsh-event - `583`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/583-cancel-wsh-event - `584`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/584-request-user-info - `585`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/585-fa-profile-is - `586`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/586-failed-to-read - `587`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/587-request-current-time - `588`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/588-error-encoding-protobuf - `589`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/589-cancel-market-depth - `1100`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/1100-connectivity-lost - `1101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/1101-connectivity-restored-data-lost - `1102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/1102-connectivity-restored-data-maintained - `1300`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/1300-socket-port-reset - `2100`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2100-account-data-unsubscribed - `2101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2101-cannot-subscribe-to-account - `2102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2102-order-still-being-processed - `2103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2103-market-data-farm-disconnect - `2104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2104-market-data-farm-ok - `2105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2105-hist-data-farm-disconnected - `2106`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2106-historical-data-farm-connected - `2107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2107-hist-data-farm-inactive - `2108`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2108-market-data-farm-inactive - `2109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2109-outside-rth-ignored - `2110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2110-tws-server-link-broken - `2111`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2111-algo-order-time-adjusted - `2119`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2119-market-data-farm - `2130`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2130-warning-products-are - `2137`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2137-cross-side-warning - `2152`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2152-market-depth-smart - `2158`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2158-sec-def-data-farm-ok - `2168`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2168-etradeonly-not-supported - `2169`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2169-firmquoteonly-not-supported - `2188`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/2188-up-to-the - `10000`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10000-cross-currency-combo - `10001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10001-cross-currency-vol - `10002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10002-non-guaranteed-legs - `10003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10003-ibsx-not-allowed - `10005`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10005-read-only-models - `10006`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10006-missing-parent-order - `10007`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10007-invalid-hedge-type - `10008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10008-invalid-beta-value - `10009`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10009-invalid-hedge-ratio - `10010`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10010-invalid-delta-hedge-order - `10011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10011-currency-smart-combo - `10012`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10012-invalid-allocation-percent - `10013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10013-smart-routing-api-error - `10014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10014-pctchange-limits - `10015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10015-trading-not-allowed-in-api - `10016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10016-contract-not-visible - `10017`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10017-contracts-not-visible - `10018`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10018-orders-use-ev-warning - `10019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10019-trades-use-ev-warning - `10020`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10020-display-size-order-size - `10021`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10021-invalid-leg2-mkt-offset - `10022`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10022-invalid-leg-prio - `10023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10023-invalid-combo-display-size - `10024`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10024-invalid-dont-start-next - `10025`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10025-invalid-leg2-mkt-time1 - `10026`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10026-invalid-leg2-mkt-time2 - `10027`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10027-invalid-combo-routing-tag - `10089`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10089-api-data-requires - `10090`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10090-part-data-not-subscribed - `10091`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10091-part-of-requested - `10147`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10147-order-to-be - `10148`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10148-order-cannot-be-cancelled - `10186`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10186-data-not-subscribed-delayed - `10187`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10187-failed-to-request - `10189`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10189-failed-to-request - `10197`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10197-no-data-competing-session - `10213`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10213-regulatory-snapshot-restricted - `10225`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10225-bust-event-occurred - `10230`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10230-unsaved-fa-changes - `10231`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10231-groups-invalid-accounts - `10233`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10233-defaults-from-cash-preset - `10234`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10234-decision-maker-non-desktop - `10235`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10235-decision-maker-ibbot - `10236`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10236-child-aon-if-parent-aon - `10237`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10237-aon-entire-unfilled-size - `10238`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10238-advisor-setup-web-app - `10239`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10239-risk-score-criteria - `10240`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10240-valid-price-cap - `10241`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10241-monetary-quantity-modify - `10242`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10242-fractional-order-modify - `10243`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10243-fractional-order-place - `10244`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10244-cash-quantity-not-allowed - `10245`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10245-no-fractional-instrument - `10246`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10246-order-no-fractional - `10247`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10247-fractional-smartrouting - `10248`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10248-no-fractional-permission - `10249`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10249-order-type-no-fractional - `10250`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10250-size-minimum-variation - `10251`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10251-fractional-allocation - `10252`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10252-non-close-no-fractional - `10253`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10253-clear-away-combo-hedge - `10254`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10254-bond-expired - `10268`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10268-etradeonly-attribute - `10269`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10269-firmquoteonly-attribute - `10270`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10270-nbbopricecap-attribute - `10276`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10276-news-feed-not-allowed - `10277`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10277-news-feed-permissions - `10278`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10278-duplicate-wsh-metadata - `10279`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10279-failed-wsh-metadata - `10280`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10280-failed-cancel-wsh-metadata - `10281`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10281-duplicate-wsh-event-data - `10282`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10282-wsh-metadata-not-requested - `10283`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10283-fail-wsh-event-data - `10284`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10284-fail-cancel-wsh-event-data - `10285`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10285-fractional-sizing-rules-version - `10286`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10286-field-too-many-decimals - `10287`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10287-cryptocurrency-order-is - `10288`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10288-market-order-confirmation - `10289`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10289-you-must-set - `10290`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10290-this-order-only - `10291`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10291-orders-to-harvest - `10292`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10292-order-type-action - `10293`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10293-cryptocurrency-cash-quantity - `10294`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10294-cash-quantity-set - `10295`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10295-schedule-daily-resolution-only - `10296`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10296-dark-pool-routing-exclusive - `10297`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10297-not-held-attribute - `10298`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10298-cannot-trade-an - `10299`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10299-expected-what-to-show - `10300`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10300-date-time-row-cut-short - `10301`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10301-date-time-row-cut-short - `10302`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10302-min-trade-quantity-not-allowed - `10303`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10303-invalid-min-trade-quantity - `10304`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10304-minimum-competing-size - `10305`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10305-compete-offset-value - `10306`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10306-mid-offsets-are - `10307`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10307-invalid-midoffsetatwhole-and - `10308`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10308-revision-to-post - `10309`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10309-invalid-wsh-event - `10310`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10310-solicited-field - `10311`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10311-direct-routed-higher-fees - `10312`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10312-volatility-order-not-supported - `10314`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10314-date-time-row-cut-short - `10315`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10315-invalid-time-format - `10316`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10316-trigger-outside-rth-deprecated - `10317`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10317-cash-quantity-minimum-variation - `10318`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10318-this-order-doesn - `10319`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10319-placing-orders-for - `10321`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10321-placing-orders-for - `10322`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10322-this-api-request - `10324`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10324-invalid-oca-group-parameters - `10325`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10325-oca-group-is - `10326`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10326-oca-group-revision - `10327`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10327-oca-group-type - `10328`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10328-connection-lost-order-data - `10329`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10329-order-directly-routed - `10330`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10330-expiry-date-time-format - `10331`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10331-any-stop-warning - `10332`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10332-cryptocurrency-volatility-warning - `10333`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10333-option-exercise-at - `10334`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10334-confirm-omnibus-order - `10335`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10335-order-presets-not-applied - `10336`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10336-per-leg-executing - `10337`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10337-misc-options-key-invalid - `10338`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10338-misc-options-value-invalid - `10339`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10339-setting-end-date - `10340`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10340-order-attribute-not-supported - `10341`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10341-parent-order-id - `10342`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10342-the-imbalanceonly-order - `10343`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10343-selling-event-contracts - `10344`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10344-price-value-must - `10345`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10345-you-cannot-trade - `10346`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10346-market-data-ticker-displayed-elsewhere - `10347`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/10347-limited-liquidity-warning - `Bad Request Error`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-bad-request - `conid or conidex is required`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-400-conid-required - `Failed to parse body as JSON`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-400-failed-to-parse-body - `Invalid order price fields`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-200-invalid-order-price-fields - `Invalid Side`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-400-invalid-side - `Invalid SSL certificate`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/web-api-invalid-ssl-cert - `Network Error while accessing endpoints`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/web-api-network-error - `no sec defs returned`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-200-no-sec-defs-returned - `null time in force is not supported for this order`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-200-null-time-in-force - `o163`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o163 - `o354`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o354 - `o382`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o382 - `o383`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o383 - `o403`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o403 - `o451`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o451 - `o2136`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o2136 - `o2137`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o2137 - `o2165`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o2165 - `o10082`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10082 - `o10138`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10138 - `o10151`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10151 - `o10152`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10152 - `o10153`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10153 - `o10164`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10164 - `o10223`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10223 - `o10288`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10288 - `o10331`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10331 - `o10332`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10332 - `o10333`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10333 - `o10334`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10334 - `o10335`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10335 - `o10336`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-o10336 - `Order reject object`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-200-order-reject - `Order reply message`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-200-order-reply-message - `orders request includes parameter with incorrect type`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-400-parameter-incorrect-type - `p6`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-p6 - `p12`: HTTP 200, status verified, https://openbrokerapi.com/errors/ibkr/web-api-reply-p12 - `The contract description specified for %S is ambiguous; you must specify the currency`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/ambiguous-contract-currency - `The contract description specified for is ambiguous`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/ambiguous-contract - `Unknown order type`: HTTP 400, status verified, https://openbrokerapi.com/errors/ibkr/web-api-400-unknown-order-type - `WinError 10038`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ibkr/winerror-10038 ### OANDA - Page: https://openbrokerapi.com/brokers/oanda (markdown: https://openbrokerapi.com/brokers/oanda.md, JSON: https://openbrokerapi.com/data/brokers/oanda.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [developer.oanda.com](https://developer.oanda.com/rest-live-v20/introduction/) - Base address, recorded as "live": https://api-fxtrade.oanda.com - Base address, recorded as "demo": https://api-fxpractice.oanda.com - Base address, recorded as "stream_live": https://stream-fxtrade.oanda.com - Base address, recorded as "stream_demo": https://stream-fxpractice.oanda.com - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: Account Management Portal > My Services > Manage API Access, accept licence, generate personal access token. - Status: verified. Source: [OANDA v20 Introduction](https://developer.oanda.com/rest-live-v20/introduction/), checked 2026-10-12. - Who can use it: Needs a v20 account; available in all divisions except OANDA Global Markets and OANDA TMS Brokers S.A. - Status: verified. Source: [OANDA v20 Introduction](https://developer.oanda.com/rest-live-v20/introduction/), checked 2026-10-12. - Demo: Yes: fxTrade Practice environment with its own token. - Status: verified. Source: [OANDA Development Guide](https://developer.oanda.com/rest-live-v20/development-guide/), checked 2026-10-12. - Authentication: Bearer personal access token, generated in the Account Management Portal after accepting the API licence. - Status: verified. Source: [Introduction, OANDA v20 REST API](https://developer.oanda.com/rest-live-v20/introduction/), checked 2026-10-12. - Streaming: HTTP chunked transfer encoding carrying JSON objects, not WebSocket. The development guide states at most 20 active streams, with requests above that rejected, and no more than 2 new connections a second. The best practices page advises no more than 100 requests a second on an established connection. Sources: https://developer.oanda.com/rest-live-v20/development-guide/ and https://developer.oanda.com/rest-live-v20/best-practices/, both read 23 September 2026, development guide re-read 24 September 2026. - Status: verified. Source: [OANDA Development Guide](https://developer.oanda.com/rest-live-v20/development-guide/), checked 2026-10-12. - History depth: Historical pricing back to 2005, on the introduction page. Candles: at most 5,000 per request, 500 by default, on the pricing endpoints page. Transactions: at most 365 days per request, in pages of up to 1,000. - Status: verified. Source: [OANDA v20: Introduction](https://developer.oanda.com/rest-live-v20/introduction/), checked 2026-10-12. - Status: verified. Source: [OANDA v20: Pricing endpoints](https://developer.oanda.com/rest-live-v20/pricing-ep/), checked 2026-10-12. - Status: verified. Source: [OANDA v20: Transaction endpoints](https://developer.oanda.com/rest-live-v20/transaction-ep/), checked 2026-10-12. - Rate limits, as worded: OANDA publishes two figures, on two pages, in two units. The enforced one is on the development guide. The development guide states 120 requests a second per IP address, with HTTP 429 above that, and at most 20 active streams. The best practices page advises no more than 100 requests a second on an established connection and no more than 2 new connections a second. A request rate and an established connection rate are different units, so neither figure replaces or contradicts the other. Our inference and not OANDA's word: hold to the lower request rate and open no more than 2 new connections a second. Sources: https://developer.oanda.com/rest-live-v20/development-guide/ and https://developer.oanda.com/rest-live-v20/best-practices/, both read 23 September 2026, development guide re-read 24 September 2026. - Status: verified. Source: [OANDA v20 best practices](https://developer.oanda.com/rest-live-v20/best-practices/), checked 2026-10-12. #### Limits - Headline limit: 120/s per IP address, HTTP 429 above it - Scope: ip - Status: verified. Source: [developer.oanda.com](https://developer.oanda.com/rest-live-v20/development-guide/), checked 2026-10-03. - Note: Best practices. Also 2 new connections a second. The development guide separately states 120 requests a second per IP address, read 24 Sep 2026; the two figures are in different units and neither replaces the other. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Yes - Platform APIs reachable: Yes - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 33 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/oanda.json - `GET /v3/accounts`: https://openbrokerapi.com/brokers/oanda/endpoints/accounts - `GET /v3/accounts/{accountID}`: https://openbrokerapi.com/brokers/oanda/endpoints/account - `GET /v3/accounts/{accountID}/candles/latest`: https://openbrokerapi.com/brokers/oanda/endpoints/candles-latest - `GET /v3/accounts/{accountID}/changes`: https://openbrokerapi.com/brokers/oanda/endpoints/account-changes - `PATCH /v3/accounts/{accountID}/configuration`: https://openbrokerapi.com/brokers/oanda/endpoints/patch-account-configuration - `GET /v3/accounts/{accountID}/instruments`: https://openbrokerapi.com/brokers/oanda/endpoints/instruments - `GET /v3/accounts/{accountID}/instruments/{instrument}/candles`: https://openbrokerapi.com/brokers/oanda/endpoints/account-instrument-candles - `GET /v3/accounts/{accountID}/openPositions`: https://openbrokerapi.com/brokers/oanda/endpoints/open-positions - `GET /v3/accounts/{accountID}/openTrades`: https://openbrokerapi.com/brokers/oanda/endpoints/open-trades - `GET /v3/accounts/{accountID}/orders`: https://openbrokerapi.com/brokers/oanda/endpoints/orders - `POST /v3/accounts/{accountID}/orders`: https://openbrokerapi.com/brokers/oanda/endpoints/post-orders - `GET /v3/accounts/{accountID}/orders/{orderSpecifier}`: https://openbrokerapi.com/brokers/oanda/endpoints/order - `PUT /v3/accounts/{accountID}/orders/{orderSpecifier}`: https://openbrokerapi.com/brokers/oanda/endpoints/put-order - `PUT /v3/accounts/{accountID}/orders/{orderSpecifier}/cancel`: https://openbrokerapi.com/brokers/oanda/endpoints/put-order-cancel - `PUT /v3/accounts/{accountID}/orders/{orderSpecifier}/clientExtensions`: https://openbrokerapi.com/brokers/oanda/endpoints/put-order-client-extensions - `GET /v3/accounts/{accountID}/pendingOrders`: https://openbrokerapi.com/brokers/oanda/endpoints/pending-orders - `GET /v3/accounts/{accountID}/positions`: https://openbrokerapi.com/brokers/oanda/endpoints/positions - `GET /v3/accounts/{accountID}/positions/{instrument}`: https://openbrokerapi.com/brokers/oanda/endpoints/position - `PUT /v3/accounts/{accountID}/positions/{instrument}/close`: https://openbrokerapi.com/brokers/oanda/endpoints/put-position-close - `GET /v3/accounts/{accountID}/pricing`: https://openbrokerapi.com/brokers/oanda/endpoints/pricing - `GET /v3/accounts/{accountID}/pricing/stream`: https://openbrokerapi.com/brokers/oanda/endpoints/pricing-stream - `GET /v3/accounts/{accountID}/summary`: https://openbrokerapi.com/brokers/oanda/endpoints/account-summary - `GET /v3/accounts/{accountID}/trades`: https://openbrokerapi.com/brokers/oanda/endpoints/trades - `GET /v3/accounts/{accountID}/trades/{tradeSpecifier}`: https://openbrokerapi.com/brokers/oanda/endpoints/trade - `PUT /v3/accounts/{accountID}/trades/{tradeSpecifier}/clientExtensions`: https://openbrokerapi.com/brokers/oanda/endpoints/put-trade-client-extensions - `PUT /v3/accounts/{accountID}/trades/{tradeSpecifier}/close`: https://openbrokerapi.com/brokers/oanda/endpoints/put-trade-close - `PUT /v3/accounts/{accountID}/trades/{tradeSpecifier}/orders`: https://openbrokerapi.com/brokers/oanda/endpoints/put-trade-orders - `GET /v3/accounts/{accountID}/transactions`: https://openbrokerapi.com/brokers/oanda/endpoints/transactions - `GET /v3/accounts/{accountID}/transactions/{transactionID}`: https://openbrokerapi.com/brokers/oanda/endpoints/transaction - `GET /v3/accounts/{accountID}/transactions/idrange`: https://openbrokerapi.com/brokers/oanda/endpoints/transactions-idrange - `GET /v3/accounts/{accountID}/transactions/sinceid`: https://openbrokerapi.com/brokers/oanda/endpoints/transactions-sinceid - `GET /v3/accounts/{accountID}/transactions/stream`: https://openbrokerapi.com/brokers/oanda/endpoints/transactions-stream - `GET /v3/instruments/{instrument}/candles`: https://openbrokerapi.com/brokers/oanda/endpoints/candles #### Error codes 242 recorded. Index: https://openbrokerapi.com/errors/oanda - `Account not tradable`: HTTP 403, status verified, https://openbrokerapi.com/errors/oanda/account-not-tradable - `ACCOUNT_CONFIGURATION_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-configuration-locked - `ACCOUNT_DEPOSIT_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-deposit-locked - `ACCOUNT_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-locked - `ACCOUNT_NEW_POSITIONS_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-new-positions-locked - `ACCOUNT_NOT_ACTIVE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-not-active - `ACCOUNT_ORDER_CANCEL_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-order-cancel-locked - `ACCOUNT_ORDER_CREATION_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-order-creation-locked - `ACCOUNT_ORDER_FILL_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-order-fill-locked - `ACCOUNT_POSITION_VALUE_LIMIT_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-position-value-limit-exceeded - `ACCOUNT_WITHDRAWAL_LOCKED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/account-withdrawal-locked - `ADMIN_CONFIGURE_DATA_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/admin-configure-data-missing - `ALIAS_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/alias-invalid - `AMOUNT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/amount-invalid - `AMOUNT_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/amount-missing - `BOUNDS_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/bounds-violation - `CLIENT_CONFIGURE_DATA_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-configure-data-missing - `CLIENT_EXTENSIONS_DATA_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-extensions-data-missing - `CLIENT_ORDER_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-order-comment-invalid - `CLIENT_ORDER_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-order-id-already-exists - `CLIENT_ORDER_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-order-id-invalid - `CLIENT_ORDER_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-order-tag-invalid - `CLIENT_TRADE_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-trade-comment-invalid - `CLIENT_TRADE_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-trade-id-already-exists - `CLIENT_TRADE_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-trade-id-invalid - `CLIENT_TRADE_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/client-trade-tag-invalid - `CLOSE_TRADE_PARTIAL_UNITS_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/close-trade-partial-units-missing - `CLOSE_TRADE_TYPE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/close-trade-type-missing - `CLOSE_TRADE_UNITS_EXCEED_TRADE_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/close-trade-units-exceed-trade-size - `CLOSEOUT_POSITION_DOESNT_EXIST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/closeout-position-doesnt-exist - `CLOSEOUT_POSITION_INCOMPLETE_SPECIFICATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/closeout-position-incomplete - `CLOSEOUT_POSITION_PARTIAL_UNITS_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/closeout-position-units-missing - `CLOSEOUT_POSITION_REJECT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/closeout-position-reject - `CLOSEOUT_POSITION_UNITS_EXCEED_POSITION_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/closeout-position-units-exceed - `FIFO_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/fifo-violation - `FIFO_VIOLATION_SAFEGUARD_PARTIAL_CLOSE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/fifo-safeguard-partial-close - `FIFO_VIOLATION_SAFEGUARD_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/fifo-violation-safeguard-violation - `FUNDING_REASON_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/funding-reason-missing - `GUARANTEED_STOP_LOSS_ON_FILL_ASK_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-ask-halted - `GUARANTEED_STOP_LOSS_ON_FILL_BID_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-bid-halted - `GUARANTEED_STOP_LOSS_ON_FILL_CLIENT_ORDER_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-cl-order-comment-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-cl-order-id-exists - `GUARANTEED_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-client-order-id-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_CLIENT_ORDER_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-client-order-tag-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_DISTANCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-distance-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_DISTANCE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-distance-precision - `GUARANTEED_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-gtd-timestamp-in-past - `GUARANTEED_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-gtd-timestamp-missing - `GUARANTEED_STOP_LOSS_ON_FILL_HEDGING_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-hedging-not-allowed - `GUARANTEED_STOP_LOSS_ON_FILL_LEVEL_RESTRICTION_PRICE_RANGE_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-level-price-range - `GUARANTEED_STOP_LOSS_ON_FILL_LEVEL_RESTRICTION_VOLUME_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-level-volume-exceeded - `GUARANTEED_STOP_LOSS_ON_FILL_LOSS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/guaranteed-stop-loss-on-fill-loss - `GUARANTEED_STOP_LOSS_ON_FILL_MINIMUM_DISTANCE_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-minimum-distance-not-met - `GUARANTEED_STOP_LOSS_ON_FILL_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-not-allowed - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-price-dist-both-missing - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_SPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-price-dist-both-given - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-distance-max-exceeded - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-price-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-price-missing - `GUARANTEED_STOP_LOSS_ON_FILL_PRICE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-price-precision-exceeded - `GUARANTEED_STOP_LOSS_ON_FILL_REQUIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-required - `GUARANTEED_STOP_LOSS_ON_FILL_REQUIRED_FOR_PENDING_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-required-pending - `GUARANTEED_STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-time-in-force-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_TIME_IN_FORCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-time-in-force-missing - `GUARANTEED_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-trigger-invalid - `GUARANTEED_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gsl-on-fill-trigger-missing - `GUARANTEED_STOP_LOSS_ORDER_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-already-exists - `GUARANTEED_STOP_LOSS_ORDER_CREATE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-create-violation - `GUARANTEED_STOP_LOSS_ORDER_HALTED_CREATE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-halted-create-violation - `GUARANTEED_STOP_LOSS_ORDER_HALTED_NOT_CANCELABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-halted-not-cancelable - `GUARANTEED_STOP_LOSS_ORDER_HALTED_NOT_REPLACEABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-halted-not-replaceable - `GUARANTEED_STOP_LOSS_ORDER_HALTED_TIGHTEN_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-halted-tighten-violation - `GUARANTEED_STOP_LOSS_ORDER_HEDGING_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-hedging-not-allowed - `GUARANTEED_STOP_LOSS_ORDER_LEVEL_RESTRICTION_PRICE_RANGE_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-level-price-range-exceeded - `GUARANTEED_STOP_LOSS_ORDER_LEVEL_RESTRICTION_VOLUME_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-level-volume-exceeded - `GUARANTEED_STOP_LOSS_ORDER_MINIMUM_DISTANCE_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-minimum-distance-not-met - `GUARANTEED_STOP_LOSS_ORDER_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-not-allowed - `GUARANTEED_STOP_LOSS_ORDER_NOT_CANCELABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-not-cancelable - `GUARANTEED_STOP_LOSS_ORDER_NOT_REPLACEABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-not-replaceable - `GUARANTEED_STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-price-and-distance-both-missing - `GUARANTEED_STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_SPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-price-and-distance-both-given - `GUARANTEED_STOP_LOSS_ORDER_PRICE_WITHIN_SPREAD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-price-within-spread - `GUARANTEED_STOP_LOSS_ORDER_REQUIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/guaranteed-stop-loss-order-required - `GUARANTEED_STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_GSLO_EXCLUDES_OTHERS_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-rmo-gslo-excludes - `GUARANTEED_STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_MUTUALLY_EXCLUSIVE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-rmo-exclusive - `GUARANTEED_STOP_LOSS_ORDER_TIGHTEN_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-tighten-violation - `GUARANTEED_STOP_LOSS_ORDER_WOULD_VIOLATE_FIFO_VIOLATION_SAFEGUARD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/gslo-would-violate-fifo-safeguard - `HEDGING_GSLO_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/hedging-gslo-violation - `HTTP 401 (invalid or missing token)`: HTTP 401, status verified, https://openbrokerapi.com/errors/oanda/401-invalid-or-missing-token - `HTTP 405`: HTTP 405, status verified, https://openbrokerapi.com/errors/oanda/405-method-not-allowed - `HTTP 429`: HTTP 429, status verified, https://openbrokerapi.com/errors/oanda/429 - `INSTRUMENT_ASK_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-ask-halted - `INSTRUMENT_ASK_REDUCE_ONLY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-ask-reduce-only - `INSTRUMENT_BID_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-bid-halted - `INSTRUMENT_BID_REDUCE_ONLY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-bid-reduce-only - `INSTRUMENT_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-missing - `INSTRUMENT_NOT_TRADEABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-not-tradeable - `INSTRUMENT_PRICE_UNKNOWN`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-price-unknown - `INSTRUMENT_UNKNOWN`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/instrument-unknown - `Insufficient authorization to perform request.`: HTTP 401, status verified, https://openbrokerapi.com/errors/oanda/insufficient-authorization-to-perform-request - `INSUFFICIENT_FUNDS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/insufficient-funds - `INSUFFICIENT_LIQUIDITY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/insufficient-liquidity - `INSUFFICIENT_MARGIN`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/insufficient-margin - `INTERNAL_SERVER_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/internal-server-error - `Invalid value specified for 'instrument'`: HTTP 400, status verified, https://openbrokerapi.com/errors/oanda/invalid-value-specified-for-instrument - `INVALID_REISSUE_IMMEDIATE_PARTIAL_FILL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/invalid-reissue-partial-fill - `LOSING_TAKE_PROFIT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/losing-take-profit - `MARGIN_RATE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/margin-rate-invalid - `MARGIN_RATE_WOULD_TRIGGER_CLOSEOUT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/margin-rate-would-trigger-closeout - `MARGIN_RATE_WOULD_TRIGGER_MARGIN_CALL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/margin-rate-would-trigger-margin-call - `MARKET_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/market-halted - `MARKUP_GROUP_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/markup-group-id-invalid - `NO_SUCH_ORDER`: HTTP 404, status verified, https://openbrokerapi.com/errors/oanda/no-such-order - `NO_SUCH_TRADE`: HTTP 404, status verified, https://openbrokerapi.com/errors/oanda/no-such-trade - `NO_SUCH_TRANSACTION`: HTTP 404, status verified, https://openbrokerapi.com/errors/oanda/no-such-transaction - `OCA_ORDER_IDS_STOP_LOSS_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/oca-order-ids-stop-loss-not-allowed - `OPEN_TRADES_ALLOWED_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/open-trades-allowed-exceeded - `ORDER_CANCEL_WOULD_TRIGGER_CLOSEOUT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-cancel-would-trigger-closeout - `ORDER_DOESNT_EXIST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-doesnt-exist - `ORDER_FILL_POSITION_ACTION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-fill-position-action-invalid - `ORDER_FILL_POSITION_ACTION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-fill-position-action-missing - `ORDER_ID_UNSPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-id-unspecified - `ORDER_IDENTIFIER_INCONSISTENCY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-identifier-inconsistency - `ORDER_PARTIAL_FILL_OPTION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-partial-fill-option-invalid - `ORDER_PARTIAL_FILL_OPTION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/order-partial-fill-option-missing - `ORDERS_ON_FILL_DUPLICATE_CLIENT_ORDER_IDS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/orders-on-fill-dup-cl-order-ids - `ORDERS_ON_FILL_RMO_MUTUAL_EXCLUSIVITY_GSLO_EXCLUDES_OTHERS_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/orders-on-fill-rmo-gslo-excludes - `ORDERS_ON_FILL_RMO_MUTUAL_EXCLUSIVITY_MUTUALLY_EXCLUSIVE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/orders-on-fill-rmo-exclusive - `PENDING_ORDERS_ALLOWED_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/pending-orders-allowed-exceeded - `POSITION_AGGREGATION_MODE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/position-aggregation-mode-invalid - `POSITION_CLOSEOUT_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/position-closeout-failed - `POSITION_SIZE_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/position-size-exceeded - `PRICE_BOUND_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-bound-invalid - `PRICE_BOUND_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-bound-precision-exceeded - `PRICE_DISTANCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-distance-invalid - `PRICE_DISTANCE_MAXIMUM_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-distance-maximum-exceeded - `PRICE_DISTANCE_MINIMUM_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-distance-minimum-not-met - `PRICE_DISTANCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-distance-missing - `PRICE_DISTANCE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-distance-precision-exceeded - `PRICE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-invalid - `PRICE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-missing - `PRICE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/price-precision-exceeded - `REPLACING_ORDER_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/replacing-order-invalid - `REPLACING_TRADE_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/replacing-trade-id-invalid - `STOP_LOSS_ON_FILL_CLIENT_ORDER_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-cl-order-comment-invalid - `STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-cl-order-id-exists - `STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-client-order-id-invalid - `STOP_LOSS_ON_FILL_CLIENT_ORDER_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-client-order-tag-invalid - `STOP_LOSS_ON_FILL_DISTANCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-distance-invalid - `STOP_LOSS_ON_FILL_DISTANCE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-distance-precision - `STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-gtd-timestamp-in-past - `STOP_LOSS_ON_FILL_GTD_TIMESTAMP_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-gtd-timestamp-missing - `STOP_LOSS_ON_FILL_GUARANTEED_ASK_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-ask-halted - `STOP_LOSS_ON_FILL_GUARANTEED_BID_HALTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-bid-halted - `STOP_LOSS_ON_FILL_GUARANTEED_HEDGING_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-no-hedging - `STOP_LOSS_ON_FILL_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-level-exceeded - `STOP_LOSS_ON_FILL_GUARANTEED_MINIMUM_DISTANCE_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-min-distance - `STOP_LOSS_ON_FILL_GUARANTEED_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-not-allowed - `STOP_LOSS_ON_FILL_GUARANTEED_REQUIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-guaranteed-required - `STOP_LOSS_ON_FILL_LOSS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-loss - `STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-price-dist-both-missing - `STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_SPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-price-distance-both-given - `STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-distance-max-exceeded - `STOP_LOSS_ON_FILL_PRICE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-price-invalid - `STOP_LOSS_ON_FILL_PRICE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-price-missing - `STOP_LOSS_ON_FILL_PRICE_PRECISION_EXCEEDED`: HTTP 400, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-price-precision-exceeded - `STOP_LOSS_ON_FILL_REQUIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-on-fill-required - `STOP_LOSS_ON_FILL_REQUIRED_FOR_PENDING_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-required-pending - `STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-time-in-force-invalid - `STOP_LOSS_ON_FILL_TIME_IN_FORCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-time-in-force-missing - `STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-trigger-condition-invalid - `STOP_LOSS_ON_FILL_TRIGGER_CONDITION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-on-fill-trigger-condition-missing - `STOP_LOSS_ORDER_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-already-exists - `STOP_LOSS_ORDER_GUARANTEED_HALTED_CREATE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-halted-create - `STOP_LOSS_ORDER_GUARANTEED_HALTED_TIGHTEN_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-halted-tighten - `STOP_LOSS_ORDER_GUARANTEED_HEDGING_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-no-hedging - `STOP_LOSS_ORDER_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-level-exceeded - `STOP_LOSS_ORDER_GUARANTEED_MINIMUM_DISTANCE_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-min-distance - `STOP_LOSS_ORDER_GUARANTEED_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-not-allowed - `STOP_LOSS_ORDER_GUARANTEED_PRICE_WITHIN_SPREAD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-guaranteed-within-spread - `STOP_LOSS_ORDER_GUARANTEED_REQUIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-guaranteed-required - `STOP_LOSS_ORDER_NOT_CANCELABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-not-cancelable - `STOP_LOSS_ORDER_NOT_REPLACEABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-not-replaceable - `STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-price-distance-both-missing - `STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_SPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-price-distance-both-given - `STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_GSLO_EXCLUDES_OTHERS_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-rmo-gslo-excludes - `STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_MUTUALLY_EXCLUSIVE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/stop-loss-order-rmo-exclusive - `STOP_LOSS_ORDER_WOULD_VIOLATE_FIFO_VIOLATION_SAFEGUARD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/sl-order-violates-fifo-safeguard - `TAKE_PROFIT_ON_FILL_CLIENT_ORDER_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-cl-order-comment-invalid - `TAKE_PROFIT_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-cl-order-id-exists - `TAKE_PROFIT_ON_FILL_CLIENT_ORDER_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-client-order-id-invalid - `TAKE_PROFIT_ON_FILL_CLIENT_ORDER_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-client-order-tag-invalid - `TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_IN_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-gtd-timestamp-in-past - `TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-gtd-timestamp-missing - `TAKE_PROFIT_ON_FILL_LOSS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/take-profit-on-fill-loss - `TAKE_PROFIT_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-distance-max-exceeded - `TAKE_PROFIT_ON_FILL_PRICE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/take-profit-on-fill-price-invalid - `TAKE_PROFIT_ON_FILL_PRICE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/take-profit-on-fill-price-missing - `TAKE_PROFIT_ON_FILL_PRICE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-price-precision-exceeded - `TAKE_PROFIT_ON_FILL_TIME_IN_FORCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-time-in-force-invalid - `TAKE_PROFIT_ON_FILL_TIME_IN_FORCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-time-in-force-missing - `TAKE_PROFIT_ON_FILL_TRIGGER_CONDITION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-trigger-condition-invalid - `TAKE_PROFIT_ON_FILL_TRIGGER_CONDITION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-on-fill-trigger-condition-missing - `TAKE_PROFIT_ORDER_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/take-profit-order-already-exists - `TAKE_PROFIT_ORDER_WOULD_VIOLATE_FIFO_VIOLATION_SAFEGUARD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tp-order-violates-fifo-safeguard - `The provided request was forbidden.`: HTTP 401, status verified, https://openbrokerapi.com/errors/oanda/provided-request-was-forbidden - `The request was missing required data`: HTTP 400, status verified, https://openbrokerapi.com/errors/oanda/request-missing-required-data - `TIME_IN_FORCE_GTD_TIMESTAMP_IN_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/time-in-force-gtd-timestamp-in-past - `TIME_IN_FORCE_GTD_TIMESTAMP_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/time-in-force-gtd-timestamp-missing - `TIME_IN_FORCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/time-in-force-invalid - `TIME_IN_FORCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/time-in-force-missing - `TRADE_DOESNT_EXIST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trade-doesnt-exist - `TRADE_ID_UNSPECIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trade-id-unspecified - `TRADE_IDENTIFIER_INCONSISTENCY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trade-identifier-inconsistency - `TRADE_ON_FILL_CLIENT_EXTENSIONS_NOT_SUPPORTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trade-on-fill-cl-ext-not-supported - `TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_COMMENT_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-cl-order-comment-invalid - `TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-cl-order-id-exists - `TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-client-order-id-invalid - `TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_TAG_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-client-order-tag-invalid - `TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-gtd-timestamp-in-past - `TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-gtd-timestamp-missing - `TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-price-distance-invalid - `TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-distance-max-exceeded - `TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MINIMUM_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-distance-minimum-not-met - `TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-price-distance-missing - `TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-price-distance-precision - `TRAILING_STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-time-in-force-invalid - `TRAILING_STOP_LOSS_ON_FILL_TIME_IN_FORCE_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-time-in-force-missing - `TRAILING_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-trigger-invalid - `TRAILING_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-on-fill-trigger-missing - `TRAILING_STOP_LOSS_ORDER_ALREADY_EXISTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-order-already-exists - `TRAILING_STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_GSLO_EXCLUDES_OTHERS_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-order-rmo-gslo-excludes - `TRAILING_STOP_LOSS_ORDER_RMO_MUTUAL_EXCLUSIVITY_MUTUALLY_EXCLUSIVE_VIOLATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-order-rmo-exclusive - `TRAILING_STOP_LOSS_ORDER_WOULD_VIOLATE_FIFO_VIOLATION_SAFEGUARD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-order-violates-fifo-safeguard - `TRAILING_STOP_LOSS_ORDERS_NOT_SUPPORTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/tsl-orders-not-supported - `TRIGGER_CONDITION_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trigger-condition-invalid - `TRIGGER_CONDITION_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/trigger-condition-missing - `UNITS_INVALID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/units-invalid - `UNITS_LIMIT_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/units-limit-exceeded - `UNITS_MINIMUM_NOT_MET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/units-minimum-not-met - `UNITS_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/units-missing - `UNITS_PRECISION_EXCEEDED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oanda/units-precision-exceeded ### Pepperstone - Page: https://openbrokerapi.com/brokers/pepperstone (markdown: https://openbrokerapi.com/brokers/pepperstone.md, JSON: https://openbrokerapi.com/data/brokers/pepperstone.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [pepperstone.com](https://pepperstone.com/en/platforms/tools/api-trading) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5), cTrader Open API #### Claims - How you get a key: API by application. You need a live Pepperstone account, then you email support to request one of two routes. The Standard API: once approved you generate an API key to connect your software. The FIX API: for account holders with a minimum trading volume of 160 million euro a month, or the local currency equivalent. The page publishes no protocol, documentation or eligibility test for the Standard API. - Status: verified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. - Demo: Partial: Pepperstone's API trading page says an account holder who meets the 160 million euro monthly volume can request access to a FIX demo environment, to test a FIX integration before going live. No demo or sandbox is stated for the Standard API. The Try a demo offer on its platform pages is a platform demo, not an API demo. - Status: verified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. - Authentication: Unverified beyond one phrase. Pepperstone's API trading page, re-read 12 Oct 2026, says only that the Standard API uses an API key generated after approval. It names no header, signature or token lifetime, and nothing at all for the FIX route. - Status: unverified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. - Streaming: Unverified. The API trading page, re-read 12 Oct 2026, says software can receive live pricing data and depth of market, but describes no streaming transport, host or limit for either route. - Status: unverified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. - History depth: Unverified. The API trading page, re-read 12 Oct 2026, describes no history endpoint and no depth. - Status: unverified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. - Rate limits, as worded: Unverified. The API trading page, re-read 12 Oct 2026, states no rate limit for either route, and it links to no API documentation. That is not evidence that there is no limit. - Status: unverified. Source: [Pepperstone API trading](https://pepperstone.com/en/platforms/tools/api-trading), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Not recorded - Authentication described: Partial - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### Saxo OpenAPI - Page: https://openbrokerapi.com/brokers/saxo (markdown: https://openbrokerapi.com/brokers/saxo.md, JSON: https://openbrokerapi.com/data/brokers/saxo.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [developer.saxo](https://www.developer.saxo/openapi/learn) - Base address, recorded as "live": https://gateway.saxobank.com/openapi - Base address, recorded as "demo": https://gateway.saxobank.com/sim/openapi - Base address, recorded as "stream_live": https://live-streaming.saxobank.com/oapi/streaming/ws - Base address, recorded as "stream_demo": https://sim-streaming.saxobank.com/sim/oapi/streaming/ws - Platform APIs the record marks as offered: none marked as offered #### Claims - How you get a key: Create a developer portal account for SIM (24 hour token or registered app); apply for live app credentials after testing. - Status: verified. Source: [Saxo OpenAPI Learn](https://www.developer.saxo/openapi/learn), checked 2026-09-20. - Who can use it: Direct retail and professional clients may use it for personal use; a live account must be funded before creating a live app. The approval criteria for a retail live environment are unverified: the environments and security pages read on 19 Sep 2026 say live requires permission and testing before deployment but do not state what is required. - Status: verified. Source: [Saxo Support: personal use](https://openapi.help.saxo/hc/en-us/articles/4416505486481-Can-I-use-OpenAPI-for-personal-use), checked 2026-09-21. - Demo: Yes: SIM environment; 24 hour portal tokens work in SIM only. - Status: verified. Source: [Saxo Environments](https://www.developer.saxo/openapi/learn/environments), checked 2026-09-20. - Authentication: OAuth 2.0 authorization code (with or without PKCE); app key and secret for live. Refresh tokens rotate: each is invalidated on use and replaced. Certificate-based auth is for select partners only, not retail. - Status: verified. Source: [Saxo OpenAPI Learn](https://www.developer.saxo/openapi/learn), checked 2026-09-20. - Streaming: WebSocket streaming (SIM and live hosts). The connection allowance and the instrument cap are unverified as of 20 Sep 2026: the streaming pages no longer publish either figure and say only that the number of WebSocket connections depends on the throttling profile assigned to the application. - Status: verified. Source: [Saxo Environments](https://www.developer.saxo/openapi/learn/environments), checked 2026-09-21. - History depth: Chart samples max 1,200 per request; some FX data back to 2002. Trades report takes FromDate and ToDate with no stated limit. - Status: verified. Source: [Saxo OpenAPI Support: How many samples can be returned at a time?](https://openapi.help.saxo/hc/en-us/articles/4417065320977-How-many-samples-can-be-returned-at-a-time), checked 2026-09-22. - Rate limits, as worded: 10,000,000 requests a day per app; 120 a minute per session per service group; 1 order a second per session; a duplicate order inside 15 seconds is rejected with HTTP 409. Read 23 Sep 2026. - Status: verified. Source: [Saxo OpenAPI: rate limiting](https://www.developer.saxo/openapi/learn/rate-limiting), checked 2026-09-23. #### Limits - Headline limit: 120/min per session, per service group - Scope: session - Status: verified. Source: [developer.saxo](https://www.developer.saxo/openapi/learn/rate-limiting), checked 2026-09-18. - Note: Per session per service group; 1 order per second per session. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Yes - Platform APIs reachable: No - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 68 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/saxo.json - `GET /chart/v3/charts`: https://openbrokerapi.com/brokers/saxo/endpoints/charts - `POST /chart/v3/charts/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/charts-subscribe - `DELETE /chart/v3/charts/subscriptions/{ContextId}/{ReferenceId}`: https://openbrokerapi.com/brokers/saxo/endpoints/charts-unsubscribe - `GET /hist/v1/transactions`: https://openbrokerapi.com/brokers/saxo/endpoints/hist-transactions - `GET /hist/v4/performance/summary`: https://openbrokerapi.com/brokers/saxo/endpoints/performance-summary - `GET /port/v1/accounts`: https://openbrokerapi.com/brokers/saxo/endpoints/accounts - `GET /port/v1/accounts/{AccountKey}`: https://openbrokerapi.com/brokers/saxo/endpoints/account-by-key - `GET /port/v1/accounts/me`: https://openbrokerapi.com/brokers/saxo/endpoints/accounts-me - `POST /port/v1/accounts/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/accounts-subscribe - `GET /port/v1/balances`: https://openbrokerapi.com/brokers/saxo/endpoints/balances - `GET /port/v1/balances/marginoverview`: https://openbrokerapi.com/brokers/saxo/endpoints/balances-marginoverview - `GET /port/v1/balances/me`: https://openbrokerapi.com/brokers/saxo/endpoints/balances-me - `POST /port/v1/balances/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/balances-subscribe - `GET /port/v1/clients/{ClientKey}`: https://openbrokerapi.com/brokers/saxo/endpoints/client-by-key - `GET /port/v1/clients/me`: https://openbrokerapi.com/brokers/saxo/endpoints/clients-me - `GET /port/v1/closedpositions`: https://openbrokerapi.com/brokers/saxo/endpoints/closedpositions - `GET /port/v1/closedpositions/{ClosedPositionId}`: https://openbrokerapi.com/brokers/saxo/endpoints/closedposition-by-id - `GET /port/v1/closedpositions/me`: https://openbrokerapi.com/brokers/saxo/endpoints/closedpositions-me - `POST /port/v1/closedpositions/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/closedpositions-subscribe - `GET /port/v1/exposure/currency/me`: https://openbrokerapi.com/brokers/saxo/endpoints/exposure-currency-me - `GET /port/v1/exposure/fxspot/me`: https://openbrokerapi.com/brokers/saxo/endpoints/exposure-fxspot-me - `GET /port/v1/exposure/instruments/me`: https://openbrokerapi.com/brokers/saxo/endpoints/exposure-instruments-me - `GET /port/v1/netpositions`: https://openbrokerapi.com/brokers/saxo/endpoints/netpositions - `GET /port/v1/netpositions/{NetPositionId}`: https://openbrokerapi.com/brokers/saxo/endpoints/netposition-by-id - `GET /port/v1/netpositions/me`: https://openbrokerapi.com/brokers/saxo/endpoints/netpositions-me - `POST /port/v1/netpositions/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/netpositions-subscribe - `GET /port/v1/orders`: https://openbrokerapi.com/brokers/saxo/endpoints/orders - `GET /port/v1/orders/{ClientKey}/{OrderId}`: https://openbrokerapi.com/brokers/saxo/endpoints/order-by-id - `GET /port/v1/orders/me`: https://openbrokerapi.com/brokers/saxo/endpoints/orders-me - `POST /port/v1/orders/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/orders-subscribe - `GET /port/v1/positions`: https://openbrokerapi.com/brokers/saxo/endpoints/positions - `GET /port/v1/positions/{PositionId}`: https://openbrokerapi.com/brokers/saxo/endpoints/position-by-id - `GET /port/v1/positions/me`: https://openbrokerapi.com/brokers/saxo/endpoints/positions-me - `POST /port/v1/positions/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/positions-subscribe - `GET /port/v1/users/me`: https://openbrokerapi.com/brokers/saxo/endpoints/users-me - `GET /port/v1/users/me/entitlements`: https://openbrokerapi.com/brokers/saxo/endpoints/users-me-entitlements - `GET /ref/v1/countries`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-countries - `GET /ref/v1/cultures`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-cultures - `GET /ref/v1/currencies`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-currencies - `GET /ref/v1/currencypairs`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-currencypairs - `GET /ref/v1/exchanges`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-exchanges - `GET /ref/v1/exchanges/{ExchangeId}`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-exchange-by-id - `GET /ref/v1/instruments`: https://openbrokerapi.com/brokers/saxo/endpoints/instruments-search - `GET /ref/v1/instruments/details`: https://openbrokerapi.com/brokers/saxo/endpoints/instruments-details-list - `GET /ref/v1/instruments/details/{Uic}/{AssetType}`: https://openbrokerapi.com/brokers/saxo/endpoints/instrument-details - `GET /ref/v1/instruments/tradingschedule/{Uic}/{AssetType}`: https://openbrokerapi.com/brokers/saxo/endpoints/instrument-tradingschedule - `GET /ref/v1/languages`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-languages - `GET /ref/v1/standarddates/forwardtenor/{Uic}`: https://openbrokerapi.com/brokers/saxo/endpoints/standarddates-forwardtenor - `GET /ref/v1/timezones`: https://openbrokerapi.com/brokers/saxo/endpoints/ref-timezones - `GET /root/v1/diagnostics/get`: https://openbrokerapi.com/brokers/saxo/endpoints/diagnostics-get - `GET /root/v1/features/availability`: https://openbrokerapi.com/brokers/saxo/endpoints/features-availability - `GET /root/v1/sessions/capabilities`: https://openbrokerapi.com/brokers/saxo/endpoints/sessions-capabilities - `PUT /root/v1/sessions/capabilities`: https://openbrokerapi.com/brokers/saxo/endpoints/put-sessions-capabilities - `POST /root/v1/sessions/events/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/sessions-events-subscribe - `GET /root/v1/user`: https://openbrokerapi.com/brokers/saxo/endpoints/root-user - `GET /trade/v1/infoprices`: https://openbrokerapi.com/brokers/saxo/endpoints/infoprices - `GET /trade/v1/infoprices/list`: https://openbrokerapi.com/brokers/saxo/endpoints/infoprices-list - `POST /trade/v1/infoprices/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/infoprices-subscribe - `GET /trade/v1/messages`: https://openbrokerapi.com/brokers/saxo/endpoints/trade-messages - `PATCH /trade/v1/positions/{PositionId}`: https://openbrokerapi.com/brokers/saxo/endpoints/patch-position - `POST /trade/v1/prices/subscriptions`: https://openbrokerapi.com/brokers/saxo/endpoints/prices-subscribe - `DELETE /trade/v1/prices/subscriptions/{ContextId}/{ReferenceId}`: https://openbrokerapi.com/brokers/saxo/endpoints/prices-unsubscribe - `DELETE /trade/v2/orders`: https://openbrokerapi.com/brokers/saxo/endpoints/cancel-orders-by-instrument - `PATCH /trade/v2/orders`: https://openbrokerapi.com/brokers/saxo/endpoints/change-order - `POST /trade/v2/orders`: https://openbrokerapi.com/brokers/saxo/endpoints/place-order - `DELETE /trade/v2/orders/{OrderIds}`: https://openbrokerapi.com/brokers/saxo/endpoints/cancel-orders - `POST /trade/v2/orders/multileg`: https://openbrokerapi.com/brokers/saxo/endpoints/place-multileg-order - `POST /trade/v2/orders/precheck`: https://openbrokerapi.com/brokers/saxo/endpoints/precheck-order #### Functions and messages 5 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - Saxo OpenAPI streaming connection, the broker's own interface of Saxo OpenAPI: 5 messages (4 events, 1 request), each travels over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/brokers/saxo/messages - `_disconnect` (message, Saxo OpenAPI streaming connection): https://openbrokerapi.com/brokers/saxo/messages/disconnect - `_heartbeat` (message, Saxo OpenAPI streaming connection): https://openbrokerapi.com/brokers/saxo/messages/heartbeat - `_resetsubscriptions` (message, Saxo OpenAPI streaming connection): https://openbrokerapi.com/brokers/saxo/messages/resetsubscriptions - `connect` (message, Saxo OpenAPI streaming connection): https://openbrokerapi.com/brokers/saxo/messages/connect - `Data message` (message, Saxo OpenAPI streaming connection): https://openbrokerapi.com/brokers/saxo/messages/data-message #### Error codes 143 recorded. Index: https://openbrokerapi.com/errors/saxo - `_disconnect`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/saxo/disconnect - `_resetsubscriptions`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/saxo/resetsubscriptions - `ActiveFollowerCannotDoManualTrade`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/active-follower-no-manual-trade - `AlgoOrderTimeBeforeExchangeOpen`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/algo-order-time-before-exchange-open - `AmountBelowMinimumLotSize`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/amount-below-minimum-lot-size - `AmountCannotBeLessThanFilledAmount`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/amount-less-than-filled-amount - `AmountNotInLotSize`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/amount-not-in-lot-size - `BlocksExistForOwnedContracts`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/blocks-exist-for-owned-contracts - `BreakoutUpPriceCannotBeLessThanDownPrice`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/breakout-up-price-below-down - `BrokerOption`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/broker-option - `CashAmountLessThanMinInitialInvestmentAmount`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/cash-below-min-initial-investment - `ClientCountrySanctioned`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/client-country-sanctioned - `ClientExposureLimitation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/client-exposure-limitation - `ClientNotEnabledForExtendedTradingHours`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/client-not-enabled-extended-hours - `ClientOnReduceForcedExposureReductionViolation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/client-on-reduce-exposure-violation - `ClosingPositionNotAllowedForMultiDayExecutionOrder`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/closing-not-allowed-multi-day-order - `ClosingPositionNotAllowedOnJointExecutionModel`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/closing-not-allowed-joint-execution - `ConditionDurationNotSupported`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/condition-duration-not-supported - `ConditionOnWrongSideOfMarket`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/condition-on-wrong-side-of-market - `ConditionPriceExceedsAggressiveTolerance`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/condition-price-exceeds-tolerance - `ConditionTooFarFromMarket`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/condition-too-far-from-market - `ContactExposureLimitation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/contact-exposure-limitation - `CouldNotCompleteRequest`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/could-not-complete-request - `CrossCurrencyOrderOnMarginLendingAccountNotAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/cross-currency-on-margin-lending - `DealCaptureAllocationKeyNotCorrect`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/deal-capture-allocation-key - `DealCaptureInformationNotCorrect`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/deal-capture-information - `DomainValidationError`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/domain-validation-error - `DurationNotSupported`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/duration-not-supported - `ExpirationDateInPast`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/expiration-date-in-past - `ExpirationDateRequired`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/expiration-date-required - `ExplicitCloseNotAllowedForIntradayNetting`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/explicit-close-intraday-netting - `ExtendedHoursTradingCannotBeChanged`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/extended-hours-cannot-be-changed - `FeatureNotEnabled`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/feature-not-enabled - `ForcedExposureReductionViolation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/forced-exposure-reduction-violation - `ForceOpenNotAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/force-open-not-allowed - `ForwardDateInPast`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/forward-date-in-past - `ForwardDateRequired`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/forward-date-required - `GtdOrderCannotBeLaterThanExpiry`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/gtd-order-later-than-expiry - `HTTP 400`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/bad-request - `HTTP 401`: HTTP 401, status verified, https://openbrokerapi.com/errors/saxo/unauthorised - `HTTP 403`: HTTP 403, status verified, https://openbrokerapi.com/errors/saxo/forbidden - `HTTP 404`: HTTP 404, status verified, https://openbrokerapi.com/errors/saxo/not-found - `HTTP 409 (duplicate order)`: HTTP 409, status verified, https://openbrokerapi.com/errors/saxo/409-duplicate-order - `HTTP 426`: HTTP 426, status verified, https://openbrokerapi.com/errors/saxo/426-upgrade-required - `HTTP 429`: HTTP 429, status verified, https://openbrokerapi.com/errors/saxo/429 - `HTTP 500`: HTTP 500, status verified, https://openbrokerapi.com/errors/saxo/internal-service-error - `HTTP 503`: HTTP 503, status verified, https://openbrokerapi.com/errors/saxo/service-unavailable - `IllegalAccount`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-account - `IllegalAmount`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-amount - `IllegalAssetType`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-asset-type - `IllegalDate`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-date - `IllegalInstrumentId`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-instrument-id - `IllegalRequest`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-request - `IllegalStrike`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/illegal-strike - `IncorrectValuationTypeAndNettingMethod`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/incorrect-valuation-and-netting - `InstrumentDisabledForTrading`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/instrument-disabled-for-trading - `InstrumentForcedExposureReductionViolation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/instrument-exposure-reduction - `InstrumentHasExpired`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/instrument-has-expired - `InstrumentNotAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/instrument-not-allowed - `InstrumentNotSupportedForExtendedHours`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/instrument-no-extended-hours - `InsufficientCash`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/insufficient-cash - `InsufficientCash_CausedByOvernightAddOn`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/insufficient-cash-overnight-add-on - `InternalTimeout`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/internal-timeout - `InvalidAcceptLanguageHeader`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-accept-language-header - `InvalidAllocationKeyUsed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-allocation-key-used - `InvalidMediaTypeHeader`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-media-type-header - `InvalidModelState`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-model-state - `InvalidOrderRelation`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-order-relation - `InvalidQueryParameters`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-query-parameters - `InvalidRequest`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-request - `InvalidRequestHeader`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-request-header - `InvalidUic`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-uic - `InvalidValueDate`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/invalid-value-date - `LimitTooFarFromStop`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/limit-too-far-from-stop - `MarketClosed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/market-closed - `NotOwned`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/not-owned - `NotPrimarySession`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/not-primary-session - `NotSuitable`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/not-suitable - `NotTradableAtPresent`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/not-tradable-at-present - `OnlyLimitOrderAllowedForExtendedHours`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/only-limit-order-extended-hours - `OnlySidedReductionAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/only-sided-reduction-allowed - `OnWrongSideOfMarket`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/on-wrong-side-of-market - `OptionExerciseAfterCutoff`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/option-exercise-after-cutoff - `OptionExerciseNotAllowedDueExDateOfUpcomingCorporateActionOnInstrument`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/option-exercise-corporate-action - `OrderCommandPending`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-command-pending - `OrderCommandTimeout`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-command-timeout - `OrderExceedsMarketLimitUpDownTolerance`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-exceeds-limit-up-down - `OrderIsRestrictedForAccountManagementType`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-restricted-account-mgmt-type - `OrderNotFound`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-not-found - `OrderNotPlaced`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-not-placed - `OrderNotSupportedForAccountType`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-not-supported-account-type - `OrderPriceOutsideLimit`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-price-outside-limit - `OrderRejectedByBroker`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-rejected-by-broker - `OrderRelatedPositionIsClosed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-related-position-is-closed - `OrderRelatedPositionMissMatch`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-related-position-miss-match - `OrderRequestAfterLastTradingDate`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-after-last-trading-date - `OrderSizeGreaterThanMaximumAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-size-above-maximum - `OrderTypeNotSupported`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-type-not-supported - `OrderValueTooLarge`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-value-too-large - `OrderValueToSmall`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/order-value-to-small - `OtherError`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/other-error - `PriceExceedsAggressiveTolerance`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/price-exceeds-aggressive-tolerance - `PriceHasMoved`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/price-has-moved - `PriceNotInTickSizeIncrements`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/price-not-in-tick-size-increments - `RateLimitExceeded`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/saxo/rate-limit-exceeded - `RelatedOrClosingOrderNotAllowedForIntradayNettingClients`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-intraday-netting - `RelatedOrderNotAllowedForInstrument`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-not-for-instrument - `RelatedOrderNotAllowedForIpo`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-not-allowed-for-ipo - `RelatedOrderNotAllowedForShortLived`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-not-for-short-lived - `RelatedOrderNotAllowedOnChildOrder`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-not-on-child-order - `RelatedOrderNotAllowedOnMultiLegPartialFilled`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-multi-leg-partial - `RelatedOrderNotAllowedOnTrailingStopOrder`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-order-not-on-trailing-stop - `RelatedPositionAlreadyHasImplicitClosingOrders`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-position-has-closing-orders - `RelatedPositionAlreadyHasRelatedOrders`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-position-has-related-orders - `RelatedPositionAlreadyHasRelatedOrderType`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-position-has-order-type - `RelatedPositionNotFound`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/related-position-not-found - `RepeatTradeOnAutoQuote`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/repeat-trade-on-auto-quote - `RequestNotAllowed`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/request-not-allowed - `ReservedByShortContractOptions`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/reserved-by-short-contract-options - `SellExceedsSettledExposure`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/sell-exceeds-settled-exposure - `SellOrdersAlreadyExistForOwnedContracts`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/sell-orders-exist-for-owned - `ShortTradeDisabled`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/short-trade-disabled - `SubscriptionLimitExceeded`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/subscription-limit - `SubscriptionPermanentlyDisabled`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/saxo/subscription-permanently-disabled - `SubscriptionTemporarilyDisabled`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/saxo/subscription-temporarily-disabled - `TooCloseToMarket`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/too-close-to-market - `TooCloseToOcoRelatedOrderPrice`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/too-close-to-oco-related-order-price - `TooFarFromEntryOrder`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/too-far-from-entry-order - `TooFarFromMarket`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/too-far-from-market - `ToOpenNotAllowedOnInstrument`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/to-open-not-allowed-on-instrument - `TradeNotCompleted`: HTTP 202, status verified, https://openbrokerapi.com/errors/saxo/trade-not-completed - `TradingDisabled`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/trading-disabled - `TradingOnNonFundedAccount`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/trading-on-non-funded-account - `TypeConversionError`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/type-conversion-error - `UnsupportedSubscriptionFormat`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/unsupported-subscription-format - `WouldComeTooCloseToAccountValueProtectionLimit`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/too-close-to-value-protection - `WouldExceedAccountValueProtectionLimit`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-value-protection - `WouldExceedMargin`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-margin - `WouldExceedMarginCeiling`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-margin-ceiling - `WouldExceedMaxCreditLine`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-max-credit-line - `WouldExceedMaxCreditLineLimit`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-max-credit-line-limit - `WouldExceedTradingLine`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/would-exceed-trading-line - `WrongSideOfRelatedOrder`: HTTP 400, status verified, https://openbrokerapi.com/errors/saxo/wrong-side-of-related-order ### Swissquote - Page: https://openbrokerapi.com/brokers/swissquote (markdown: https://openbrokerapi.com/brokers/swissquote.md, JSON: https://openbrokerapi.com/data/brokers/swissquote.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [swissquote.com](https://www.swissquote.com/en/institutional/solutions/technology/apis) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: Swissquote's APIs are presented on its institutional pages, which you reach by contacting a Swissquote office, not through a self service key. Three trading APIs are named there: a REST API on the OpenWealth standard for securities, cryptocurrencies and FX spot, a FIX API for securities and cryptocurrencies, and a dedicated FIX API for leveraged forex whose stated client types are corporates, banks and retail brokers. Separately, the platform comparison table on Swissquote's UK private client pages lists FIX API as a feature of the CFXD platform and not of MetaTrader 4 or MetaTrader 5, which carry Expert Advisors instead. That table does not say how a private client applies for FIX access. - Status: verified. Source: [Swissquote institutional, securities and cryptos via an API](https://www.swissquote.com/en/institutional/solutions/technology/apis/securities-cryptos), checked 2026-10-12. - Status: verified. Source: [Swissquote institutional Forex APIs](https://www.swissquote.com/en/institutional/solutions/technology/apis/forex), checked 2026-10-12. - Status: verified. Source: [Swissquote UK, forex and CFD platforms](https://www.swissquote.com/en-uk/private/trade/platforms/forex-cfds), checked 2026-10-12. - Demo: Yes: the FAQ on Swissquote's institutional securities API page says a demo environment is offered to validate an API integration. The demo account advertised on the UK private client platform pages is a platform demo, and the page does not say that it covers the FIX API. - Status: verified. Source: [Swissquote institutional, securities and cryptos via an API](https://www.swissquote.com/en/institutional/solutions/technology/apis/securities-cryptos), checked 2026-10-12. - Status: verified. Source: [Swissquote UK, forex and CFD platforms](https://www.swissquote.com/en-uk/private/trade/platforms/forex-cfds), checked 2026-10-12. - Authentication: Unverified. The pages opened on 12 Oct 2026 do not describe how a session is authenticated. The FIX specifications are PDF files on library.swissquote.com, whose robots.txt disallows automated reading, so they were not opened, and the REST specification page did not render its content without scripts. - Status: unverified. Source: [Swissquote institutional Forex APIs](https://www.swissquote.com/en/institutional/solutions/technology/apis/forex), checked 2026-10-12. - Streaming: The institutional Forex API page lists the liquidity channel of its FIX connections as streaming, with request for stream and request for quote also listed for the Integral connection. For securities, the FAQ says no market data is available over the FIX API, and for digital assets a dedicated FIX session gives market data. No streaming limits are stated on the pages opened. - Status: verified. Source: [Swissquote institutional Forex APIs](https://www.swissquote.com/en/institutional/solutions/technology/apis/forex), checked 2026-10-12. - Status: verified. Source: [Swissquote institutional, securities and cryptos via an API](https://www.swissquote.com/en/institutional/solutions/technology/apis/securities-cryptos), checked 2026-10-12. - Rate limits, as worded: Unverified. No page opened on 12 Oct 2026 states a request or order limit: not the institutional API overview, the Forex API page or the securities API page. The FIX specifications, where a limit would be written, sit on library.swissquote.com, whose robots.txt disallows automated reading, so they were not opened. This is not evidence that there is no limit. - Status: unverified. Source: [Swissquote institutional Forex APIs](https://www.swissquote.com/en/institutional/solutions/technology/apis/forex), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Partial - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Not recorded ### ThinkMarkets - Page: https://openbrokerapi.com/brokers/thinkmarkets (markdown: https://openbrokerapi.com/brokers/thinkmarkets.md, JSON: https://openbrokerapi.com/data/brokers/thinkmarkets.json) - Kind: broker, recorded as having no API of its own, not verified - Newest reading: 2026-10-05 - Official documentation: [support.thinkmarkets.com](https://support.thinkmarkets.com/hc/en-gb/articles/11613215353745-Spread-betting-account) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: Unverified. ThinkMarkets' site and its support centre answered 403 Forbidden to automated reading on 12 Oct 2026 (the UK home page, the institutional page and the spread betting help article), so no ThinkMarkets page was opened and nothing could be confirmed either way. Carried over from the prototype and not confirmed: no API of ThinkMarkets' own for retail clients, with automation through MetaTrader. The MCP register on this site holds a ThinkMarkets server read from a press interview, not from ThinkMarkets' own pages. - Status: unverified. Source: [ThinkMarkets UK (did not open on 12 Oct 2026)](https://www.thinkmarkets.com/uk/), checked 2026-09-21. - Demo: Unverified. The UK site showed a Try demo button and a Demo Account option when read on 21 Sep 2026, which is a platform demo and says nothing about an API. The site answered 403 Forbidden on 12 Oct 2026, so it could not be read again. - Status: unverified. Source: [ThinkMarkets UK (did not open on 12 Oct 2026)](https://www.thinkmarkets.com/uk/), checked 2026-09-21. - Rate limits, as worded: No retail API. Institutional page offers API solutions through vendors with no protocol, documentation or limit stated (read 22 Sep 2026). - Status: verified. Source: [ThinkMarkets institutional sales](https://www.thinkmarkets.com/en/institutional-sales/), checked 2026-09-22. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Not recorded - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Yes - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### Tickmill - Page: https://openbrokerapi.com/brokers/tickmill (markdown: https://openbrokerapi.com/brokers/tickmill.md, JSON: https://openbrokerapi.com/data/brokers/tickmill.json) - Kind: broker, recorded as having no API of its own - Newest reading: 2026-10-12 - Official documentation: [tickmill.com](https://www.tickmill.com/uk) - Platform APIs the record marks as offered: MetaTrader 4 (MQL4), MetaTrader 5 (Python package and MQL5) #### Claims - How you get a key: Platform access for most clients. Tickmill's UK site offers MetaTrader 4 and MetaTrader 5, with Expert Advisors available. Its Connectivity and API page lists third party futures platforms such as CQG, Sierra Chart and MultiCharts, and documents no API of Tickmill's own. The one API Tickmill names is a FIX connection, which its FAQ says is offered to large private and institutional clients with an account balance of at least 500,000 and at least 5,000 a month in commission, in pounds, dollars or euros. - Status: verified. Source: [Tickmill FAQ: FIX API connection](https://www.tickmill.com/about/faq/do-you-offer-fix-api-connection), checked 2026-10-12. - Status: verified. Source: [Tickmill UK, connectivity and API](https://www.tickmill.com/uk/connectivity-and-api), checked 2026-10-12. - Status: verified. Source: [Tickmill UK](https://www.tickmill.com/uk), checked 2026-10-12. - Demo: No: Tickmill's FAQ says there is no demo version of its FIX API connection. The demo account on its site is a platform demo for MetaTrader 4 and MetaTrader 5 with virtual funds, which expires after 7 days without a login attempt. - Status: verified. Source: [Tickmill FAQ: FIX API connection](https://www.tickmill.com/about/faq/do-you-offer-fix-api-connection), checked 2026-10-12. - Status: verified. Source: [Tickmill UK demo account](https://www.tickmill.com/uk/trading/demo-account), checked 2026-10-12. - Rate limits, as worded: No retail API. A FIX API is offered to large private and institutional clients (minimum balance 500,000, minimum monthly commission 5,000, no demo version), and the FAQ that describes it states no limit (re-read 12 Oct 2026). A page that states no limit is not evidence that there is none. - Status: verified. Source: [Tickmill FAQ: FIX API connection](https://www.tickmill.com/about/faq/do-you-offer-fix-api-connection), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: No - Streaming: Not recorded - Authentication described: Not recorded - Published rate limits: Not recorded - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ### Trading 212 - Page: https://openbrokerapi.com/brokers/trading-212 (markdown: https://openbrokerapi.com/brokers/trading-212.md, JSON: https://openbrokerapi.com/data/brokers/trading-212.json) - Kind: broker with an API of its own - Newest reading: 2026-10-12 - Official documentation: [docs.trading212.com](https://docs.trading212.com/api/section/rate-limiting) - Base address, recorded as "live": https://live.trading212.com - Base address, recorded as "demo": https://demo.trading212.com #### Claims - How you get a key: On the web or in the app: menu, Settings, API (Beta), Generate API key. A risk warning must be accepted first. You then name the key, choose its permissions and choose whether to restrict it to given IP addresses. A key and a secret are issued, and the secret is shown once. - Status: verified. Source: [Trading 212 help centre: Trading 212 API key](https://helpcentre.trading212.com/hc/en-us/articles/14584770928157-Trading-212-API-key), checked 2026-10-12. - Who can use it: The docs say the API is enabled and usable only for the Invest and Stocks ISA account types. - Status: verified. Source: [Trading 212 API docs: general information](https://docs.trading212.com/api), checked 2026-10-12. - Demo: Yes: the docs name a paper trading (demo) environment on its own host, demo.trading212.com, beside the live host. Documented paths start /api/v0 on both. - Status: verified. Source: [Trading 212 API docs: API environments](https://docs.trading212.com/api/section/general-information/api-environments), checked 2026-10-12. - Status: verified. Source: [Trading 212 API docs: accounts](https://docs.trading212.com/api/accounts), checked 2026-10-12. - Authentication: HTTP Basic: Authorization header of Basic base64(API_KEY:API_SECRET). - Status: verified. Source: [Trading 212 API docs: authentication](https://docs.trading212.com/api/section/authentication), checked 2026-10-12. - Streaming: None documented. REST plus polling only. - Status: unverified. No source opened. - Rate limits, as worded: Per endpoint, applied per account whatever the API key or IP: for example account summary at 1 request every 5 seconds, with the reset time in an x-ratelimit-reset header. - Status: verified. Source: [Trading 212 API docs: rate limiting](https://docs.trading212.com/api/section/rate-limiting), checked 2026-10-12. - Status: verified. Source: [Trading 212 API docs: accounts](https://docs.trading212.com/api/accounts), checked 2026-10-12. #### Limits - Headline limit: 1 req/5s, account summary (example) - Scope: account - Status: verified. Source: [docs.trading212.com](https://docs.trading212.com/api/section/rate-limiting), checked 2026-10-12. - Note: Limits are set per endpoint and applied per account; this is the account summary example from the docs, not a single global figure. A different endpoint on the same docs page carries a much higher limit, order placement (POST market order) at 50 requests a minute, about one call every 1.2 seconds, shown elsewhere on this site's re-verified note dated 23 Sep 2026. The two figures are not a contradiction: they are two different endpoints on one rate-limiting page, read account summary 22 Sep 2026 and order placement 23 Sep 2026. Build a rate limiter against the endpoint you actually call, not against either figure alone. #### Capability grid - Own API: Yes - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Not recorded - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Yes - Community MCP server: Yes - Platform APIs reachable: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Yes - Dated changes recorded: Yes #### Endpoints 16 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/trading-212.json - `GET /api/v0/equity/account/summary`: https://openbrokerapi.com/brokers/trading-212/endpoints/account-summary - `GET /api/v0/equity/history/dividends`: https://openbrokerapi.com/brokers/trading-212/endpoints/history-dividends - `GET /api/v0/equity/history/exports`: https://openbrokerapi.com/brokers/trading-212/endpoints/history-exports - `POST /api/v0/equity/history/exports`: https://openbrokerapi.com/brokers/trading-212/endpoints/post-history-exports - `GET /api/v0/equity/history/orders`: https://openbrokerapi.com/brokers/trading-212/endpoints/history-orders - `GET /api/v0/equity/history/transactions`: https://openbrokerapi.com/brokers/trading-212/endpoints/history-transactions - `GET /api/v0/equity/metadata/exchanges`: https://openbrokerapi.com/brokers/trading-212/endpoints/metadata-exchanges - `GET /api/v0/equity/metadata/instruments`: https://openbrokerapi.com/brokers/trading-212/endpoints/metadata-instruments - `GET /api/v0/equity/orders`: https://openbrokerapi.com/brokers/trading-212/endpoints/orders - `DELETE /api/v0/equity/orders/{id}`: https://openbrokerapi.com/brokers/trading-212/endpoints/delete-order - `GET /api/v0/equity/orders/{id}`: https://openbrokerapi.com/brokers/trading-212/endpoints/order-by-id - `POST /api/v0/equity/orders/limit`: https://openbrokerapi.com/brokers/trading-212/endpoints/post-orders-limit - `POST /api/v0/equity/orders/market`: https://openbrokerapi.com/brokers/trading-212/endpoints/post-orders-market - `POST /api/v0/equity/orders/stop`: https://openbrokerapi.com/brokers/trading-212/endpoints/post-orders-stop - `POST /api/v0/equity/orders/stop_limit`: https://openbrokerapi.com/brokers/trading-212/endpoints/post-orders-stop-limit - `GET /api/v0/equity/positions`: https://openbrokerapi.com/brokers/trading-212/endpoints/positions #### Error codes 8 recorded. Index: https://openbrokerapi.com/errors/trading-212 - `Bad filtering arguments`: HTTP 400, status verified, https://openbrokerapi.com/errors/trading-212/400-bad-filtering-arguments - `Failed validation`: HTTP 400, status verified, https://openbrokerapi.com/errors/trading-212/400-failed-validation - `HTTP 401`: HTTP 401, status verified, https://openbrokerapi.com/errors/trading-212/401-invalid-api-key - `HTTP 403`: HTTP 403, status unverified, https://openbrokerapi.com/errors/trading-212/403-missing-scope - `HTTP 429`: HTTP 429, status verified, https://openbrokerapi.com/errors/trading-212/429-rate-limit - `Missing Permissions`: HTTP 403, status verified, https://openbrokerapi.com/errors/trading-212/403-missing-permissions - `Order not found`: HTTP 404, status verified, https://openbrokerapi.com/errors/trading-212/404-order-not-found - `Timed-out`: HTTP 408, status verified, https://openbrokerapi.com/errors/trading-212/408-timed-out ### XTB - Page: https://openbrokerapi.com/brokers/xtb (markdown: https://openbrokerapi.com/brokers/xtb.md, JSON: https://openbrokerapi.com/data/brokers/xtb.json) - Kind: broker, recorded as having no API of its own - Newest reading: 2026-10-09 - Official documentation: [xtb.com](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools) #### Claims - How you get a key: None. XTB no longer offers API access. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - Who can use it: Not available. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - Demo: No - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - Authentication: Not applicable. XTB's help centre states that API access is no longer available and that the service was discontinued on 14 March 2025, so there is no authentication route left to document. Last looked for 9 Oct 2026. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - Streaming: Not applicable. XTB's help centre states that API access was discontinued on 14 March 2025, and streaming was part of that API. The page read on 9 Oct 2026 does not name the former streaming host. Last looked for 9 Oct 2026. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - History depth: Not applicable. No live API, so there is no history endpoint to have a depth. Last looked for 9 Oct 2026. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. - Rate limits, as worded: Not applicable. No live API, so no published limits apply. Last looked for 9 Oct 2026. - Status: verified. Source: [XTB help centre: Does XTB offer investment automation tools?](https://www.xtb.com/cy/help-center/our-platforms/does-xtb-offer-investment-automation-tools), checked 2026-10-09. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Own API: No - Documentation link: Yes - Demo or sandbox: No - Streaming: No - Authentication described: No - Published rate limits: No - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Platform APIs reachable: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes ## Platforms ### cTrader Open API - Page: https://openbrokerapi.com/platforms/ctrader (markdown: https://openbrokerapi.com/platforms/ctrader.md, JSON: https://openbrokerapi.com/data/platforms/ctrader.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [help.ctrader.com](https://help.ctrader.com/open-api/) - Base address, recorded as "live": live.ctraderapi.com:5035 (Protobuf), :5036 (JSON) - Base address, recorded as "demo": demo.ctraderapi.com:5035 (Protobuf), :5036 (JSON) #### Claims - How you get access: Register an app at openapi.ctrader.com; Spotware reviews new apps, so describe your use case in detail. - Status: verified. Source: [Creating a new application](https://help.ctrader.com/open-api/creating-new-app/), checked 2026-09-20. - Who can use it: Supported by all trading accounts of any cTrader affiliated brokers by default, which means both demo and live accounts. - Status: verified. Source: [cTrader Open API](https://help.ctrader.com/open-api/), checked 2026-09-20. - Demo: Yes: separate demo endpoint; demo and live environments are fully separated. - Status: verified. Source: [Proxies and endpoints](https://help.ctrader.com/open-api/proxies-endpoints/), checked 2026-09-21. - Authentication: OAuth 2.0 authorisation code flow: the auth code lives 1 minute, the access token 30 days. Scopes are accounts, which is read only, and trading, which is full. - Status: verified. Source: [Account authentication](https://help.ctrader.com/open-api/account-authentication/), checked 2026-09-20. - Streaming: Yes: spot quotes, depth of market and execution events on the same connection, at 50 requests a second per connection (5 for historical data) with a heartbeat every 10 seconds. Host live1.p.ctrader.com port 5035, SSL mandatory for TCP and WebSocket. Spotware recommends at most two connections, one demo and one live, each carrying an unlimited number of accounts of that type. - Status: verified. Source: [Messages](https://help.ctrader.com/open-api/messages/), checked 2026-09-20. - History depth: Trend bars and ticks by from/to timestamp with optional count; deals by range with maxRows. Cash flow history max 1 week per request. - Status: verified. Source: [Spotware OpenApiMessages.proto](https://github.com/spotware/openapi-proto-messages/blob/main/OpenApiMessages.proto), checked 2026-09-22. - Rate limits, as worded: 50 requests a second per connection for requests that are not for historical data, and 5 requests a second per connection for historical data requests, as stated on the cTrader Open API documentation home page, re-read 12 Oct 2026. - Status: verified. Source: [cTrader Open API documentation](https://help.ctrader.com/open-api/), checked 2026-10-12. #### Limits - Requests a second, not historical data: 50 requests per second - Scope: Per connection, requests that are not for historical data - Status: verified. Source: [help.ctrader.com](https://help.ctrader.com/open-api/), checked 2026-10-12. - Note: Historical data requests have their own lower limit, held in a separate record. - Requests a second, historical data: 5 requests per second - Scope: Per connection, historical data requests only - Status: verified. Source: [help.ctrader.com](https://help.ctrader.com/open-api/), checked 2026-10-12. #### Capability grid - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Yes - OpenAPI file here: Not recorded - Quickstart here: Yes - Dated changes recorded: Yes #### Functions and messages 49 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - cTrader Open API, a platform API interface of cTrader Open API: 49 messages (7 events, 23 requests, 19 responses), each is sent over an open TCP or WebSocket connection, as Protocol Buffers or as JSON. Index: https://openbrokerapi.com/platforms/ctrader/messages - `ProtoHeartbeatEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protoheartbeatevent - `ProtoOAAccountAuthReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountauthreq - `ProtoOAAccountAuthRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountauthres - `ProtoOAAccountDisconnectEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountdisconnectevent - `ProtoOAAccountLogoutReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountlogoutreq - `ProtoOAAccountLogoutRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountlogoutres - `ProtoOAAccountsTokenInvalidatedEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaaccountstokeninvalidatedevent - `ProtoOAAmendOrderReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaamendorderreq - `ProtoOAAmendPositionSLTPReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaamendpositionsltpreq - `ProtoOAApplicationAuthReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaapplicationauthreq - `ProtoOAApplicationAuthRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaapplicationauthres - `ProtoOACancelOrderReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooacancelorderreq - `ProtoOAClientDisconnectEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaclientdisconnectevent - `ProtoOAClosePositionReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaclosepositionreq - `ProtoOADealListReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooadeallistreq - `ProtoOADealListRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooadeallistres - `ProtoOAErrorRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaerrorres - `ProtoOAExecutionEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaexecutionevent - `ProtoOAExpectedMarginReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaexpectedmarginreq - `ProtoOAExpectedMarginRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaexpectedmarginres - `ProtoOAGetAccountListByAccessTokenReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagetaccountlistbyaccesstokenreq - `ProtoOAGetAccountListByAccessTokenRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagetaccountlistbyaccesstokenres - `ProtoOAGetTickDataReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagettickdatareq - `ProtoOAGetTickDataRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagettickdatares - `ProtoOAGetTrendbarsReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagettrendbarsreq - `ProtoOAGetTrendbarsRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooagettrendbarsres - `ProtoOANewOrderReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaneworderreq - `ProtoOAOrderErrorEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaordererrorevent - `ProtoOAOrderListReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaorderlistreq - `ProtoOAOrderListRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaorderlistres - `ProtoOAReconcileReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooareconcilereq - `ProtoOAReconcileRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooareconcileres - `ProtoOARefreshTokenReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooarefreshtokenreq - `ProtoOARefreshTokenRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooarefreshtokenres - `ProtoOASpotEvent` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaspotevent - `ProtoOASubscribeLiveTrendbarReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribelivetrendbarreq - `ProtoOASubscribeLiveTrendbarRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribelivetrendbarres - `ProtoOASubscribeSpotsReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribespotsreq - `ProtoOASubscribeSpotsRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasubscribespotsres - `ProtoOASymbolByIdReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolbyidreq - `ProtoOASymbolByIdRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolbyidres - `ProtoOASymbolsListReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolslistreq - `ProtoOASymbolsListRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooasymbolslistres - `ProtoOATraderReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooatraderreq - `ProtoOATraderRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooatraderres - `ProtoOAUnsubscribeSpotsReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaunsubscribespotsreq - `ProtoOAUnsubscribeSpotsRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaunsubscribespotsres - `ProtoOAVersionReq` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaversionreq - `ProtoOAVersionRes` (message, cTrader Open API): https://openbrokerapi.com/platforms/ctrader/messages/protooaversionres #### Error codes 53 recorded. Index: https://openbrokerapi.com/errors/ctrader - `1`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/oa-auth-token-expired - `1`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/unknown-error - `2`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/account-not-authorized - `2`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/unsupported-message - `3`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/invalid-request - `5`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/timeout-error - `6`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/entity-not-found - `7`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/cant-route-request - `8`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/frame-too-long - `9`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/market-closed - `10`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/concurrent-modification - `11`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/blocked-payload-type - `12`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ret-no-such-login - `14`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/already-logged-in - `35`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/incorrect-boundaries - `64`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ret-account-disabled - `67`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/connections-limit-exceeded - `68`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/worse-gsl-not-allowed - `69`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/symbol-has-holiday - `101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-client-auth-failure - `102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-client-not-authenticated - `103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-client-already-authenticated - `104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-access-token-invalid - `105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-server-not-reachable - `106`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-ctid-trader-account-not-found - `107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/ch-oa-client-not-found - `108`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/request-frequency-exceeded - `109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/server-is-under-maintenance - `110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/channel-is-blocked - `112`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/not-subscribed-to-spots - `113`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/already-subscribed - `114`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/symbol-not-found - `115`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/unknown-symbol - `117`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/no-quotes - `118`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/not-enough-money - `119`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/max-exposure-reached - `120`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/position-not-found - `121`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/order-not-found - `122`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/position-not-open - `123`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/position-locked - `124`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/too-many-positions - `125`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-bad-volume - `126`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-bad-stops - `127`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-bad-prices - `128`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-bad-stake - `129`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/protection-is-too-close-to-market - `130`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-bad-expiration-date - `131`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/pending-execution - `132`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-disabled - `133`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/trading-not-allowed - `134`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/unable-to-cancel-order - `135`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/unable-to-amend-order - `136`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/ctrader/short-selling-not-allowed ### DXtrade APIs - Page: https://openbrokerapi.com/platforms/dxtrade (markdown: https://openbrokerapi.com/platforms/dxtrade.md, JSON: https://openbrokerapi.com/data/platforms/dxtrade.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [demo.dx.trade](https://demo.dx.trade/developers/#/) - Base address, recorded as "broker": Varies by broker. Each broker or firm that offers DXtrade hosts its own, and the REST API sits under /dxsca-web on that host. The specification's own example is https://myhost.com/dxsca-web - Base address, recorded as "demo_portal": https://demo.dx.trade/dxsca-web #### Claims - How you get access: Client-side API exists, but you must go through your broker or prop firm, which controls permitted IPs. - Status: verified. Source: [Traders' FAQ](https://dx.trade/traders-faq/), checked 2026-09-21. - Who can use it: Broker or prop firm dependent; Devexperts does not deal with traders directly. - Status: verified. Source: [Traders' FAQ](https://dx.trade/traders-faq/), checked 2026-09-21. - Demo: No trader demo from Devexperts: the demo on the DXtrade website is for brokers and prop firms to trial the software. Ask your broker for a demo account. - Status: verified. Source: [DXtrade: Traders FAQ](https://dx.trade/traders-faq/), checked 2026-09-21. - Authentication: Unverified. The DXtrade developer portal at demo.dx.trade/developers returned only a page title without scripts on 12 Oct 2026, as it did in September, so the authentication scheme could not be read. Devexperts' APIs page links to that portal and states nothing itself. - Status: unverified. Source: [DXtrade developer portal (content did not render)](https://demo.dx.trade/developers/), checked 2026-10-12. - Streaming: Push API over WebSockets for account and market data updates. - Status: verified. Source: [Devexperts blog: DXtrade API suite](https://devexperts.com/blog/dxtrade-api-for-seamless-integration-with-brokerage-infrastructure/), checked 2026-09-21. - History depth: Unverified. The DXtrade developer portal returned only a page title without scripts on 12 Oct 2026, so candle and trade history depth could not be read. - Status: unverified. Source: [DXtrade developer portal (content did not render)](https://demo.dx.trade/developers/), checked 2026-10-12. - Rate limits, as worded: Unverified. The DXtrade developer portal, where a limit would be written, returned only a page title without scripts on 12 Oct 2026. Devexperts' APIs page and its traders FAQ, both opened that day, state no limit. That is not evidence that there is none, and the FAQ says each broker decides whether to open the API at all. - Status: unverified. Source: [DXtrade traders FAQ](https://dx.trade/traders-faq/), checked 2026-10-12. - Status: unverified. Source: [DXtrade APIs](https://dx.trade/apis/), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: No - Streaming: Yes - Authentication described: Not recorded - Published rate limits: Partial - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Not recorded - Dated changes recorded: Yes #### Endpoints 21 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/dxtrade.json - `POST /accounts/{accountCode}/close`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-account-close - `GET /accounts/{accountCode}/events`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-events - `GET /accounts/{accountCode}/instruments/query`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-instruments-query - `GET /accounts/{accountCode}/metrics`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-metrics - `GET /accounts/{accountCode}/orders`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-orders - `POST /accounts/{accountCode}/orders`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-account-orders - `PUT /accounts/{accountCode}/orders`: https://openbrokerapi.com/platforms/dxtrade/endpoints/put-account-orders - `DELETE /accounts/{accountCode}/orders/{orderCode}`: https://openbrokerapi.com/platforms/dxtrade/endpoints/delete-account-order - `GET /accounts/{accountCode}/orders/history`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-orders-history - `GET /accounts/{accountCode}/portfolio`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-portfolio - `GET /accounts/{accountCode}/positions`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-positions - `GET /accounts/{accountCode}/transfers`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-account-transfers - `GET /conversionRates`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-conversion-rates - `GET /instruments/{symbol}`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-instrument - `GET /instruments/query`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-instruments-query - `POST /login`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-login - `POST /loginByToken`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-login-by-token - `POST /logout`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-logout - `POST /marketdata`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-marketdata - `POST /ping`: https://openbrokerapi.com/platforms/dxtrade/endpoints/post-ping - `GET /users/{username}`: https://openbrokerapi.com/platforms/dxtrade/endpoints/get-user #### Functions and messages 8 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - DXtrade Push API, a platform API interface of DXtrade APIs: 8 messages (2 events, 6 requests), each is sent as JSON or XML over an open WebSocket connection; the records name WebSocket as the transport. Index: https://openbrokerapi.com/platforms/dxtrade/messages - `AccountMetricsSubscriptionRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/accountmetricssubscriptionrequest - `AccountPortfoliosCloseSubscriptionRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/accountportfoliosclosesubscriptionrequest - `AccountPortfoliosSubscriptionRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/accountportfoliossubscriptionrequest - `MarketDataCloseSubscriptionRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/marketdataclosesubscriptionrequest - `MarketDataSubscriptionRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/marketdatasubscriptionrequest - `Ping` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/ping - `PingRequest` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/pingrequest - `Reject` (message, DXtrade Push API): https://openbrokerapi.com/platforms/dxtrade/messages/reject #### Error codes 79 recorded. Index: https://openbrokerapi.com/errors/dxtrade - `1 Authorization required`: HTTP 401, status verified, https://openbrokerapi.com/errors/dxtrade/1-authorization-required - `2 Entity not found at server`: HTTP 404, status verified, https://openbrokerapi.com/errors/dxtrade/2-entity-not-found - `3 Incorrect username or password`: HTTP 401, status verified, https://openbrokerapi.com/errors/dxtrade/3-incorrect-login - `11 Malformed HMAC signature`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/11-malformed-hmac - `12 HMAC signature too old`: HTTP 401, status verified, https://openbrokerapi.com/errors/dxtrade/12-hmac-too-old - `13 HMAC signature mismatch`: HTTP 401, status verified, https://openbrokerapi.com/errors/dxtrade/13-hmac-mismatch - `31 Malformed query URI`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/31-malformed-query-uri - `32 Incorrect request parameters`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/32-incorrect-parameters - `33 Incorrect request`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/33-incorrect-request - `34 No proper permission is configured`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/34-no-permission - `35 Data not ready yet`: HTTP 404, status verified, https://openbrokerapi.com/errors/dxtrade/35-data-not-ready - `99 Conditional request required`: HTTP 403, status verified, https://openbrokerapi.com/errors/dxtrade/99-conditional-request - `100 Order with this id already exists`: HTTP 409, status verified, https://openbrokerapi.com/errors/dxtrade/100-order-id-exists - `101 Client-originated identifier is not valid`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/101-client-id-not-valid - `110 A system error has occurred`: HTTP 500, status verified, https://openbrokerapi.com/errors/dxtrade/110-system-error - `400 Bad Request`: HTTP 400, status verified, https://openbrokerapi.com/errors/dxtrade/http-400 - `401 Unauthorized`: HTTP 401, status verified, https://openbrokerapi.com/errors/dxtrade/http-401 - `403 Forbidden`: HTTP 403, status verified, https://openbrokerapi.com/errors/dxtrade/http-403 - `404 Not Found`: HTTP 404, status verified, https://openbrokerapi.com/errors/dxtrade/http-404 - `405 Method Not Allowed`: HTTP 405, status verified, https://openbrokerapi.com/errors/dxtrade/http-405 - `406 Not Acceptable`: HTTP 406, status verified, https://openbrokerapi.com/errors/dxtrade/http-406 - `409 Conflict`: HTTP 409, status verified, https://openbrokerapi.com/errors/dxtrade/http-409 - `412 Precondition Failed`: HTTP 412, status verified, https://openbrokerapi.com/errors/dxtrade/http-412 - `413 Request Entity Too Large`: HTTP 413, status verified, https://openbrokerapi.com/errors/dxtrade/http-413 - `415 Unsupported Media Type`: HTTP 415, status verified, https://openbrokerapi.com/errors/dxtrade/http-415 - `429 Too Many Requests`: HTTP 429, status verified, https://openbrokerapi.com/errors/dxtrade/http-429 - `500 Internal Server Error`: HTTP 500, status verified, https://openbrokerapi.com/errors/dxtrade/http-500 - `1005 Reference order is closed`: HTTP 409, status verified, https://openbrokerapi.com/errors/dxtrade/1005-reference-order-closed - `BusinessRejectReason 0 Other`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/businessrejectreason-0 - `BusinessRejectReason 1 Unknown ID`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/businessrejectreason-1 - `BusinessRejectReason 2 Unknown Security`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/businessrejectreason-2 - `BusinessRejectReason 3 Unsupported Message Type`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/businessrejectreason-3 - `BusinessRejectReason 5 Conditionally Required Field Missing`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/businessrejectreason-5 - `CONDITIONALLY_REQUIRED_FIELD_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-required-field-missing - `CxlRejReason 0 TOO_LATE_TO_CANCEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-0 - `CxlRejReason 1 UNKNOWN_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-1 - `CxlRejReason 2 BROKER_EXCHANGE_OPTION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-2 - `CxlRejReason 3 ORDER_ALREADY_IN_PENDING_CANCEL_OR_PENDING_REPLACE_STATUS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-3 - `CxlRejReason 5 ORIGORDMODTIME_DID_NOT_MATCH_LAST_TRANSACTTIME_OF_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-5 - `CxlRejReason 6 DUPLICATE_CLORDID_RECEIVED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-6 - `CxlRejReason 18 INVALID_PRICE_INCREMENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-18 - `CxlRejReason 99 OTHER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/cxlrejreason-99 - `INTERNAL_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-internal-error - `MARKET_CONDITIONS_CHANGED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-market-conditions - `NO_LIQUIDITY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-no-liquidity - `ORDER_CANNOT_BE_ACTIVATED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-order-not-activated - `ORDER_NOT_EXECUTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-order-not-executed - `ORDER_QUOTE_NOT_AVAILABLE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-quote-not-available - `ORDER_TOO_LATE_TO_CANCEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-too-late-to-cancel - `ORDER_TOO_LATE_TO_REPLACE_CANCEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-too-late-to-replace - `ORDER_UNEXPECTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-order-unexpected - `OrdRejReason 0 BROKER_EXCHANGE_OPTION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-0 - `OrdRejReason 1 UNKNOWN_SYMBOL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-1 - `OrdRejReason 2 EXCHANGE_CLOSED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-2 - `OrdRejReason 3 ORDER_EXCEEDS_LIMIT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-3 - `OrdRejReason 6 DUPLICATE_ORDER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-6 - `OrdRejReason 11 UNSUPPORTED_ORDER_CHARACTERISTIC`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-11 - `OrdRejReason 13 INCORRECT_QUANTITY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-13 - `OrdRejReason 15 UNKNOWN_ACCOUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-15 - `OrdRejReason 18 INVALID_PRICE_INCREMENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-18 - `OrdRejReason 99 OTHER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ordrejreason-99 - `OTHER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-other - `PBASED_MARKET_ORDER_REPLACE_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-market-order-replace - `PBASED_NO_POSITION_FOR_CLOSE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-no-position-for-close - `PBASED_ORDER_NOT_ENOUGH_WORKING_QUANTITY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-not-enough-working-qty - `PBASED_ORDER_WRONG_CLOSING_DIRECTION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-wrong-closing-direction - `PBASED_REPLACE_POSITION_QUANTITY_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-replace-position-qty - `Reject 429 Too Many Requests`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/push-reject-429 - `VALIDATION_FAILED_ACCOUNT_EXPIRED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-account-expired - `VALIDATION_FAILED_ACCOUNT_TERMINATED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-account-terminated - `VALIDATION_FAILED_INSTRUMENT_OUT_OF_TRADING_HOURS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-instrument-out-of-hours - `VALIDATION_FAILED_LIQUIDATION_IS_IN_PROGRESS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-liquidation-in-progress - `VALIDATION_FAILED_MAX_ORDER_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-max-order-size - `VALIDATION_FAILED_MIN_ORDER_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-min-order-size - `VALIDATION_FAILED_MIN_ORDER_SIZE_INCREMENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-min-size-increment - `VALIDATION_FAILED_NON_POSITIVE_PROSPECTIVE_BP`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-non-positive-bp - `VALIDATION_FAILED_OUT_OF_MARKET_HOURS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-out-of-market-hours - `VALIDATION_FAILED_POSITION_LIMIT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/fix-position-limit - `WebSocket close code 1013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/dxtrade/ws-close-1013 ### Match-Trader Platform API - Page: https://openbrokerapi.com/platforms/match-trader (markdown: https://openbrokerapi.com/platforms/match-trader.md, JSON: https://openbrokerapi.com/data/platforms/match-trader.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [docs.match-trade.com](https://docs.match-trade.com/docs/match-trader-api-documentation/) - Base address, recorded as "broker": Varies by broker. The Platform API reference gives no address for a broker's own platform. Its Get Platform Details call returns a platformUrl - Base address, recorded as "sandbox": https://mtr-demo-prod.match-trader.com #### Claims - How you get access: Log in with your Match-Trader credentials and broker ID; availability appears to be controlled by the broker. - Status: verified. Source: [Platform API](https://match-trader.com/technology/platform-api/), checked 2026-09-20. - Who can use it: Traders with an account at a broker that runs Match-Trader. Match-Trade's Platform API page says the API is designed primarily for traders, and that a broker on a server licence can selectively disable its functionality, so whether it works for you is the broker's decision. The page also says Match-Trader is not provided to individuals directly. - Status: verified. Source: [Match-Trader Platform API](https://match-trader.com/platform-api/), checked 2026-10-12. - Demo: Unverified. Match-Trade's Platform API page, re-read 12 Oct 2026, links a Try demo platform at demo.match-trader.com. That is a demo of the platform, and neither that page nor the documentation index says whether the API can be used against it or gives a demo API address. - Status: unverified. Source: [Match-Trader Platform API](https://match-trader.com/platform-api/), checked 2026-10-12. - Authentication: POST email, password and brokerId to /manager/co-login, or manager/login/co/with-token for a one time token. The co-auth cookie has Max-Age 3600 seconds and the refresh cookie rt has Max-Age 31536000 seconds, Secure and HttpOnly; refresh at manager/refresh-token with no body. Trading calls need the Auth-trading-api header taken from tradingAccounts plus the co-auth cookie. - Status: verified. Source: [Match-Trader Platform API PDF (2024)](https://docs.match-trade.com/wp-content/uploads/2024/05/MTR-Match-TraderPlatformAPI.pdf), checked 2026-09-21. - Streaming: Yes: WebSocket with STOMP for real-time market data and account updates. - Status: verified. Source: [Platform API](https://match-trader.com/technology/platform-api/), checked 2026-09-20. - History depth: Get candles and closed positions endpoints exist; no depth or per request limit found in public docs. - Status: verified. Source: [Match-Trade Platform API docs (Theneo)](https://app.theneo.io/match-trade/platform-api), checked 2026-09-22. - Rate limits, as worded: Not published - Status: verified. Source: [Match-Trader Platform API PDF (2024)](https://docs.match-trade.com/wp-content/uploads/2024/05/MTR-Match-TraderPlatformAPI.pdf), checked 2026-09-21. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: Partial - Streaming: Yes - Authentication described: Yes - Published rate limits: No - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Not recorded - Dated changes recorded: Yes #### Endpoints 17 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/match-trader.json - `POST /manager/mtr-login`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-mtr-login - `GET /manager/platform-details`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-platform-details - `POST /manager/refresh-token`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-refresh-token - `GET /mtr-api/{SYSTEM_UUID}/active-orders`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-active-orders - `GET /mtr-api/{SYSTEM_UUID}/balance`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-balance - `GET /mtr-api/{SYSTEM_UUID}/candles`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-candles - `POST /mtr-api/{SYSTEM_UUID}/closed-positions`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-closed-positions - `GET /mtr-api/{SYSTEM_UUID}/effective-instruments`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-effective-instruments - `GET /mtr-api/{SYSTEM_UUID}/open-positions`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-open-positions - `POST /mtr-api/{SYSTEM_UUID}/pending-order/cancel`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-pending-order-cancel - `POST /mtr-api/{SYSTEM_UUID}/pending-order/create`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-pending-order-create - `POST /mtr-api/{SYSTEM_UUID}/pending-order/edit`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-pending-order-edit - `POST /mtr-api/{SYSTEM_UUID}/position/close`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-position-close - `POST /mtr-api/{SYSTEM_UUID}/position/close-partially`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-position-close-partially - `POST /mtr-api/{SYSTEM_UUID}/position/edit`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-position-edit - `POST /mtr-api/{SYSTEM_UUID}/position/open`: https://openbrokerapi.com/platforms/match-trader/endpoints/post-position-open - `GET /mtr-api/{SYSTEM_UUID}/quotations`: https://openbrokerapi.com/platforms/match-trader/endpoints/get-quotations #### Error codes 3 recorded. Index: https://openbrokerapi.com/errors/match-trader - `400`: HTTP 400, status verified, https://openbrokerapi.com/errors/match-trader/400 - `401 Unauthorized`: HTTP 401, status verified, https://openbrokerapi.com/errors/match-trader/401-unauthorized - `410 Gone`: HTTP 410, status verified, https://openbrokerapi.com/errors/match-trader/410-gone ### MetaApi - Page: https://openbrokerapi.com/platforms/metaapi (markdown: https://openbrokerapi.com/platforms/metaapi.md, JSON: https://openbrokerapi.com/data/platforms/metaapi.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [metaapi.cloud](https://metaapi.cloud/docs/client/) - Base address, recorded as "region": Varies by region. The reference says the address in its examples is valid for the New York region only and that the addresses for other regions are on MetaApi's API access page - Base address, recorded as "new_york": https://mt-client-api-v1.new-york.agiliumtrade.ai - Base address, recorded as "new_york_market_data": https://mt-market-data-client-api-v1.new-york.agiliumtrade.ai #### Claims - How you get access: Self-serve retail sign-up at metaapi.cloud, then connect your existing MT4 or MT5 account at any MetaTrader broker. - Status: verified. Source: [MetaApi](https://metaapi.cloud/), checked 2026-09-21. - Who can use it: MetaApi's home page says the service supports any MetaTrader broker, with the same API for MT4 and MT5. You sign up yourself and add your own MetaTrader account. Adding an account means giving MetaApi the account's trading password so that its servers can connect to your broker, or the investor password for read only access. - Status: verified. Source: [MetaApi home page](https://metaapi.cloud/), checked 2026-10-12. - Status: verified. Source: [MetaApi documentation, FAQ](https://metaapi.cloud/docs/client/faq/), checked 2026-10-12. - Demo: Yes: MetaApi's FAQ says you can add a demo MetaTrader account to the service to try it without real trades, or give the investor password for read only access. There is no separate demo API environment: the same API is used, and what makes it a demo is the MetaTrader account you connect. - Status: verified. Source: [MetaApi documentation, FAQ](https://metaapi.cloud/docs/client/faq/), checked 2026-10-12. - Authentication: An authorisation token sent in the auth-token header of every REST request. You take the token from the MetaApi web application. An invalid token returns HTTP 401. - Status: verified. Source: [MetaApi documentation, authentication and authorisation](https://metaapi.cloud/docs/client/restApi/auth/), checked 2026-10-12. - Streaming: Yes: a WebSocket API on the socket.io protocol that pushes terminal state changes, quotes, candles, ticks and order book data in real time. MetaApi recommends it over REST for automated trading. Streaming does not use the CPU credits that REST and RPC calls use, but each account has its own market data streaming credits, and going over them downgrades the subscription. - Status: verified. Source: [MetaApi documentation, overview](https://metaapi.cloud/docs/client/), checked 2026-10-12. - Status: verified. Source: [MetaApi documentation, rate limiting](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - History depth: Unverified. MetaApi's home page says historical market data comes from your broker, and its documentation lists endpoints for history orders, deals, ticks and candles, but the pages opened on 12 Oct 2026 were not read for how far back a request can go or how many rows it returns. - Status: unverified. Source: [MetaApi documentation, overview](https://metaapi.cloud/docs/client/), checked 2026-10-12. - Rate limits, as worded: Limits are counted in CPU credits, not requests. Each REST or RPC call costs credits: most reads cost 50, a trade costs 10 and listing symbols costs 500. An application gets 1,000 credits a second, 6,000 a minute, 18,000 an hour and 43,200 per 6 hours, each multiplied by the number of accounts it has deployed. A single shared front end server allows 2,000 credits a second, a single account allows 5,000 credits per 10 seconds, and historical market data allows 5 concurrent requests per account. Going over returns HTTP 429 with a recommended retry time in the error. - Status: verified. Source: [MetaApi documentation, rate limiting](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. #### Limits - CPU credits per account: 5,000 CPU credits per 10 seconds - Scope: Per MetaTrader account. REST and RPC calls only - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - Note: The window is 10 seconds, which a single unit cannot state, so the figure stays as wording. - CPU credits an hour, per application: 18,000 credits per hour - Scope: Per application, multiplied by the number of accounts deployed to MetaApi. REST and RPC calls only, counted in CPU credits and not in requests - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - Note: Also 43,200 credits per 6 hours. - CPU credits a minute, per application: 6,000 credits per minute - Scope: Per application, multiplied by the number of accounts deployed to MetaApi. REST and RPC calls only, counted in CPU credits and not in requests - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - CPU credits a second, per application: 1,000 credits per second - Scope: Per application, multiplied by the number of accounts deployed to MetaApi. REST and RPC calls only, counted in CPU credits and not in requests - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - Note: Most read calls cost 50 credits, a trade costs 10 and listing symbols costs 500. Streaming uses no CPU credits. HTTP 429 with a recommended retry time on breach. - Concurrent historical market data requests: 5 concurrent requests - Scope: Per MetaTrader account, historical market data API only - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - CPU credits a second, per server: 2,000 credits per second - Scope: Per shared front end server. REST and RPC calls only, counted in CPU credits and not in requests - Status: verified. Source: [metaapi.cloud](https://metaapi.cloud/docs/client/rateLimiting/), checked 2026-10-12. - Note: Also 18,000 a minute, 180,000 an hour and 432,000 per 6 hours on one server. The page says a different client-id header selects a different server. #### Capability grid - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Yes - Authentication described: Yes - Published rate limits: Yes - Official SDK or library: Yes - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Not recorded - OpenAPI file here: Yes - Quickstart here: Not recorded - Dated changes recorded: Not recorded #### Endpoints 17 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/metaapi.json - `GET /users/current/accounts/{accountId}/account-information`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-account-information - `POST /users/current/accounts/{accountId}/calculate-margin`: https://openbrokerapi.com/platforms/metaapi/endpoints/post-calculate-margin - `GET /users/current/accounts/{accountId}/historical-market-data/symbols/{symbol}/timeframes/{timeframe}/candles`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-historical-candles - `GET /users/current/accounts/{accountId}/history-deals/position/{positionId}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-deals-by-position - `GET /users/current/accounts/{accountId}/history-deals/time/{startTime}/{endTime}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-deals-by-time - `GET /users/current/accounts/{accountId}/history-orders/time/{startTime}/{endTime}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-orders-by-time - `GET /users/current/accounts/{accountId}/orders`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-orders - `GET /users/current/accounts/{accountId}/orders/{orderId}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-order - `GET /users/current/accounts/{accountId}/positions`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-positions - `GET /users/current/accounts/{accountId}/positions/{positionId}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-position - `GET /users/current/accounts/{accountId}/server-time`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-server-time - `GET /users/current/accounts/{accountId}/symbols`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbols - `GET /users/current/accounts/{accountId}/symbols/{symbol}/current-candles/{timeframe}`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-candle - `GET /users/current/accounts/{accountId}/symbols/{symbol}/current-price`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-price - `GET /users/current/accounts/{accountId}/symbols/{symbol}/current-tick`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-tick - `GET /users/current/accounts/{accountId}/symbols/{symbol}/specification`: https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-specification - `POST /users/current/accounts/{accountId}/trade`: https://openbrokerapi.com/platforms/metaapi/endpoints/post-trade ### MetaCopier - Page: https://openbrokerapi.com/platforms/metacopier (markdown: https://openbrokerapi.com/platforms/metacopier.md, JSON: https://openbrokerapi.com/data/platforms/metacopier.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [docs.metacopier.io](https://docs.metacopier.io/) - Base address, recorded as "live": https://api.metacopier.io - Base address, recorded as "stream_live": wss://api.metacopier.io/ws/api/v1 #### Claims - How you get access: Retail self-serve sign-up at metacopier.io, with a USD 20 starting credit and metered daily usage based billing. - Status: verified. Source: [MetaCopier](https://metacopier.io/), checked 2026-09-21. - Who can use it: Unverified. MetaCopier's home page would not render without scripts on 12 Oct 2026, so who may sign up could not be re-read. Its documentation, which did open, lists the platforms an account can sit on, among them MetaTrader 4, MetaTrader 5, TradeLocker, cTrader, DXtrade and Match-Trader, and describes no broker permission step. - Status: unverified. Source: [MetaCopier documentation](https://docs.metacopier.io/), checked 2026-10-12. - Demo: Unverified. The MetaCopier documentation pages opened on 12 Oct 2026 (the REST API, SDK, access policy and Socket API pages) describe no demo or sandbox environment and do not say whether a demo trading account can be connected. That is not evidence that none exists. - Status: unverified. Source: [MetaCopier documentation, REST API](https://docs.metacopier.io/rest-api/api), checked 2026-10-12. - Authentication: API keys, of two kinds. A project level key, created under Projects then API Keys, reaches every account in the project. An account key is generated automatically when an account is created and reaches only that account. A key can carry an access policy that restricts endpoints, hides account fields and limits the IP addresses and origins it works from. The Socket API takes the same key in an api-key header on the STOMP CONNECT frame. - Status: verified. Source: [MetaCopier documentation, REST API](https://docs.metacopier.io/rest-api/api), checked 2026-10-12. - Status: verified. Source: [MetaCopier documentation, access policy](https://docs.metacopier.io/rest-api/access-policy), checked 2026-10-12. - Status: verified. Source: [MetaCopier documentation, Socket API](https://docs.metacopier.io/socket-api/api), checked 2026-10-12. - Streaming: Yes: a Socket API that speaks STOMP over a standard WebSocket connection, for real time updates of account information, history and open positions. One connection carries every account the key can reach, and accounts added later appear without reconnecting. The page notes that a connection may close after about 20 seconds without heartbeats. No SDK is offered for the Socket API. - Status: verified. Source: [MetaCopier documentation, Socket API](https://docs.metacopier.io/socket-api/api), checked 2026-10-12. - Status: verified. Source: [MetaCopier documentation, SDK](https://docs.metacopier.io/rest-api/sdk), checked 2026-10-12. - History depth: Unverified. The documentation pages opened on 12 Oct 2026 were not read for how far back history goes. The endpoint reference is a Swagger page that was not opened. - Status: unverified. Source: [MetaCopier documentation, REST API](https://docs.metacopier.io/rest-api/api), checked 2026-10-12. - Rate limits, as worded: Unverified. The REST API, access policy and Socket API pages of MetaCopier's documentation, opened on 12 Oct 2026, state no request rate limit. The endpoint reference is a Swagger page that was not opened. That is not evidence that there is no limit. - Status: unverified. Source: [MetaCopier documentation, REST API](https://docs.metacopier.io/rest-api/api), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: Not recorded - Streaming: Yes - Authentication described: Yes - Published rate limits: Not recorded - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Not recorded - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Not recorded ### MetaTrader 4 (MQL4) - Page: https://openbrokerapi.com/platforms/metatrader-4 (markdown: https://openbrokerapi.com/platforms/metatrader-4.md, JSON: https://openbrokerapi.com/data/platforms/metatrader-4.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [docs.mql4.com](https://docs.mql4.com/) #### Claims - How you get access: Install the MT4 terminal from a broker and write Expert Advisors or scripts in MQL4. - Status: verified. Source: [Install terminal (MT4 help)](https://www.metatrader4.com/en/trading-platform/help/userguide/installation), checked 2026-09-21. - Who can use it: Real accounts can only be opened by brokerage companies that offer MT4. - Status: verified. Source: [Opening of accounts (MT4 help)](https://www.metatrader4.com/en/trading-platform/help/userguide/open_an_account), checked 2026-09-21. - Demo: Yes: demo accounts can be opened from within the terminal. - Status: verified. Source: [Opening of accounts (MT4 help)](https://www.metatrader4.com/en/trading-platform/help/userguide/open_an_account), checked 2026-09-21. - Authentication: No API keys: code runs inside a terminal already logged in to a trading account. - Status: verified. Source: [MQL4 Reference](https://docs.mql4.com/), checked 2026-09-20. - Streaming: In-terminal events only (new tick, timer, depth changes); no external streaming API. - Status: verified. Source: [MQL4 Reference](https://docs.mql4.com/), checked 2026-09-20. - History depth: Bars limited to the terminal's max bars in chart. Closed orders limited to what the Account History tab has loaded. - Status: verified. Source: [MQL4 docs: CopyRates](https://docs.mql4.com/series/copyrates), checked 2026-09-22. - Rate limits, as worded: Not published - Status: verified. Source: [MQL4 Reference](https://docs.mql4.com/), checked 2026-09-20. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Partial - Authentication described: Yes - Published rate limits: No - Official SDK or library: Not recorded - Python library: Not recorded - Official MCP server: Not recorded - Community MCP server: Not recorded - Endpoints documented here: Not recorded - Error codes decoded here: Yes - OpenAPI file here: Not recorded - Quickstart here: Not recorded - Dated changes recorded: Yes #### Functions and messages 28 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - MQL4, a platform API interface of MetaTrader 4 (MQL4): 28 functions, called from an MQL4 program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-4/functions - `AccountBalance()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-accountbalance - `AccountEquity()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-accountequity - `AccountFreeMargin()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-accountfreemargin - `AccountFreeMarginCheck()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-accountfreemargincheck - `AccountInfoDouble()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-accountinfodouble - `CopyRates()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-copyrates - `iClose()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-iclose - `MarketInfo()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-marketinfo - `OrderClose()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderclose - `OrderCloseBy()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordercloseby - `OrderDelete()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderdelete - `OrderLots()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderlots - `OrderMagicNumber()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordermagicnumber - `OrderModify()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordermodify - `OrderOpenPrice()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderopenprice - `OrderProfit()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderprofit - `OrderSelect()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderselect - `OrderSend()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordersend - `OrdersHistoryTotal()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordershistorytotal - `OrderStopLoss()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderstoploss - `OrdersTotal()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderstotal - `OrderSymbol()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordersymbol - `OrderTakeProfit()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordertakeprofit - `OrderTicket()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-orderticket - `OrderType()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-ordertype - `RefreshRates()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-refreshrates - `SymbolInfoDouble()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-symbolinfodouble - `SymbolInfoTick()` (function, MQL4): https://openbrokerapi.com/platforms/metatrader-4/functions/mql4-symbolinfotick #### Error codes 161 recorded. Index: https://openbrokerapi.com/errors/mt4 - `0`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/0-err-no-error - `1`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/1-err-no-result - `2`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/2-err-common-error - `3`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/3-err-invalid-trade-parameters - `4`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4-err-server-busy - `5`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5-err-old-version - `6`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/6-err-no-connection - `7`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/7-err-not-enough-rights - `8`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/8-err-too-frequent-requests - `9`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/9-err-malfunctional-trade - `64`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/64-err-account-disabled - `65`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/65-err-invalid-account - `128`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/128-err-trade-timeout - `129`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/129-err-invalid-price - `130`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/130-err-invalid-stops - `131`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/131-err-invalid-trade-volume - `132`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/132-err-market-closed - `133`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/133-err-trade-disabled - `134`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/134-err-not-enough-money - `135`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/135-err-price-changed - `136`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/136-err-off-quotes - `137`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/137-err-broker-busy - `138`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/138-err-requote - `139`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/139-err-order-locked - `140 ERR_LONG_POSITIONS_ONLY_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/140 - `141`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/141-err-too-many-requests - `145`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/145-err-trade-modify-denied - `146`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/146-err-trade-context-busy - `147`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/147-err-trade-expiration-denied - `148`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/148-err-trade-too-many-orders - `149`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/149-err-trade-hedge-prohibited - `150`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/150-err-trade-prohibited-by-fifo - `4000`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4000-err-no-mqlerror - `4001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4001-err-wrong-function-pointer - `4002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4002-err-array-index-out-of-range - `4003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4003-err-no-memory-for-call-stack - `4004`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4004-err-recursive-stack-overflow - `4005 ERR_NOT_ENOUGH_STACK_FOR_PARAM`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4005 - `4006 ERR_NO_MEMORY_FOR_PARAM_STRING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4006 - `4007 ERR_NO_MEMORY_FOR_TEMP_STRING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4007 - `4008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4008-err-not-initialized-string - `4009 ERR_NOT_INITIALIZED_ARRAYSTRING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4009 - `4010 ERR_NO_MEMORY_FOR_ARRAYSTRING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4010 - `4011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4011-err-too-long-string - `4012 ERR_REMAINDER_FROM_ZERO_DIVIDE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4012 - `4013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4013-err-zero-divide - `4014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4014-err-unknown-command - `4015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4015-err-wrong-jump - `4016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4016-err-not-initialized-array - `4017`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4017-err-dll-calls-not-allowed - `4018`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4018-err-cannot-load-library - `4019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4019-err-cannot-call-function - `4020 ERR_EXTERNAL_CALLS_NOT_ALLOWED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4020 - `4021 ERR_NO_MEMORY_FOR_RETURNED_STR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4021 - `4022`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4022-err-system-busy - `4023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4023-err-dllfunc-criticalerror - `4024`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4024-err-internal-error - `4025`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4025-err-out-of-memory - `4026`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4026-err-invalid-pointer - `4027 ERR_FORMAT_TOO_MANY_FORMATTERS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4027 - `4028 ERR_FORMAT_TOO_MANY_PARAMETERS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4028 - `4029`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4029-err-array-invalid - `4030`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4030-err-chart-noreply - `4050 ERR_INVALID_FUNCTION_PARAMSCNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4050 - `4051 ERR_INVALID_FUNCTION_PARAMVALUE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4051 - `4052`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4052-err-string-function-internal - `4053`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4053-err-some-array-error - `4054 ERR_INCORRECT_SERIESARRAY_USING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4054 - `4055`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4055-err-custom-indicator-error - `4056`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4056-err-incompatible-arrays - `4057 ERR_GLOBAL_VARIABLES_PROCESSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4057 - `4058 ERR_GLOBAL_VARIABLE_NOT_FOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4058 - `4059 ERR_FUNC_NOT_ALLOWED_IN_TESTING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4059 - `4060`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4060-err-function-not-confirmed - `4061`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4061-err-send-mail-error - `4062 ERR_STRING_PARAMETER_EXPECTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4062 - `4063 ERR_INTEGER_PARAMETER_EXPECTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4063 - `4064 ERR_DOUBLE_PARAMETER_EXPECTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4064 - `4065 ERR_ARRAY_AS_PARAMETER_EXPECTED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4065 - `4066`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4066-err-history-will-updated - `4067`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4067-err-trade-error - `4068`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4068-err-resource-not-found - `4069`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4069-err-resource-not-supported - `4070`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4070-err-resource-duplicated - `4071`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4071-err-indicator-cannot-init - `4072`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4072-err-indicator-cannot-load - `4073`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4073-err-no-history-data - `4074`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4074-err-no-memory-for-history - `4075`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4075-err-no-memory-for-indicator - `4099`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4099-err-end-of-file - `4100`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4100-err-some-file-error - `4101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4101-err-wrong-file-name - `4102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4102-err-too-many-opened-files - `4103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4103-err-cannot-open-file - `4104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4104-err-incompatible-fileaccess - `4105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4105-err-no-order-selected - `4106`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4106-err-unknown-symbol - `4107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4107-err-invalid-price-param - `4108`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4108-err-invalid-ticket - `4109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4109-err-trade-not-allowed - `4110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4110-err-longs-not-allowed - `4111`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4111-err-shorts-not-allowed - `4112 ERR_TRADE_EXPERT_DISABLED_BY_SERVER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4112 - `4200`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4200-err-object-already-exists - `4201`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4201-err-unknown-object-property - `4202`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4202-err-object-does-not-exist - `4203`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4203-err-unknown-object-type - `4204`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4204-err-no-object-name - `4205`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4205-err-object-coordinates-error - `4206`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4206-err-no-specified-subwindow - `4207`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4207-err-some-object-error - `4210`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4210-err-chart-prop-invalid - `4211`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4211-err-chart-not-found - `4212`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4212-err-chartwindow-not-found - `4213`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4213-err-chartindicator-not-found - `4220`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4220-err-symbol-select - `4250`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4250-err-notification-error - `4251`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4251-err-notification-parameter - `4252`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4252-err-notification-settings - `4253 ERR_NOTIFICATION_TOO_FREQUENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4253 - `4260`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4260-err-ftp-noserver - `4261`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4261-err-ftp-nologin - `4262`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4262-err-ftp-connect-failed - `4263`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4263-err-ftp-closed - `4264`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4264-err-ftp-changedir - `4265`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4265-err-ftp-file-error - `4266`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/4266-err-ftp-error - `5001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5001-err-file-too-many-opened - `5002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5002-err-file-wrong-filename - `5003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5003-err-file-too-long-filename - `5004`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5004-err-file-cannot-open - `5005 ERR_FILE_BUFFER_ALLOCATION_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5005 - `5006`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5006-err-file-cannot-delete - `5007`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5007-err-file-invalid-handle - `5008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5008-err-file-wrong-handle - `5009`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5009-err-file-not-towrite - `5010`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5010-err-file-not-toread - `5011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5011-err-file-not-bin - `5012`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5012-err-file-not-txt - `5013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5013-err-file-not-txtorcsv - `5014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5014-err-file-not-csv - `5015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5015-err-file-read-error - `5016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5016-err-file-write-error - `5017`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5017-err-file-bin-stringsize - `5018`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5018-err-file-incompatible - `5019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5019-err-file-is-directory - `5020`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5020-err-file-not-exist - `5021`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5021-err-file-cannot-rewrite - `5022`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5022-err-file-wrong-directoryname - `5023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5023-err-file-directory-not-exist - `5024`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5024-err-file-not-directory - `5025 ERR_FILE_CANNOT_DELETE_DIRECTORY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5025 - `5026 ERR_FILE_CANNOT_CLEAN_DIRECTORY`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5026 - `5027`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5027-err-file-arrayresize-error - `5028`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5028-err-file-stringresize-error - `5029`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5029-err-file-struct-with-objects - `5200 ERR_WEBREQUEST_INVALID_ADDRESS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5200 - `5201 ERR_WEBREQUEST_CONNECT_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5201 - `5202`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5202-err-webrequest-timeout - `5203 ERR_WEBREQUEST_REQUEST_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/5203 - `65536`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt4/65536-err-user-error-first ### MetaTrader 5 (Python package and MQL5) - Page: https://openbrokerapi.com/platforms/metatrader-5 (markdown: https://openbrokerapi.com/platforms/metatrader-5.md, JSON: https://openbrokerapi.com/data/platforms/metatrader-5.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [mql5.com](https://www.mql5.com/en/docs/python_metatrader5) #### Claims - How you get access: Install the MT5 terminal from your broker, then pip install MetaTrader5 on Windows x86-64 or write MQL5 in MetaEditor. The terminal must be at build 4755 or later. - Status: verified. Source: [order_send](https://www.mql5.com/en/docs/python_metatrader5/mt5ordersend_py), checked 2026-09-20. - Who can use it: Real accounts come from brokers offering MT5; the API runs through your own local terminal. - Status: verified. Source: [Opening an account (MT5 help)](https://www.metatrader5.com/en/terminal/help/startworking/acc_open), checked 2026-09-21. - Demo: Yes: demo accounts can be opened from within the terminal. - Status: verified. Source: [Opening an account (MT5 help)](https://www.metatrader5.com/en/terminal/help/startworking/acc_open), checked 2026-09-21. - Authentication: No API keys: initialize() connects to the local terminal, optionally with account login, password and server. - Status: verified. Source: [initialize](https://www.mql5.com/en/docs/python_metatrader5/mt5initialize_py), checked 2026-09-20. - Streaming: No push API in Python: poll ticks and bars; market_book_add subscribes the terminal to depth events. MQL5 EAs get tick events. - Status: verified. Source: [MetaTrader for Python](https://www.mql5.com/en/docs/python_metatrader5), checked 2026-09-20. - History depth: Bars limited to the terminal's Max bars in chart setting. Deal history by date range with no stated limit. - Status: verified. Source: [MQL5 docs: copy_rates_from](https://www.mql5.com/en/docs/python_metatrader5/mt5copyratesfrom_py), checked 2026-09-22. - Rate limits, as worded: Not published. The Python page states none, carries no version and no date, and gives no consolidated error list beyond last_error() (read 22 Sep 2026). - Status: verified. Source: [MetaTrader for Python](https://www.mql5.com/en/docs/python_metatrader5), checked 2026-09-20. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Partial - Authentication described: Yes - Published rate limits: No - Official SDK or library: Yes - Python library: Yes - Official MCP server: Yes - Community MCP server: Yes - Endpoints documented here: Not recorded - Error codes decoded here: Yes - OpenAPI file here: Not recorded - Quickstart here: Yes - Dated changes recorded: Yes #### Functions and messages 78 recorded. These are not HTTP calls: they have no method and no path, and no OpenAPI file describes them. - MetaTrader5 Python package, a platform API interface of MetaTrader 5 (Python package and MQL5): 32 functions, called from a Python program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-5/functions - MQL5, a platform API interface of MetaTrader 5 (Python package and MQL5): 46 functions, called from an MQL5 program, not sent over HTTP. Index: https://openbrokerapi.com/platforms/metatrader-5/functions - `account_info()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-account-info - `copy_rates_from()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-copy-rates-from - `copy_rates_from_pos()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-copy-rates-from-pos - `copy_rates_range()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-copy-rates-range - `copy_ticks_from()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-copy-ticks-from - `copy_ticks_range()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-copy-ticks-range - `history_deals_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-history-deals-get - `history_deals_total()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-history-deals-total - `history_orders_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-history-orders-get - `history_orders_total()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-history-orders-total - `initialize()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-initialize - `last_error()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-last-error - `login()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-login - `market_book_add()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-market-book-add - `market_book_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-market-book-get - `market_book_release()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-market-book-release - `order_calc_margin()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-order-calc-margin - `order_calc_profit()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-order-calc-profit - `order_check()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-order-check - `order_send()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-order-send - `orders_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-orders-get - `orders_total()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-orders-total - `positions_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-positions-get - `positions_total()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-positions-total - `shutdown()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-shutdown - `symbol_info()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-symbol-info - `symbol_info_tick()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-symbol-info-tick - `symbol_select()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-symbol-select - `symbols_get()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-symbols-get - `symbols_total()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-symbols-total - `terminal_info()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-terminal-info - `version()` (function, MetaTrader5 Python package): https://openbrokerapi.com/platforms/metatrader-5/functions/python-version - `AccountInfoDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-accountinfodouble - `AccountInfoInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-accountinfointeger - `AccountInfoString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-accountinfostring - `CopyRates()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-copyrates - `CopyTicks()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-copyticks - `CopyTicksRange()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-copyticksrange - `HistoryDealGetDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealgetdouble - `HistoryDealGetInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealgetinteger - `HistoryDealGetString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealgetstring - `HistoryDealGetTicket()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealgetticket - `HistoryDealSelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealselect - `HistoryDealsTotal()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historydealstotal - `HistoryOrderGetDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyordergetdouble - `HistoryOrderGetInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyordergetinteger - `HistoryOrderGetString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyordergetstring - `HistoryOrderGetTicket()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyordergetticket - `HistoryOrderSelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyorderselect - `HistoryOrdersTotal()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyorderstotal - `HistorySelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyselect - `HistorySelectByPosition()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-historyselectbyposition - `OrderCalcMargin()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordercalcmargin - `OrderCalcProfit()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordercalcprofit - `OrderCheck()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordercheck - `OrderGetDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordergetdouble - `OrderGetInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordergetinteger - `OrderGetString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordergetstring - `OrderGetTicket()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordergetticket - `OrderSelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-orderselect - `OrderSend()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordersend - `OrderSendAsync()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-ordersendasync - `OrdersTotal()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-orderstotal - `PositionGetDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positiongetdouble - `PositionGetInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positiongetinteger - `PositionGetString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positiongetstring - `PositionGetSymbol()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positiongetsymbol - `PositionGetTicket()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positiongetticket - `PositionSelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positionselect - `PositionSelectByTicket()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positionselectbyticket - `PositionsTotal()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-positionstotal - `SymbolInfoDouble()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolinfodouble - `SymbolInfoInteger()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolinfointeger - `SymbolInfoString()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolinfostring - `SymbolInfoTick()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolinfotick - `SymbolName()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolname - `SymbolSelect()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolselect - `SymbolsTotal()` (function, MQL5): https://openbrokerapi.com/platforms/metatrader-5/functions/mql5-symbolstotal #### Error codes 311 recorded. Index: https://openbrokerapi.com/errors/mt5 - `-10005`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-internal-fail-timeout - `-10003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/minus-10003-res-e-internal-fail-init - `-10003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-internal-fail-connect - `-10002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-internal-fail-receive - `-10001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-internal-fail-send - `-10000`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-internal-fail - `-8`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/minus-8-res-e-auto-trading-disabled - `-7`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-unsupported - `-6`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-auth-failed - `-5`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-invalid-version - `-4`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-not-found - `-3`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-no-memory - `-2`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-invalid-params - `-1`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/res-e-fail - `0`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/0-err-success - `1`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/1-res-s-ok - `4001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4001-err-internal-error - `4002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4002-err-wrong-internal-parameter - `4003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4003-err-invalid-parameter - `4004`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4004-err-not-enough-memory - `4005 ERR_STRUCT_WITHOBJECTS_ORCLASS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4005 - `4006`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4006-err-invalid-array - `4007`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4007-err-array-resize-error - `4008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4008-err-string-resize-error - `4009`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4009-err-notinitialized-string - `4010`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4010-err-invalid-datetime - `4011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4011-err-array-bad-size - `4012`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4012-err-invalid-pointer - `4013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4013-err-invalid-pointer-type - `4014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4014-err-function-not-allowed - `4015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4015-err-resource-name-duplicated - `4016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4016-err-resource-not-found - `4017 ERR_RESOURCE_UNSUPPORTED_TYPE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4017 - `4018 ERR_RESOURCE_NAME_IS_TOO_LONG`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4018 - `4019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4019-err-math-overflow - `4020`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4020-err-sleep-error - `4022`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4022-err-program-stopped - `4023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4023-err-invalid-type - `4024`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4024-err-invalid-handle - `4025`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4025-err-too-many-objects - `4101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4101-err-chart-wrong-id - `4102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4102-err-chart-no-reply - `4103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4103-err-chart-not-found - `4104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4104-err-chart-no-expert - `4105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4105-err-chart-cannot-open - `4106`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4106-err-chart-cannot-change - `4107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4107-err-chart-wrong-parameter - `4108 ERR_CHART_CANNOT_CREATE_TIMER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4108 - `4109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4109-err-chart-wrong-property - `4110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4110-err-chart-screenshot-failed - `4111`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4111-err-chart-navigate-failed - `4112`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4112-err-chart-template-failed - `4113`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4113-err-chart-window-not-found - `4114 ERR_CHART_INDICATOR_CANNOT_ADD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4114 - `4115 ERR_CHART_INDICATOR_CANNOT_DEL`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4115 - `4116 ERR_CHART_INDICATOR_NOT_FOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4116 - `4201`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4201-err-object-error - `4202`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4202-err-object-not-found - `4203`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4203-err-object-wrong-property - `4204`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4204-err-object-getdate-failed - `4205`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4205-err-object-getvalue-failed - `4301`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4301-err-market-unknown-symbol - `4302`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4302-err-market-not-selected - `4303`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4303-err-market-wrong-property - `4304`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4304-err-market-lasttime-unknown - `4305`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4305-err-market-select-error - `4306`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4306-err-market-select-limit - `4307`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4307-err-market-session-index - `4401`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4401-err-history-not-found - `4402`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4402-err-history-wrong-property - `4403`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4403-err-history-timeout - `4404`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4404-err-history-bars-limit - `4405`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4405-err-history-load-errors - `4407`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4407-err-history-small-buffer - `4501`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4501-err-globalvariable-not-found - `4502`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4502-err-globalvariable-exists - `4503 ERR_GLOBALVARIABLE_NOT_MODIFIED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4503 - `4504 ERR_GLOBALVARIABLE_CANNOTREAD`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4504 - `4505 ERR_GLOBALVARIABLE_CANNOTWRITE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4505 - `4510`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4510-err-mail-send-failed - `4511`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4511-err-play-sound-failed - `4512`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4512-err-mql5-wrong-property - `4513`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4513-err-terminal-wrong-property - `4514`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4514-err-ftp-send-failed - `4515`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4515-err-notification-send-failed - `4516 ERR_NOTIFICATION_WRONG_PARAMETER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4516 - `4517 ERR_NOTIFICATION_WRONG_SETTINGS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4517 - `4518 ERR_NOTIFICATION_TOO_FREQUENT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4518 - `4519`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4519-err-ftp-noserver - `4520`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4520-err-ftp-nologin - `4521`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4521-err-ftp-file-error - `4522`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4522-err-ftp-connect-failed - `4523`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4523-err-ftp-changedir - `4601`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4601-err-buffers-no-memory - `4602`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4602-err-buffers-wrong-index - `4603`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4603-err-custom-wrong-property - `4701`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4701-err-account-wrong-property - `4751`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4751-err-trade-wrong-property - `4752`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4752-err-trade-disabled - `4753`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4753-err-trade-position-not-found - `4754`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4754-err-trade-order-not-found - `4755`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4755-err-trade-deal-not-found - `4756`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4756-err-trade-send-failed - `4758`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4758-err-trade-calc-failed - `4801`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4801-err-indicator-unknown-symbol - `4802`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4802-err-indicator-cannot-create - `4803`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4803-err-indicator-no-memory - `4804`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4804-err-indicator-cannot-apply - `4805`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4805-err-indicator-cannot-add - `4806`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4806-err-indicator-data-not-found - `4807`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4807-err-indicator-wrong-handle - `4808 ERR_INDICATOR_WRONG_PARAMETERS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4808 - `4809 ERR_INDICATOR_PARAMETERS_MISSING`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4809 - `4810`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4810-err-indicator-custom-name - `4811`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4811-err-indicator-parameter-type - `4812`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4812-err-indicator-wrong-index - `4901`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4901-err-books-cannot-add - `4902`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4902-err-books-cannot-delete - `4903`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4903-err-books-cannot-get - `4904`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/4904-err-books-cannot-subscribe - `5001`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5001-err-too-many-files - `5002`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5002-err-wrong-filename - `5003`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5003-err-too-long-filename - `5004`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5004-err-cannot-open-file - `5005`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5005-err-file-cachebuffer-error - `5006`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5006-err-cannot-delete-file - `5007`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5007-err-invalid-filehandle - `5008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5008-err-wrong-filehandle - `5009`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5009-err-file-nottowrite - `5010`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5010-err-file-nottoread - `5011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5011-err-file-notbin - `5012`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5012-err-file-nottxt - `5013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5013-err-file-nottxtorcsv - `5014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5014-err-file-notcsv - `5015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5015-err-file-readerror - `5016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5016-err-file-binstringsize - `5017`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5017-err-incompatible-file - `5018`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5018-err-file-is-directory - `5019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5019-err-file-not-exist - `5020`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5020-err-file-cannot-rewrite - `5021`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5021-err-wrong-directoryname - `5022`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5022-err-directory-not-exist - `5023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5023-err-file-isnot-directory - `5024`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5024-err-cannot-delete-directory - `5025`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5025-err-cannot-clean-directory - `5026`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5026-err-file-writeerror - `5027`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5027-err-file-endoffile - `5030`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5030-err-no-string-date - `5031`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5031-err-wrong-string-date - `5032`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5032-err-wrong-string-time - `5033`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5033-err-string-time-error - `5034`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5034-err-string-out-of-memory - `5035`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5035-err-string-small-len - `5036`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5036-err-string-too-bignumber - `5037`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5037-err-wrong-formatstring - `5038`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5038-err-too-many-formatters - `5039`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5039-err-too-many-parameters - `5040`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5040-err-wrong-string-parameter - `5041`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5041-err-stringpos-outofrange - `5042`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5042-err-string-zeroadded - `5043`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5043-err-string-unknowntype - `5044`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5044-err-wrong-string-object - `5050`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5050-err-incompatible-arrays - `5051`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5051-err-small-asseries-array - `5052`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5052-err-small-array - `5053`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5053-err-zerosize-array - `5054`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5054-err-number-arrays-only - `5055`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5055-err-onedim-arrays-only - `5056`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5056-err-series-array - `5057`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5057-err-double-array-only - `5058`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5058-err-float-array-only - `5059`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5059-err-long-array-only - `5060`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5060-err-int-array-only - `5061`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5061-err-short-array-only - `5062`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5062-err-char-array-only - `5063`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5063-err-string-array-only - `5100`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5100-err-opencl-not-supported - `5101`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5101-err-opencl-internal - `5102`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5102-err-opencl-invalid-handle - `5103`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5103-err-opencl-context-create - `5104`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5104-err-opencl-queue-create - `5105`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5105-err-opencl-program-create - `5106 ERR_OPENCL_TOO_LONG_KERNEL_NAME`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5106 - `5107`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5107-err-opencl-kernel-create - `5108 ERR_OPENCL_SET_KERNEL_PARAMETER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5108 - `5109`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5109-err-opencl-execute - `5110`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5110-err-opencl-wrong-buffer-size - `5111 ERR_OPENCL_WRONG_BUFFER_OFFSET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5111 - `5112`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5112-err-opencl-buffer-create - `5113`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5113-err-opencl-too-many-objects - `5114`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5114-err-opencl-selectdevice - `5120`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5120-err-database-internal - `5121`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5121-err-database-invalid-handle - `5122 ERR_DATABASE_TOO_MANY_OBJECTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5122 - `5123`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5123-err-database-connect - `5124`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5124-err-database-execute - `5125`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5125-err-database-prepare - `5126`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5126-err-database-no-more-data - `5127`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5127-err-database-step - `5128`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5128-err-database-not-ready - `5129`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5129-err-database-bind-parameters - `5200 ERR_WEBREQUEST_INVALID_ADDRESS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5200 - `5201 ERR_WEBREQUEST_CONNECT_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5201 - `5202`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5202-err-webrequest-timeout - `5203 ERR_WEBREQUEST_REQUEST_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5203 - `5270`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5270-err-netsocket-invalidhandle - `5271 ERR_NETSOCKET_TOO_MANY_OPENED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5271 - `5272`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5272-err-netsocket-cannot-connect - `5273`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5273-err-netsocket-io-error - `5274 ERR_NETSOCKET_HANDSHAKE_FAILED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5274 - `5275`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5275-err-netsocket-no-certificate - `5300`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5300-err-not-custom-symbol - `5301`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5301-err-custom-symbol-wrong-name - `5302`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5302-err-custom-symbol-name-long - `5303`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5303-err-custom-symbol-path-long - `5304`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5304-err-custom-symbol-exist - `5305`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5305-err-custom-symbol-error - `5306`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5306-err-custom-symbol-selected - `5307 ERR_CUSTOM_SYMBOL_PROPERTY_WRONG`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5307 - `5308 ERR_CUSTOM_SYMBOL_PARAMETER_ERROR`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5308 - `5309 ERR_CUSTOM_SYMBOL_PARAMETER_LONG`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5309 - `5310`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5310-err-custom-ticks-wrong-order - `5400`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5400-err-calendar-more-data - `5401`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5401-err-calendar-timeout - `5402`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5402-err-calendar-no-data - `5601`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5601-err-database-error - `5602`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5602-err-database-logic - `5603`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5603-err-database-perm - `5604`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5604-err-database-abort - `5605`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5605-err-database-busy - `5606`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5606-err-database-locked - `5607`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5607-err-database-nomem - `5608`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5608-err-database-readonly - `5609`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5609-err-database-interrupt - `5610`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5610-err-database-ioerr - `5611`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5611-err-database-corrupt - `5612`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5612-err-database-notfound - `5613`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5613-err-database-full - `5614`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5614-err-database-cantopen - `5615`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5615-err-database-protocol - `5616`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5616-err-database-empty - `5617`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5617-err-database-schema - `5618`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5618-err-database-toobig - `5619`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5619-err-database-constraint - `5620`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5620-err-database-mismatch - `5621`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5621-err-database-misuse - `5622`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5622-err-database-nolfs - `5623`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5623-err-database-auth - `5624`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5624-err-database-format - `5625`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5625-err-database-range - `5626`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5626-err-database-notadb - `5700`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5700-err-matrix-internal - `5701`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5701-err-matrix-not-initialized - `5702`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5702-err-matrix-inconsistent - `5703`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5703-err-matrix-invalid-size - `5704`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5704-err-matrix-invalid-type - `5705`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5705-err-matrix-func-not-allowed - `5706`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5706-err-matrix-contains-nan - `5707`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5707-err-matrix-openblas - `5708 ERR_MATRIX_OPENBLAS_PARAMETER`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5708 - `5800`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5800-err-onnx-internal - `5801`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5801-err-onnx-not-initialized - `5802`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5802-err-onnx-not-supported - `5803`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5803-err-onnx-run-failed - `5804 ERR_ONNX_INVALID_PARAMETERS_COUNT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5804 - `5805`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5805-err-onnx-invalid-parameter - `5806 ERR_ONNX_INVALID_PARAMETER_TYPE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5806 - `5807 ERR_ONNX_INVALID_PARAMETER_SIZE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5807 - `5808`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/5808-err-onnx-wrong-dimension - `10004`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-requote - `10006`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-reject - `10007`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10007-trade-retcode-cancel - `10008`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10008-trade-retcode-placed - `10009`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10009-trade-retcode-done - `10010`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10010-trade-retcode-done-partial - `10011`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10011-trade-retcode-error - `10012`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10012-trade-retcode-timeout - `10013`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-invalid - `10014`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-invalid-volume - `10015`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-invalid-price - `10016`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-invalid-stops - `10017 TRADE_RETCODE_TRADE_DISABLED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10017 - `10018`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-market-closed - `10019`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-no-money - `10020`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10020-trade-retcode-price-changed - `10021`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10021-trade-retcode-price-off - `10022 TRADE_RETCODE_INVALID_EXPIRATION`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10022 - `10023`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10023-trade-retcode-order-changed - `10024 TRADE_RETCODE_TOO_MANY_REQUESTS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10024 - `10025`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10025-trade-retcode-no-changes - `10026 TRADE_RETCODE_SERVER_DISABLES_AT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10026 - `10027`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/trade-retcode-client-disables-at - `10028`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10028-trade-retcode-locked - `10029`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10029-trade-retcode-frozen - `10030`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10030 - `10031`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10031-trade-retcode-connection - `10032`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10032-trade-retcode-only-real - `10033`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10033-trade-retcode-limit-orders - `10034`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10034-trade-retcode-limit-volume - `10035`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10035-trade-retcode-invalid-order - `10036 TRADE_RETCODE_POSITION_CLOSED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10036 - `10038 TRADE_RETCODE_INVALID_CLOSE_VOLUME`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10038 - `10039 TRADE_RETCODE_CLOSE_ORDER_EXIST`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10039 - `10040 TRADE_RETCODE_LIMIT_POSITIONS`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10040 - `10041`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10041-trade-retcode-reject-cancel - `10042`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10042-trade-retcode-long-only - `10043`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10043-trade-retcode-short-only - `10044`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10044-trade-retcode-close-only - `10045`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10045-trade-retcode-fifo-close - `10046 TRADE_RETCODE_HEDGE_PROHIBITED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/10046 - `65536`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/mt5/65536-err-user-error-first ### TradeLocker API - Page: https://openbrokerapi.com/platforms/tradelocker (markdown: https://openbrokerapi.com/platforms/tradelocker.md, JSON: https://openbrokerapi.com/data/platforms/tradelocker.json) - Kind: platform API - Newest reading: 2026-10-12 - Official documentation: [public-api.tradelocker.com](https://public-api.tradelocker.com/) - Base address, recorded as "live": https://live.tradelocker.com/backend-api/ - Base address, recorded as "demo": https://demo.tradelocker.com/backend-api/ #### Claims - How you get access: Use your TradeLocker login (email, password, server) against the public REST API; no separate app registration found. - Status: verified. Source: [TradeLocker API connectivity](https://tradelocker.com/integrate-tradelocker/connectivity/), checked 2026-09-21. - Who can use it: TradeLocker users only, via a broker or prop firm that offers TradeLocker. - Status: verified. Source: [Getting Started with TradeLocker Public API](https://public-api.tradelocker.com/), checked 2026-09-20. - Demo: Yes: separate demo environment at demo.tradelocker.com. - Status: verified. Source: [Getting Started with TradeLocker Public API](https://public-api.tradelocker.com/), checked 2026-09-20. - Authentication: POST email, password and server to /auth/jwt/token; send the JWT as Bearer token; refresh tokens issued. /trade/\* routes also need the accNum header (not the accountId). - Status: verified. Source: [Getting Started with TradeLocker Public API](https://public-api.tradelocker.com/), checked 2026-09-20. - Streaming: Unverified. TradeLocker's public API documentation, re-read 12 Oct 2026, describes a request and response REST API only, and its index of pages lists no streaming page. The record's API family names a Streams API from an earlier reading that could not be confirmed on a page that opens today. - Status: unverified. Source: [TradeLocker public API, getting started](https://public-api.tradelocker.com/docs/getting-started), checked 2026-10-12. - History depth: /trade/history by resolution (1m to 1M) and from/to; max rows per request and orders history rows come from /trade/config. - Status: verified. Source: [TradeLocker Public API docs](https://public-api.tradelocker.com/), checked 2026-09-20. - Rate limits, as worded: Per route limits only, served at runtime by the /trade/config route as a number of requests per interval of seconds or minutes. The documentation publishes no fixed figure and gives 2 requests a second only as an example of the form. A tl-developer-api-key header, issued through the TradeLocker Developer Program, gets less restrictive limits. Separately, a request for historical bars is rejected if it would return more than 20,000 bars. - Status: verified. Source: [TradeLocker public API, getting started](https://public-api.tradelocker.com/docs/getting-started), checked 2026-10-12. - Status: verified. Source: [TradeLocker public API, index of pages](https://public-api.tradelocker.com/llms.txt), checked 2026-10-12. #### Limits No limit record is held. That is a gap in this dataset, not a statement that there is no limit. #### Capability grid - Documentation link: Yes - Demo or sandbox: Yes - Streaming: Not recorded - Authentication described: Yes - Published rate limits: Partial - Official SDK or library: Yes - Python library: Yes - Official MCP server: Not recorded - Community MCP server: Not recorded - Endpoints documented here: Yes - Error codes decoded here: Yes - OpenAPI file here: Yes - Quickstart here: Not recorded - Dated changes recorded: Yes #### Endpoints 23 recorded. As an OpenAPI file: https://openbrokerapi.com/specs/tradelocker.json - `GET /auth/jwt/all-accounts`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-auth-jwt-all-accounts - `POST /auth/jwt/refresh`: https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-refresh - `POST /auth/jwt/token`: https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-token - `GET /trade/accounts`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-accounts - `GET /trade/accounts/{accountId}/instruments`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-instruments - `DELETE /trade/accounts/{accountId}/orders`: https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-orders - `GET /trade/accounts/{accountId}/orders`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders - `POST /trade/accounts/{accountId}/orders`: https://openbrokerapi.com/platforms/tradelocker/endpoints/post-account-orders - `GET /trade/accounts/{accountId}/ordersHistory`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders-history - `DELETE /trade/accounts/{accountId}/positions`: https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-positions - `GET /trade/accounts/{accountId}/positions`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-positions - `GET /trade/accounts/{accountId}/state`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-state - `GET /trade/config`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-config - `GET /trade/dailyBar`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-daily-bar - `GET /trade/history`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-history - `GET /trade/instruments/{tradableInstrumentId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-instrument-details - `DELETE /trade/orders/{orderId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-order - `PATCH /trade/orders/{orderId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-order - `DELETE /trade/positions/{positionId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-position - `PATCH /trade/positions/{positionId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-position - `GET /trade/quotes`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-quotes - `GET /trade/sessions/{sessionId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-session - `GET /trade/sessionStatuses/{sessionStatusId}`: https://openbrokerapi.com/platforms/tradelocker/endpoints/get-session-status #### Error codes 5 recorded. Index: https://openbrokerapi.com/errors/tradelocker - `400 Bad Request`: HTTP 400, status verified, https://openbrokerapi.com/errors/tradelocker/400-bad-request - `401 Unauthorized`: HTTP 401, status verified, https://openbrokerapi.com/errors/tradelocker/401-unauthorized - `403 Forbidden`: HTTP 403, status verified, https://openbrokerapi.com/errors/tradelocker/403-forbidden - `404 Not Found`: HTTP 404, status verified, https://openbrokerapi.com/errors/tradelocker/404-not-found - `no_data`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tradelocker/no-data ## Errors that belong to no broker Standards, languages and tools a trading API client meets: each has its own set of error pages. ### curl 7 recorded. Index: https://openbrokerapi.com/errors/curl. Defined by: [libcurl error codes](https://curl.se/libcurl/c/libcurl-errors.html) - `CURLE_COULDNT_CONNECT (7)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/7 - `CURLE_COULDNT_RESOLVE_HOST (6)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/6 - `CURLE_GOT_NOTHING (52)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/52 - `CURLE_OPERATION_TIMEDOUT (28)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/28 - `CURLE_PEER_FAILED_VERIFICATION (60)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/60 - `CURLE_RECV_ERROR (56)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/56 - `CURLE_SSL_CONNECT_ERROR (35)`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/curl/35 ### HTTP 19 recorded. Index: https://openbrokerapi.com/errors/http. Defined by: [RFC 9110, HTTP Semantics](https://www.rfc-editor.org/rfc/rfc9110.html) - `400 Bad Request`: HTTP 400, status verified, https://openbrokerapi.com/errors/http/400 - `401 Unauthorized`: HTTP 401, status verified, https://openbrokerapi.com/errors/http/401 - `403 Forbidden`: HTTP 403, status verified, https://openbrokerapi.com/errors/http/403 - `404 Not Found`: HTTP 404, status verified, https://openbrokerapi.com/errors/http/404 - `405 Method Not Allowed`: HTTP 405, status verified, https://openbrokerapi.com/errors/http/405 - `406 Not Acceptable`: HTTP 406, status verified, https://openbrokerapi.com/errors/http/406 - `408 Request Timeout`: HTTP 408, status verified, https://openbrokerapi.com/errors/http/408 - `409 Conflict`: HTTP 409, status verified, https://openbrokerapi.com/errors/http/409 - `413 Content Too Large`: HTTP 413, status verified, https://openbrokerapi.com/errors/http/413 - `415 Unsupported Media Type`: HTTP 415, status verified, https://openbrokerapi.com/errors/http/415 - `422 Unprocessable Content`: HTTP 422, status verified, https://openbrokerapi.com/errors/http/422 - `426 Upgrade Required`: HTTP 426, status verified, https://openbrokerapi.com/errors/http/426 - `429 Too Many Requests`: HTTP 429, status verified, https://openbrokerapi.com/errors/http/429 - `500 Internal Server Error`: HTTP 500, status verified, https://openbrokerapi.com/errors/http/500 - `501 Not Implemented`: HTTP 501, status verified, https://openbrokerapi.com/errors/http/501 - `502 Bad Gateway`: HTTP 502, status verified, https://openbrokerapi.com/errors/http/502 - `503 Service Unavailable`: HTTP 503, status verified, https://openbrokerapi.com/errors/http/503 - `504 Gateway Timeout`: HTTP 504, status verified, https://openbrokerapi.com/errors/http/504 - `Retry-After`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/http/retry-after ### Node.js 5 recorded. Index: https://openbrokerapi.com/errors/nodejs. Defined by: [Node.js documentation, Errors](https://nodejs.org/api/errors.html) - `ECONNREFUSED`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/nodejs/econnrefused - `ECONNRESET`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/nodejs/econnreset - `ENOTFOUND`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/nodejs/enotfound - `EPIPE`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/nodejs/epipe - `ETIMEDOUT`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/nodejs/etimedout ### OAuth 2.0 8 recorded. Index: https://openbrokerapi.com/errors/oauth. Defined by: [RFC 6749, The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749.html) - `insufficient_scope`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/insufficient-scope - `invalid_client`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/invalid-client - `invalid_grant`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/invalid-grant - `invalid_request`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/invalid-request - `invalid_scope`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/invalid-scope - `invalid_token`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/invalid-token - `unauthorized_client`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/unauthorized-client - `unsupported_grant_type`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/oauth/unsupported-grant-type ### Python 10 recorded. Index: https://openbrokerapi.com/errors/python. Defined by: [The Python Standard Library documentation](https://docs.python.org/3/library/exceptions.html) - `asyncio.CancelledError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/asyncio-cancelled-error - `asyncio.TimeoutError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/asyncio-timeout-error - `BrokenPipeError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/broken-pipe-error - `ConnectionRefusedError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/connection-refused-error - `ConnectionResetError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/connection-reset-error - `json.JSONDecodeError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/json-json-decode-error - `socket.gaierror`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/socket-gaierror - `ssl.SSLCertVerificationError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/ssl-ssl-cert-verification-error - `ssl.SSLError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/ssl-ssl-error - `TimeoutError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python/timeout-error ### Requests and urllib3 12 recorded. Index: https://openbrokerapi.com/errors/python-requests. Defined by: [Requests documentation, Exceptions](https://requests.readthedocs.io/en/latest/api/#exceptions) - `requests.exceptions.ChunkedEncodingError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/chunked-encoding-error - `requests.exceptions.ConnectionError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/connection-error - `requests.exceptions.ConnectTimeout`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/connect-timeout - `requests.exceptions.HTTPError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/http-error - `requests.exceptions.JSONDecodeError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/json-decode-error - `requests.exceptions.ReadTimeout`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/read-timeout - `requests.exceptions.SSLError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/ssl-error - `requests.exceptions.Timeout`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/timeout - `requests.exceptions.TooManyRedirects`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/too-many-redirects - `urllib3.exceptions.MaxRetryError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/max-retry-error - `urllib3.exceptions.NewConnectionError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/new-connection-error - `urllib3.exceptions.ProtocolError`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/python-requests/protocol-error ### TLS 5 recorded. Index: https://openbrokerapi.com/errors/tls. Defined by: [RFC 8446, The Transport Layer Security (TLS) Protocol Version 1.3](https://www.rfc-editor.org/rfc/rfc8446.html) - `bad_certificate`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tls/bad-certificate - `certificate_expired`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tls/certificate-expired - `handshake_failure`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tls/handshake-failure - `protocol_version`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tls/protocol-version - `unknown_ca`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/tls/unknown-ca ### WebSocket 12 recorded. Index: https://openbrokerapi.com/errors/websocket. Defined by: [RFC 6455, The WebSocket Protocol](https://www.rfc-editor.org/rfc/rfc6455.html) - `1000 Normal Closure`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1000 - `1001 Going Away`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1001 - `1002 Protocol error`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1002 - `1003 Unsupported Data`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1003 - `1006 Abnormal Closure`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1006 - `1007 Invalid frame payload data`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1007 - `1008 Policy Violation`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1008 - `1009 Message Too Big`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1009 - `1011 Internal Error`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1011 - `1012 Service Restart`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1012 - `1013 Try Again Later`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1013 - `1015 TLS handshake`: HTTP not recorded, status verified, https://openbrokerapi.com/errors/websocket/1015 ## Licence and how to cite The limit lines come from the limits register, which is CC BY 4.0 (https://openbrokerapi.com/data/limits.json). The capability lines come from the capability grid, also CC BY 4.0 (https://openbrokerapi.com/data/capabilities.json). Everything else comes from the broker, platform, endpoint, function, message and error records, which are all rights reserved and are given here for reference: the same reference fields as the files at https://openbrokerapi.com/data, with the address of the page each one is on. This file is not itself one of the CC BY 4.0 downloads. Cite as: Broker API Hub, https://openbrokerapi.com/llms-full.txt, newest check 2026-10-12. Where you rely on a single figure, cite the source and the checked date printed beside it. Where this file and a broker's own documentation differ, the documentation wins.