Broker API HubMenu

Broker API endpoints compared, call by call

359 documented endpoints from 8 brokers and 4 platform APIs, arranged by what you are trying to do. A platform API belongs to trading software that many brokers and firms offer, so one record of its call serves each of them.

Independent and unofficialNewest check

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.

Pick a task

Each task page lists the documented call for that job at every broker and platform API that has one recorded here, with its method, path and source.

Coverage: tasks against APIs

The number in a cell is how many endpoint records are assigned to that task for that broker or platform API. Not recorded means this dataset holds no such record. It does not mean the API lacks the call.

TaskCapital.comDeriveToroIGInteractive BrokersOANDASaxo OpenAPITrading 212DXtrade APIsMatch-Trader Platform APIMetaApiTradeLocker API
List accounts11Not recorded143411113
Open positions2Not recorded2215411121
List open orders1Not recordedNot recorded112211111
Place an order2Not recorded42111412Not recorded1
Amend an order2Not recorded21122Not recorded12Not recorded2
Cancel an order1Not recorded41111111Not recorded2
Close a position1Not recorded21Not recorded2Not recordedNot recordedNot recorded2Not recorded2
Trade history2Not recorded2613232131
Historical candles1Not recorded13131Not recordedNot recorded121
Read a price1Not recorded11111Not recordedNot recorded121
Instrument search1Not recorded4231313122
Subscribe to a streamNot recordedNot recordedNot recordedNot recordedNot recorded210Not recordedNot recordedNot recordedNot recordedNot recorded
Log in and keep a session5Not recordedNot recorded44Not recordedNot recordedNot recorded42Not recorded2
Confirm an order1Not recorded2111Not recorded1Not recordedNot recorded1Not recorded
Preview an orderNot recordedNot recorded231Not recorded1Not recordedNot recordedNot recorded1Not recorded
Watchlists6Not recorded36Not recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded

Interfaces that are not HTTP

215 more records are functions of a programming language or messages sent over an open connection: 106 functions and 109 messages from 10 broker and platform APIs. None has a method or a path, so they are not endpoints and are not counted as endpoints anywhere on this site. Each task page lists them in a table of their own, under the HTTP endpoints. The number in a cell is how many of them are put under that task.

TaskBitgetCapital.comDeriveToroIGSaxo OpenAPIcTrader Open APIDXtrade APIsMetaTrader 4 (MQL4)MetaTrader 5 (Python package and MQL5)
List accountsNot recordedNot recorded1Not recordedNot recordedNot recorded2Not recorded23
Open positionsNot recordedNot recorded2Not recordedNot recordedNot recorded1Not recorded23
List open ordersNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded1Not recorded23
Place an orderNot recordedNot recorded1Not recordedNot recordedNot recorded1Not recorded13
Amend an orderNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded2Not recorded12
Cancel an orderNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded1Not recorded12
Close a positionNot recordedNot recorded1Not recordedNot recordedNot recorded1Not recorded22
Trade historyNot recordedNot recorded2Not recordedNot recordedNot recorded2Not recorded25
Historical candlesNot recordedNot recorded1Not recordedNot recordedNot recorded1Not recorded24
Read a priceNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded22
Instrument searchNot recordedNot recorded2Not recordedNot recordedNot recorded2Not recorded16
Subscribe to a stream32213Not recorded22Not recorded1
Log in and keep a session2111Not recorded141Not recorded3
Confirm an orderNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded2Not recordedNot recordedNot recorded
Preview an orderNot recordedNot recorded1Not recordedNot recordedNot recorded1Not recorded14
WatchlistsNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recordedNot recorded

A function or message record carries its tasks itself, set by hand from what the vendor's page says the call does. One function can do several jobs, so one record can be counted under more than one task. One that fits no task carries none and is listed on its owner's own index: Bitget messages, Capital.com messages, Deriv messages, eToro messages, IG messages, Saxo OpenAPI messages, cTrader Open API messages, DXtrade APIs messages, MetaTrader 4 (MQL4) functions, MetaTrader 5 (Python package and MQL5) functions.

How an endpoint is assigned to a task

An endpoint record joins a task by its method and its path, by written rules that were checked against every record. 250 records are assigned. 109 match no rule and are left unassigned below, because a missing label is safer than a guessed one.

Endpoints not assigned to a task

