Broker APIs with authentication described
Authentication is how an API knows a request is yours: a key or token sent with every request, a login call that returns a session token, or OAuth. You need to know which before you can make a first call.
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.
Not recorded means this site holds no record. It does not mean the broker or platform lacks it. Rows are in name order, the order is not a ranking, and nothing here recommends a broker.
How each row is decided
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.
- Yes
- A record on this site says so: a structured field, a record that exists, or a sentence in a record that was read and entered in the capability facts register, with the reason printed beside it. 19 of the 29 rows below.
- Partial
- A sentence in a record gives part of it: one route and not another, or a demo of the platform and not of the API. The reading is a row of the capability facts register, and the reason and the scope are printed beside it. 1 of the 29 rows below.
- No
- A record on this site says no: a structured field set to false, or a sentence in a record that says so, read and entered in the capability facts register. 1 of the 29 rows below.
- Not recorded
- This site holds no yes or no for it. That is a gap in this dataset. It is not a statement that the broker or platform lacks the capability. 8 of the 29 rows below.
3 of the rows rest on a record that is labelled unverified. Each says so beside its source.
Brokers
| Record | State | What the record holds | Source and date |
|---|---|---|---|
| Axi | Not recorded | The record holds no statement about authentication. | No record held |
| Bitget | Yes | The record says every REST request carries four access headers, with a signature made by HMAC SHA256 or with an RSA private key.
| Bitget API quick start, Header and Signaturechecked |
| Capital.com | Yes | The record says a POST to /session with the API key header and login credentials returns two session tokens that are sent on later calls.
| Capital.com Public APIchecked |
| CMC Markets | Not recorded | The record holds no statement about authentication. | No record held |
| Deriv | Yes | The record says an OAuth 2.0 app or a Personal Access Token is used, and that either way the token is sent as a bearer token.
| Deriv API: authenticationchecked |
| Dukascopy | Yes | The record says the JForex API connects with a username and password, and the FIX API with a Logon message over an SSL socket from an agreed IP address.
| Dukascopy wiki, JForex SDK LIVE modechecked |
| eToro | Yes | The record says requests carry the x-api-key, x-user-key and x-request-id headers, or an OAuth 2.0 bearer token in place of the key headers.
| eToro API portal: authenticationchecked |
| Exness | Yes | The record says authentication is an API Key plus a Secret Key. Scope: The record names the two keys and nothing about headers or signing.
| Exness help centre: Exness APIchecked |
| FOREX.com / StoneX Trading (City Index) | Yes | The record says a POST to /v2/Session with user name, password and AppKey returns a session token that is sent with every request.
| StoneX API documentation, API basicschecked |
| FXCM | Not recorded | No state is taken from the record's sentence about authentication: the capability facts register holds no reading of it as a yes, a partial or a no.
| FXCM Socket REST API specchecked |
| FxPro | Not recorded | The record holds no statement about authentication. | No record held |
| IG | Yes | The record says an API key with a username and password returns two session tokens, and that a v3 login returns OAuth tokens. Scope: The method is recorded. The record holds two readings of how long a session token lasts.
| IG Labs REST trading API guidechecked Sources conflict |
| Interactive Brokers | Yes | The record says the TWS API uses a local socket to a logged in TWS or Gateway, and the Web API a browser login through the Client Portal Gateway.
| IBKR TWS API documentation, the IB Gatewaychecked |
| OANDA | Yes | The record says a personal access token is sent as a bearer token.
| Introduction, OANDA v20 REST APIchecked |
| Pepperstone | Partial | The record says only that the Standard API uses an API key generated after approval, with no header, signature or token lifetime named. Scope: Standard API only. Nothing is recorded for the FIX route.
| UnverifiedPepperstone API tradingchecked |
| Saxo OpenAPI | Yes | The record says the OAuth 2.0 authorization code flow is used, with or without PKCE, and that refresh tokens rotate.
| Saxo OpenAPI Learnchecked |
| Swissquote | Not recorded | No state is taken from the record's sentence about authentication: the capability facts register holds no reading of it as a yes, a partial or a no.
| UnverifiedSwissquote institutional Forex APIschecked |
| ThinkMarkets | Not recorded | The record holds no statement about authentication. | No record held |
| Tickmill | Not recorded | The record holds no statement about authentication. | No record held |
| Trading 212 | Yes | The record says HTTP Basic authentication is used, with the API key and secret in the Authorization header.
| Trading 212 API docs: authenticationchecked |
| XTB | No | The record says API access was discontinued on 14 March 2025, so there is no authentication route left to document.
| XTB help centre: Does XTB offer investment automation tools?checked |
Platform APIs
| Record | State | What the record holds | Source and date |
|---|---|---|---|
| cTrader Open API | Yes | The record says the OAuth 2.0 authorisation code flow is used, with an access token that lasts 30 days.
| Account authenticationchecked |
| DXtrade APIs | Not recorded | No state is taken from the record's sentence about authentication: the capability facts register holds no reading of it as a yes, a partial or a no.
| UnverifiedDXtrade developer portal (content did not render)checked |
| Match-Trader Platform API | Yes | The record says a login call with email, password and broker id sets cookies, and that trading calls also need an Auth-trading-api header.
| Match-Trader Platform API PDF (2024)checked |
| MetaApi | Yes | The record says an authorisation token is sent in the auth-token header of every REST request.
| MetaApi documentation, authentication and authorisationchecked |
| MetaCopier | Yes | The record says API keys are used, at project level or at account level, and that the Socket API takes the same key.
| MetaCopier documentation, REST APIchecked |
| MetaTrader 4 (MQL4) | Yes | The record says no API key is used: code runs inside a terminal that is already logged in to a trading account. Scope: No separate API login. The terminal's own login is the authentication.
| MQL4 Referencechecked |
| MetaTrader 5 (Python package and MQL5) | Yes | The record says no API key is used: initialize() connects to the local terminal, optionally with an account login, password and server. Scope: No separate API key. The connection is to the local terminal.
| initializechecked |
| TradeLocker API | Yes | The record says a POST of email, password and server returns a JWT that is sent as a bearer token, with refresh tokens issued.
| Getting Started with TradeLocker Public APIchecked |
Where to go next
- Authentication: every record's full wording
- How each broker API authenticates
- The full capability grid
- Which brokers have their own API
- Broker API documentation links
- Broker APIs with a demo or sandbox
- Broker APIs with streaming
- Broker APIs with published rate limits
- Broker APIs with an official SDK or library
- Broker APIs with a Python library
- Broker APIs with an official MCP server
- Broker APIs with a community MCP server
- Brokers reachable through a platform API
- Broker APIs with endpoints documented here
- Broker APIs with error codes decoded here
- Broker APIs with an OpenAPI file on this site
- Broker APIs with a quickstart on this site
- Broker APIs with dated changes recorded
- Download the grid as JSON
How to cite this
Broker APIs with authentication described. Broker API Hub, https://openbrokerapi.com/capabilities/authentication, newest check .
Where you rely on a single figure, cite the source and the checked date printed beside it as well.