{"name":"Broker API Hub: MetaApi","page":"https://openbrokerapi.com/platforms/metaapi","file":"https://openbrokerapi.com/data/platforms/metaapi.json","generated":"2026-10-12","generatedBasis":"The newest checked date among the records in this file. It is not the date the file was built.","newestReading":"2026-10-12","newestReadingBasis":"The date the page prints as Newest reading: the newest checked date on the record itself, on its claims, on its limit and endpoint records and, for a platform, on a broker's note that it offers the platform. generated can be later, because this file also holds error, change and MCP records.","licence":"Mixed. Each section states its own licence. Sections from the registers are CC BY 4.0. Sections from the broker, platform, endpoint and error records are all rights reserved and are given for reference.","licenceUrl":"https://creativecommons.org/licenses/by/4.0/","cite":"Broker API Hub, MetaApi, openbrokerapi.com/platforms/metaapi, newest check 2026-10-12","note":"Independent and unofficial. An empty list or a null means this site holds no record. It does not mean that none exists. Every record carries its own source and checked date: cite those where you rely on a single figure.","identity":{"licence":"All rights reserved","leftOut":"The tagline, which is this site's own writing. It is on the page.","id":"metaapi","slug":"metaapi","name":"MetaApi","kind":"platform","nativeApi":null,"apiFamily":["REST","WebSocket (socket.io)","Node SDK","Python SDK","Java SDK"],"products":["CFD","FX"],"availability":"active","legalEntity":null,"regulator":null,"docsUrl":"https://metaapi.cloud/docs/client/","baseUrls":{"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","new_york":"https://mt-client-api-v1.new-york.agiliumtrade.ai","new_york_market_data":"https://mt-market-data-client-api-v1.new-york.agiliumtrade.ai"},"orderTypes":[],"sources":[{"url":"https://metaapi.cloud/","title":"MetaApi home page","checked":"2026-10-12"},{"url":"https://metaapi.cloud/sdks","title":"MetaApi official SDKs","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/faq/","title":"MetaApi documentation, FAQ","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/restApi/auth/","title":"MetaApi documentation, authentication and authorisation","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/","title":"MetaApi documentation, overview","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/rateLimiting/","title":"MetaApi documentation, rate limiting","checked":"2026-10-12"}],"lastChecked":"2026-10-12","review":"verified-at-source"},"claims":{"licence":"All rights reserved","records":[{"key":"access_route","value":"Self-serve retail sign-up at metaapi.cloud, then connect your existing MT4 or MT5 account at any MetaTrader broker.","status":"verified","sources":[{"url":"https://metaapi.cloud/","title":"MetaApi","checked":"2026-09-21"}]},{"key":"eligibility","value":"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","sources":[{"url":"https://metaapi.cloud/","title":"MetaApi home page","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/faq/","title":"MetaApi documentation, FAQ","checked":"2026-10-12"}]},{"key":"demo","value":"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","sources":[{"url":"https://metaapi.cloud/docs/client/faq/","title":"MetaApi documentation, FAQ","checked":"2026-10-12"}]},{"key":"auth","value":"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","sources":[{"url":"https://metaapi.cloud/docs/client/restApi/auth/","title":"MetaApi documentation, authentication and authorisation","checked":"2026-10-12"}]},{"key":"streaming","value":"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","sources":[{"url":"https://metaapi.cloud/docs/client/","title":"MetaApi documentation, overview","checked":"2026-10-12"},{"url":"https://metaapi.cloud/docs/client/rateLimiting/","title":"MetaApi documentation, rate limiting","checked":"2026-10-12"}]},{"key":"history_depth","value":"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","sources":[{"url":"https://metaapi.cloud/docs/client/","title":"MetaApi documentation, overview","checked":"2026-10-12"}]},{"key":"rate_limits","value":"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","sources":[{"url":"https://metaapi.cloud/docs/client/rateLimiting/","title":"MetaApi documentation, rate limiting","checked":"2026-10-12"}]}]},"platformApis":{"licence":"All rights reserved","records":[]},"sdks":{"licence":"All rights reserved","records":[{"name":"metaapi.cloud-sdk","language":"Node.js and browser JavaScript","url":"https://www.npmjs.com/package/metaapi.cloud-sdk","official":true,"source":"https://metaapi.cloud/sdks","checked":"2026-10-12"},{"name":"metaapi-cloud-sdk","language":"Python","url":"https://pypi.org/project/metaapi-cloud-sdk","official":true,"source":"https://metaapi.cloud/sdks","checked":"2026-10-12"},{"name":"metaapi-java-sdk","language":"Java","url":"https://github.com/metaapi/metaapi-java-sdk","official":true,"source":"https://metaapi.cloud/sdks","checked":"2026-10-12"}]},"endpoints":{"licence":"All rights reserved","leftOut":"Parameters, request bodies, example responses and notes. Each is on the endpoint's page.","records":[{"method":"GET","path":"/users/current/accounts/{accountId}/account-information","version":null,"group":"Terminal state","summary":"Read the MetaTrader account's balance, equity, margin, free margin, leverage and currency, with its broker and server.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readAccountInformation/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readAccountInformation/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-account-information"},{"method":"POST","path":"/users/current/accounts/{accountId}/calculate-margin","version":null,"group":"Trade","summary":"Work out the margin that opening a given trade on the account would need, without placing it.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/calculateMargin/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/calculateMargin/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/post-calculate-margin"},{"method":"GET","path":"/users/current/accounts/{accountId}/historical-market-data/symbols/{symbol}/timeframes/{timeframe}/candles","version":null,"group":"Market data","summary":"Download historical candles for one symbol and timeframe, loaded backwards from a start time, up to 1000 at a time.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readHistoricalCandles/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readHistoricalCandles/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-historical-candles"},{"method":"GET","path":"/users/current/accounts/{accountId}/history-deals/position/{positionId}","version":null,"group":"Historical data","summary":"List the history deals that belong to one position.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readDealsByPosition/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readDealsByPosition/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-deals-by-position"},{"method":"GET","path":"/users/current/accounts/{accountId}/history-deals/time/{startTime}/{endTime}","version":null,"group":"Historical data","summary":"List the account's history deals inside a time range, a page at a time.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readDealsByTimeRange/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readDealsByTimeRange/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-deals-by-time"},{"method":"GET","path":"/users/current/accounts/{accountId}/history-orders/time/{startTime}/{endTime}","version":null,"group":"Historical data","summary":"List the account's completed orders inside a time range, a page at a time.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readHistoryOrdersByTimeRange/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveHistoricalData/readHistoryOrdersByTimeRange/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-history-orders-by-time"},{"method":"GET","path":"/users/current/accounts/{accountId}/orders","version":null,"group":"Terminal state","summary":"List the open, pending orders on the MetaTrader account.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readOrders/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readOrders/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-orders"},{"method":"GET","path":"/users/current/accounts/{accountId}/orders/{orderId}","version":null,"group":"Terminal state","summary":"Read one open order by its id, the ticket number.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readOrder/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readOrder/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-order"},{"method":"GET","path":"/users/current/accounts/{accountId}/positions","version":null,"group":"Terminal state","summary":"List the open positions on the MetaTrader account.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readPositions/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readPositions/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-positions"},{"method":"GET","path":"/users/current/accounts/{accountId}/positions/{positionId}","version":null,"group":"Terminal state","summary":"Read one open position by its id, the ticket number.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readPosition/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readPosition/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-position"},{"method":"GET","path":"/users/current/accounts/{accountId}/server-time","version":null,"group":"Terminal state","summary":"Read the trading server's time for the MetaTrader account.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readServerTime/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/readTradingTerminalState/readServerTime/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-server-time"},{"method":"GET","path":"/users/current/accounts/{accountId}/symbols","version":null,"group":"Market data","summary":"List the symbols available on the MetaTrader account, as plain names.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbols/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbols/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbols"},{"method":"GET","path":"/users/current/accounts/{accountId}/symbols/{symbol}/current-candles/{timeframe}","version":null,"group":"Market data","summary":"Read the candle now forming for one symbol at one timeframe.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readCandle/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readCandle/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-candle"},{"method":"GET","path":"/users/current/accounts/{accountId}/symbols/{symbol}/current-price","version":null,"group":"Market data","summary":"Read the current price of one symbol.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbolPrice/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbolPrice/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-price"},{"method":"GET","path":"/users/current/accounts/{accountId}/symbols/{symbol}/current-tick","version":null,"group":"Market data","summary":"Read the latest tick of one symbol. The page says MT4 G1 accounts do not support this call.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readTick/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readTick/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-current-tick"},{"method":"GET","path":"/users/current/accounts/{accountId}/symbols/{symbol}/specification","version":null,"group":"Market data","summary":"Read the trading specification of one symbol.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbolSpecification/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/retrieveMarketData/readSymbolSpecification/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/get-symbol-specification"},{"method":"POST","path":"/users/current/accounts/{accountId}/trade","version":null,"group":"Trade","summary":"Send 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.","status":"verified","source":"https://metaapi.cloud/docs/client/restApi/api/trade/","officialReference":"https://metaapi.cloud/docs/client/restApi/api/trade/","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/metaapi/endpoints/post-trade"}]},"calls":{"licence":"All rights reserved","what":"Functions of a language binding and messages of a wire protocol: calls that are not HTTP requests, so they have no method and no path and are in no OpenAPI file.","leftOut":"Descriptions of arguments and fields, return values, samples and notes. Each is on the call's page.","records":[]},"limits":{"licence":"CC BY 4.0","register":"https://openbrokerapi.com/data/limits.json","structure":"structuredValue, structuredUnit and windowSeconds restate a limit as numbers where its own value and unit, or the opening of its text, state them outright: a count, optionally what is counted, and a window. They are read by a fixed pattern and are null wherever the pattern does not fit, so a null means not restated, not that there is no limit. windowSeconds is null for an allowance that is not a rate. structuredUnit is null where the wording does not name what is counted. A week is taken as 7 days. They add nothing to the record: value, unit, text and scope are unchanged and remain the record. A record whose status is conflicting has a second reading under conflict, which these fields do not restate.","records":[{"id":"metaapi.account-credits","broker":"metaapi","name":"CPU credits per account","value":null,"text":"5,000 CPU credits per 10 seconds","unit":null,"scope":"Per MetaTrader account. REST and RPC calls only","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"note":"The window is 10 seconds, which a single unit cannot state, so the figure stays as wording.","structuredValue":5000,"structuredUnit":"CPU credits","windowSeconds":10},{"id":"metaapi.app-credits-hour","broker":"metaapi","name":"CPU credits an hour, per application","value":18000,"text":null,"unit":"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","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"note":"Also 43,200 credits per 6 hours.","structuredValue":18000,"structuredUnit":"credits","windowSeconds":3600},{"id":"metaapi.app-credits-minute","broker":"metaapi","name":"CPU credits a minute, per application","value":6000,"text":null,"unit":"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","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"structuredValue":6000,"structuredUnit":"credits","windowSeconds":60},{"id":"metaapi.app-credits-second","broker":"metaapi","name":"CPU credits a second, per application","value":1000,"text":null,"unit":"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","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"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.","structuredValue":1000,"structuredUnit":"credits","windowSeconds":1},{"id":"metaapi.historical-concurrent","broker":"metaapi","name":"Concurrent historical market data requests","value":5,"text":null,"unit":"concurrent requests","scope":"Per MetaTrader account, historical market data API only","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"structuredValue":5,"structuredUnit":"concurrent requests","windowSeconds":null},{"id":"metaapi.server-credits-second","broker":"metaapi","name":"CPU credits a second, per server","value":2000,"text":null,"unit":"credits per second","scope":"Per shared front end server. REST and RPC calls only, counted in CPU credits and not in requests","source":"https://metaapi.cloud/docs/client/rateLimiting/","alsoSources":[],"checked":"2026-10-12","status":"verified","conflict":null,"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.","structuredValue":2000,"structuredUnit":"credits","windowSeconds":1}]},"errors":{"licence":"All rights reserved","leftOut":"The meaning and the fix of each error. They are this site's own writing, which the open licence does not cover, so each record gives the address of the page that holds them.","index":null,"register":"https://openbrokerapi.com/data/errors.json","records":[]},"mcpServers":{"licence":"CC BY 4.0","page":"https://openbrokerapi.com/ai/mcp-directory","register":"https://openbrokerapi.com/data/mcp-servers.json","records":[],"noneFound":[]},"partnerProgramme":{"licence":"CC BY 4.0","register":"https://openbrokerapi.com/data/programmes.json","page":null,"record":null},"changes":{"licence":"CC BY 4.0","page":"https://openbrokerapi.com/changes","register":"https://openbrokerapi.com/data/changes.json","checkedMeans":"checked is the day the source was last opened. It is null where the register does not record one: read that as not recorded.","records":[]}}