109 records
Broker or platformEndpointWhat the record says it doesSource
Capital.comGET/api/v1/accounts/preferencesRead the account's trading preferences: whether hedging mode is on, and the leverage in use and on offer for each asset class.open-api.capital.comchecked
Capital.comPUT/api/v1/accounts/preferencesChange the account's trading preferences: the leverage per asset class, the hedging mode, or both.open-api.capital.comchecked
Capital.comPOST/api/v1/accounts/topUpAdd to or take from the balance of the current demo account. Demo only: it moves no real money.open-api.capital.comchecked
Capital.comGET/api/v1/clientsentimentThe share of clients holding long and short positions in each of a list of markets, as two percentages per market.open-api.capital.comchecked
Capital.comGET/api/v1/clientsentiment/{marketId}Share of Capital.com clients long and short on one market. GET /api/v1/clientsentiment?marketIds= takes a comma separated list.open-api.capital.comchecked
Capital.comGET/api/v1/marketnavigationThe top level of the market navigation tree: one node per market category, each with an identifier to browse into.open-api.capital.comchecked
Capital.comGET/api/v1/marketnavigation/{nodeId}The nodes and markets beneath one node of the market navigation tree. Walk it from the top level to reach the epics in a category.open-api.capital.comchecked
Capital.comGET/api/v1/session/encryptionKeyFetch the key and timestamp used to send the API key password in encrypted form when starting a session. Only the encrypted login route needs it.open-api.capital.comchecked
Capital.comGET/api/v1/timeThe server's current time as a millisecond timestamp. The reference says no authentication is needed, so it doubles as a connectivity test.open-api.capital.comchecked
DerivPOST/trading/v1/options/accountsCreates an Options trading account, demo or real. If an identical account already exists Deriv returns it with a 200 in place of a 201.developers.deriv.comchecked
DerivPOST/trading/v1/options/accounts/{account_id}/reset-demo-balanceResets the balance of an Options trading demo account. Demo only: it moves no real money.developers.deriv.comchecked
DerivPOST/trading/v1/options/accounts/{accountId}/otpExchanges your bearer token for a one time WebSocket URL for one trading account. You then connect to that URL to trade: this is the step between logging in and the WebSocket.developers.deriv.comchecked
DerivGET/v1/healthA health check on the REST gateway. Deriv says it needs no authentication, no parameters and no body.developers.deriv.comchecked
DXtrade APIsPOST/accounts/{accountCode}/closeClose the open positions on an account, cancel its working orders, or both, in one step, for every instrument or for one.demo.dx.tradechecked
DXtrade APIsGET/accounts/{accountCode}/eventsList events on an account that a trader needs to know of, such as liquidations and margin calls.demo.dx.tradechecked
DXtrade APIsGET/accounts/{accountCode}/portfolioRead an account's portfolio: its open positions and working orders. Closed positions and completed orders are not in it.demo.dx.tradechecked
DXtrade APIsGET/conversionRatesRead the current conversion rate between two currencies, or from every currency to one.demo.dx.tradechecked
DXtrade APIsPOST/marketdataAsk for current quotes or for historical candles for one or more instruments. One call serves both, chosen by the event type in the body.demo.dx.tradechecked
DXtrade APIsGET/users/{username}Read the details of a user, which is how a program finds the accounts a login can use.demo.dx.tradechecked
eToroGET/api/v1/balancesBalances across every account type you hold with eToro, with a total in a display currency. eToro warns that the totals are portfolio value, not cash you can spend.api-portal.etoro.comchecked
eToroGET/api/v1/market-data/exchangesThe exchanges eToro lists instruments from, optionally narrowed to a set of exchange IDs.api-portal.etoro.comchecked
eToroGET/api/v1/market-data/instrument-typesThe instrument types eToro uses, optionally narrowed to a set of type IDs.api-portal.etoro.comchecked
eToroGET/api/v1/market-data/instruments/history/closing-priceReturns the latest official closing price for instruments plus the previous day, week and month closes.api-portal.etoro.comchecked
eToroGET/api/v1/market-data/stocks-industriesThe industries eToro sorts stocks into, optionally narrowed to a set of industry IDs.api-portal.etoro.comchecked
eToroGET/api/v1/meReturns the profile behind your key or token: global and account IDs for real and demo, username, player level and the scopes granted.api-portal.etoro.comchecked
eToroDELETE/api/v1/trading/execution/demo/market-close-orders/{orderId}Asks for a pending close order on the demo account to be cancelled before it executes. A 200 reply means the request was received, not that the order was cancelled.api-portal.etoro.comchecked
eToroDELETE/api/v1/trading/execution/market-close-orders/{orderId}Asks for a pending close order on the real account to be cancelled before it executes. A 200 reply means the request was received, not that the order was cancelled.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/aggregate-portfolioA snapshot of the real account portfolio grouped by asset: account totals, directly held positions per instrument and active copy trading relationships.api-portal.etoro.comchecked
eToroPOST/api/v1/trading/info/aggregate-portfolioThe same real account portfolio snapshot as the GET form, with the level of detail and the filters sent in a request body. It reads data and changes nothing.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/demo/aggregate-portfolioA snapshot of the demo account portfolio grouped by asset: account totals, directly held positions per instrument and active copy trading relationships.api-portal.etoro.comchecked
eToroPOST/api/v1/trading/info/demo/aggregate-portfolioThe same demo account portfolio snapshot as the GET form, with the level of detail and the filters sent in a request body. It reads data and changes nothing.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/demo/close-orders/{orderId}Looks up one close order on the demo account: its status and the positions it closed. This is the call that confirms a close.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/demo/portfolioThe demo account portfolio in detail: open positions, pending orders, copy trading details and balances, all under one clientPortfolio object.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/portfolioThe real account portfolio in detail: open positions, pending orders, copy trading details and balances, all under one clientPortfolio object.api-portal.etoro.comchecked
eToroGET/api/v1/trading/info/real/close-orders/{orderId}Looks up one close order on the real account: its status and the positions it closed. This is the call that confirms a close.api-portal.etoro.comchecked
eToroGET/api/v1/user-info/peopleReturns public profile details for eToro users you name by username or customer ID, such as verification level and avatars.api-portal.etoro.comchecked
eToroGET/api/v2/market-data/ratesCurrent bid and ask rates for up to 1000 instruments, each marked as real time or delayed. A 206 reply means only some of the instruments were found.api-portal.etoro.comchecked
eToroPOST/api/v2/trading/info/demo/eligibilityThe trading rules that apply to a list of instruments on the demo account: position limits, order types allowed, stop loss and take profit bounds and the leverage on offer.api-portal.etoro.comchecked
eToroGET/api/v2/trading/info/demo/instrument-breakdownThe demo account portfolio grouped by instrument, with the positions, pending orders and profit or loss under each.api-portal.etoro.comchecked
eToroPOST/api/v2/trading/info/eligibilityThe trading rules that apply to a list of instruments on the real account: position limits, order types allowed, stop loss and take profit bounds and the leverage on offer.api-portal.etoro.comchecked
eToroGET/api/v2/trading/info/instrument-breakdownThe real account portfolio grouped by instrument, with the positions, pending orders and profit or loss under each.api-portal.etoro.comchecked
IGGET/accounts/preferencesRead the preferences held on the account. The one preference documented is whether trailing stops are switched on.labs.ig.comchecked
IGPUT/accounts/preferencesChange the account preferences. The documented body carries one field, which switches trailing stops on or off.labs.ig.comchecked
IGGET/categoriesThe categories of instrument switched on for the account, each with a code and a flag saying whether it can be traded.labs.ig.comchecked
IGGET/client-sentimentThe share of IG clients holding long and short positions in each of a list of markets, as two percentages per market.labs.ig.comchecked
IGGET/client-sentiment/{marketId}The share of IG clients holding long and short positions in one market, as two percentages.labs.ig.comchecked
IGGET/client-sentiment/related/{marketId}Client sentiment for the markets IG relates to the one you name: the long and short percentages for each.labs.ig.comchecked
IGGET/indicativecostsandcharges/durablemedium/{indicativeQuoteReference}Download an indicative costs and charges quote made earlier, as a PDF. The reference comes back from the open, close and edit quote calls.labs.ig.comchecked
IGGET/indicativecostsandcharges/history/from/{from}/to/{to}The indicative costs and charges quotes made between two date times, paged. Each entry carries the reference needed to download its PDF.labs.ig.comchecked
IGGET/operations/applicationList the API applications you own, each with its key, status and the request allowances set on it.labs.ig.comchecked
IGPUT/operations/applicationChange one of your API applications: its status and its per account request allowances.labs.ig.comchecked
IGPUT/operations/application/disableDisable the API key the request is sent with, so it stops serving requests. IG says a disabled key can be switched back on from the account pages of its platform.labs.ig.comchecked
IGGET/session/encryptionKeyFetch the key and timestamp used to send a password in encrypted form when logging in. Only some logins need it.labs.ig.comchecked
IGPOST/session/refresh-tokenExchange a refresh token from a version 3 login for a new access token and a new refresh token.labs.ig.comchecked
IGPUT/working-orders/otc/{dealId}Amend an OTC working order that has not filled: its level, type, stop, limit and expiry. Returns a dealReference to confirm, as dealing calls do.labs.ig.comchecked
Interactive BrokersGET/iserver/account/pnl/partitionedUpdated profit and loss for the selected account, keyed by account and segment. The first request returns an empty upnl object.interactivebrokers.comchecked
Interactive BrokersPOST/iserver/reply/{replyId}Answers a warning that came back from an order submission and continues with the order. The answer can bring another question.interactivebrokers.comchecked
Match-Trader Platform APIGET/manager/platform-detailsRead the details of the trading platform: the broker's identifier, the platform's address and the broker's name.app.theneo.iochecked
MetaApiGET/users/current/accounts/{accountId}/server-timeRead the trading server's time for the MetaTrader account.metaapi.cloudchecked
MetaApiPOST/users/current/accounts/{accountId}/tradeSend one trade command to the MetaTrader account. The actionType in the body decides what it does: open at market, place, change or cancel a pending order, or change or close a position.metaapi.cloudchecked
OANDAGET/v3/accounts/{accountID}/changesPoll an account for its current state and for what has changed since a transaction you name. This is the documented way to keep a local copy of an account up to date.developer.oanda.comchecked
OANDAPATCH/v3/accounts/{accountID}/configurationChange the parts of an account its owner may set: the alias and the margin rate.developer.oanda.comchecked
OANDAPUT/v3/accounts/{accountID}/orders/{orderSpecifier}/clientExtensionsUpdate the client extensions on an order: your own ID, tag and comment, for the order and for the trade it will open. OANDA says not to use them on an account linked to MT4.developer.oanda.comchecked
OANDAGET/v3/accounts/{accountID}/trades/{tradeSpecifier}The details of one trade on the account.developer.oanda.comchecked
OANDAPUT/v3/accounts/{accountID}/trades/{tradeSpecifier}/clientExtensionsUpdate the client extensions on a trade: your own ID, tag and comment. OANDA says not to use them on an account linked to MT4.developer.oanda.comchecked
OANDAGET/v3/accounts/{accountID}/transactions/{transactionID}The details of one transaction on the account, by its ID.developer.oanda.comchecked
Saxo OpenAPIDELETE/chart/v3/charts/subscriptions/{ContextId}/{ReferenceId}Removes one chart subscription, identified by its context and reference ids, and frees what it held on the server.developer.saxochecked
Saxo OpenAPIGET/hist/v4/performance/summaryReturns aggregated trade results and performance figures, such as accumulated profit or loss and win fraction, for a client or account over a period.developer.saxochecked
Saxo OpenAPIGET/port/v1/balancesBalance figures for a client, an account group or a single account: cash, cash available for trading, collateral and margin.developer.saxochecked
Saxo OpenAPIGET/port/v1/balances/marginoverviewA margin overview for a client, an account group or a single account, returned as a list of groups.developer.saxochecked
Saxo OpenAPIGET/port/v1/clients/{ClientKey}Details of one client by its key: identifiers, default account, default currency and the netting and trading settings that apply.developer.saxochecked
Saxo OpenAPIGET/port/v1/clients/meReturns the client the logged in user belongs to, including ClientKey, default account and default currency. You need the ClientKey for some history and performance calls.developer.saxochecked
Saxo OpenAPIGET/port/v1/closedpositionsLists closed positions for a client, an account group or an account, chosen by query parameters.developer.saxochecked
Saxo OpenAPIGET/port/v1/closedpositions/{ClosedPositionId}One closed position by its id.developer.saxochecked
Saxo OpenAPIGET/port/v1/exposure/currency/meThe net exposure in each currency for the logged in user's client.developer.saxochecked
Saxo OpenAPIGET/port/v1/exposure/fxspot/meThe currency exposure that comes from FX spot positions alone, for the logged in user's client.developer.saxochecked
Saxo OpenAPIGET/port/v1/exposure/instruments/meThe net exposure in each instrument for the logged in user's client.developer.saxochecked
Saxo OpenAPIGET/port/v1/netpositionsLists net positions for a client, an account group or an account, with filters by instrument. Each can carry its sub positions if you ask for them.developer.saxochecked
Saxo OpenAPIGET/port/v1/netpositions/{NetPositionId}One net position by its id, with static details in NetPositionBase and the live view in NetPositionView.developer.saxochecked
Saxo OpenAPIGET/port/v1/orders/{ClientKey}/{OrderId}One open order of a client, looked up by the client's key and the order id.developer.saxochecked
Saxo OpenAPIGET/port/v1/users/meReturns details about the logged in user, such as name, language, time zone and the ClientKey of the owning client. A good first call to check a token works.developer.saxochecked
Saxo OpenAPIGET/port/v1/users/me/entitlementsThe market data entitlements held by the logged in user's client, listed per exchange.developer.saxochecked
Saxo OpenAPIGET/ref/v1/countriesThe countries Saxo supports, as a list.developer.saxochecked
Saxo OpenAPIGET/ref/v1/culturesThe cultures Saxo supports for localising a user's preferences, as a list.developer.saxochecked
Saxo OpenAPIGET/ref/v1/currenciesThe currencies Saxo supports, as a list.developer.saxochecked
Saxo OpenAPIGET/ref/v1/currencypairsThe currency pairs Saxo supports, as a list.developer.saxochecked
Saxo OpenAPIGET/ref/v1/exchangesEvery exchange Saxo lists, with details of each such as its identifiers, country, currency and sessions.developer.saxochecked
Saxo OpenAPIGET/ref/v1/exchanges/{ExchangeId}Details of one exchange: its identifiers, country, currency, time zone and trading sessions.developer.saxochecked
Saxo OpenAPIGET/ref/v1/instruments/tradingschedule/{Uic}/{AssetType}The trading schedule of one instrument: its sessions and the time zone they are given in.developer.saxochecked
Saxo OpenAPIGET/ref/v1/languagesThe languages Saxo supports, as a list.developer.saxochecked
Saxo OpenAPIGET/ref/v1/standarddates/forwardtenor/{Uic}The standard forward tenor dates for one instrument.developer.saxochecked
Saxo OpenAPIGET/ref/v1/timezonesThe time zones Saxo supports, as a list.developer.saxochecked
Saxo OpenAPIGET/root/v1/diagnostics/getA test call that does nothing but answer. Use it to check that a GET request reaches the gateway.developer.saxochecked
Saxo OpenAPIGET/root/v1/features/availabilityWhich features are currently available, as a list of feature names each with a flag. Saxo marks this call obsolete.developer.saxochecked
Saxo OpenAPIPUT/root/v1/sessions/capabilitiesChange the trade level of the current session, which decides whether it can trade on quotes and receive real time data.developer.saxochecked
Saxo OpenAPIGET/root/v1/sessions/capabilitiesWhat the current session is allowed: its authentication level, data level and trade level.developer.saxochecked
Saxo OpenAPIGET/root/v1/userThe current user's id, client id, roles and the operations the token may perform. Saxo marks this call obsolete.developer.saxochecked
Saxo OpenAPIGET/trade/v1/infoprices/listInfo prices for several instruments of one asset type in a single call. Info prices are for display, not prices you can trade on.developer.saxochecked
Saxo OpenAPIGET/trade/v1/messagesTrade messages for the current user that have not yet been marked as seen.developer.saxochecked
Saxo OpenAPIDELETE/trade/v1/prices/subscriptions/{ContextId}/{ReferenceId}Removes one price subscription from the current streaming session, identified by its context and reference ids.developer.saxochecked
Saxo OpenAPIDELETE/trade/v2/ordersCancels every order in one instrument on one account in a single call.developer.saxochecked
Saxo OpenAPIPOST/trade/v2/orders/multilegPlaces a combined options order whose legs must all fill together, for strategies such as straddles and calendar spreads. Saxo says only some options exchanges support it.developer.saxochecked
TradeLocker APIGET/trade/configRead the configuration for the account: the column names of the positions, orders and account tables, the rate limit of each route and the row limits.public-api.tradelocker.comchecked
TradeLocker APIGET/trade/dailyBarRead the current daily bar of one instrument: open, high, low, close and volume.public-api.tradelocker.comchecked
TradeLocker APIGET/trade/sessions/{sessionId}Read one trade session: its time zone, its opening periods, its holidays and whether trading is blocked.public-api.tradelocker.comchecked
TradeLocker APIGET/trade/sessionStatuses/{sessionStatusId}Read which order operations and order types a trade session allows while it is in a given session status.public-api.tradelocker.comchecked
Trading 212GET/api/v0/equity/history/exportsThe CSV reports you have asked for and the status of each. Once a report is Finished its entry carries a link to download the file.docs.trading212.comchecked
Trading 212POST/api/v0/equity/history/exportsAsk for a CSV report of account history over a period. The report is built in the background: the reply is a reportId to look for in the list of reports.docs.trading212.comchecked
Trading 212GET/api/v0/equity/metadata/exchangesThe exchanges the account can reach and the working schedules of each, which say when its instruments trade.docs.trading212.comchecked

By API instead

Sections