{"name":"Broker API Hub: TradeLocker API","page":"https://openbrokerapi.com/platforms/tradelocker","file":"https://openbrokerapi.com/data/platforms/tradelocker.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, TradeLocker API, openbrokerapi.com/platforms/tradelocker, 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":"tradelocker","slug":"tradelocker","name":"TradeLocker API","kind":"platform","nativeApi":null,"apiFamily":["REST","Streams API (Socket.IO WebSocket)","Python package"],"products":["CFD","FX"],"availability":"active","legalEntity":null,"regulator":null,"docsUrl":"https://public-api.tradelocker.com/","baseUrls":{"live":"https://live.tradelocker.com/backend-api/","demo":"https://demo.tradelocker.com/backend-api/"},"orderTypes":["Market","Limit","Stop","Trailing stop"],"sources":[{"url":"https://public-api.tradelocker.com/","title":"TradeLocker: public API docs","checked":"2026-09-24"},{"url":"https://tradelocker.com/integrate-tradelocker/connectivity/","title":"TradeLocker API connectivity","checked":"2026-09-22"},{"url":"https://public-api.tradelocker.com/reference/config","title":"Get configuration","checked":"2026-09-22"},{"url":"https://api-dev.tradelocker.com/streams-api/socket/docs/index.html","title":"Streams API 1.0.0 documentation, TradeLocker","checked":"2026-09-21"},{"url":"https://github.com/TradeLocker/tradelocker-python","title":"TradeLocker/tradelocker-python","checked":"2026-09-21"},{"url":"https://github.com/TradeLocker/tradelocker-python/blob/main/src/tradelocker/tradelocker_api.py","title":"TradeLocker tradelocker-python (official library)","checked":"2026-09-18"},{"url":"https://github.com/TradeLocker/tradelocker-python/blob/main/src/tradelocker/types.py","title":"TradeLocker tradelocker-python types (official library)","checked":"2026-09-22"},{"url":"https://tradelocker.com/partners/","title":"Partners, TradeLocker","checked":"2026-09-25"},{"url":"https://www.financemagnates.com/forex/products/tradelocker-opens-its-demo-to-all-users-joining-a-path-already-cleared-by-ctrader-and-metaquotes/","title":"Finance Magnates: TradeLocker opens its demo to all users","checked":"2026-09-22"},{"url":"https://pypi.org/project/tradelocker/","title":"tradelocker on PyPI","checked":"2026-09-20"},{"url":"https://public-api.tradelocker.com/docs/getting-started","title":"TradeLocker public API, getting started","checked":"2026-10-12"},{"url":"https://public-api.tradelocker.com/llms.txt","title":"TradeLocker public API, index of pages","checked":"2026-10-12"}],"lastChecked":"2026-10-12","review":"ported"},"claims":{"licence":"All rights reserved","records":[{"key":"access_route","value":"Use your TradeLocker login (email, password, server) against the public REST API; no separate app registration found.","status":"verified","sources":[{"url":"https://tradelocker.com/integrate-tradelocker/connectivity/","title":"TradeLocker API connectivity","checked":"2026-09-21"}]},{"key":"eligibility","value":"TradeLocker users only, via a broker or prop firm that offers TradeLocker.","status":"verified","sources":[{"url":"https://public-api.tradelocker.com/","title":"Getting Started with TradeLocker Public API","checked":"2026-09-20"}]},{"key":"demo","value":"Yes: separate demo environment at demo.tradelocker.com.","status":"verified","sources":[{"url":"https://public-api.tradelocker.com/","title":"Getting Started with TradeLocker Public API","checked":"2026-09-20"}]},{"key":"auth","value":"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","sources":[{"url":"https://public-api.tradelocker.com/","title":"Getting Started with TradeLocker Public API","checked":"2026-09-20"}]},{"key":"streaming","value":"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","sources":[{"url":"https://public-api.tradelocker.com/docs/getting-started","title":"TradeLocker public API, getting started","checked":"2026-10-12"}]},{"key":"history_depth","value":"/trade/history by resolution (1m to 1M) and from/to; max rows per request and orders history rows come from /trade/config.","status":"verified","sources":[{"url":"https://public-api.tradelocker.com/","title":"TradeLocker Public API docs","checked":"2026-09-20"}]},{"key":"rate_limits","value":"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","sources":[{"url":"https://public-api.tradelocker.com/docs/getting-started","title":"TradeLocker public API, getting started","checked":"2026-10-12"},{"url":"https://public-api.tradelocker.com/llms.txt","title":"TradeLocker public API, index of pages","checked":"2026-10-12"}]}]},"platformApis":{"licence":"All rights reserved","records":[]},"sdks":{"licence":"All rights reserved","records":[{"name":"tradelocker","language":"Python","url":"https://github.com/TradeLocker/tradelocker-python","official":true,"source":"https://pypi.org/project/tradelocker/","checked":"2026-09-20"}]},"endpoints":{"licence":"All rights reserved","leftOut":"Parameters, request bodies, example responses and notes. Each is on the endpoint's page.","records":[{"method":"GET","path":"/auth/jwt/all-accounts","version":null,"group":"Auth","summary":"List every account under the login, each with its id and the accNum that the /trade calls need as a header.","status":"verified","source":"https://public-api.tradelocker.com/reference/getallaccounts","officialReference":"https://public-api.tradelocker.com/reference/getallaccounts","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-auth-jwt-all-accounts"},{"method":"POST","path":"/auth/jwt/refresh","version":null,"group":"Auth","summary":"Exchange a refresh token for a new access token and a new refresh token, without sending the password again.","status":"verified","source":"https://public-api.tradelocker.com/reference/getjwtrefreshtokens","officialReference":"https://public-api.tradelocker.com/reference/getjwtrefreshtokens","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-refresh"},{"method":"POST","path":"/auth/jwt/token","version":null,"group":"Auth","summary":"Log in with an email, a password and a server name and receive an access token and a refresh token.","status":"verified","source":"https://public-api.tradelocker.com/reference/getjwttokens","officialReference":"https://public-api.tradelocker.com/reference/getjwttokens","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-token"},{"method":"GET","path":"/trade/accounts","version":null,"group":"Account","summary":"Read the details of the account selected by the accNum header: its name, currency, status, type, risk rules and trading rules.","status":"verified","source":"https://public-api.tradelocker.com/reference/getaccounts","officialReference":"https://public-api.tradelocker.com/reference/getaccounts","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-accounts"},{"method":"GET","path":"/trade/accounts/{accountId}/instruments","version":null,"group":"Account","summary":"List the instruments the account can trade, each with its tradableInstrumentId and the routes used for quotes and for trading.","status":"verified","source":"https://public-api.tradelocker.com/reference/getinstruments","officialReference":"https://public-api.tradelocker.com/reference/getinstruments","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-instruments"},{"method":"DELETE","path":"/trade/accounts/{accountId}/orders","version":null,"group":"Trading","summary":"Cancel every pending order on the account, or only those in one instrument.","status":"verified","source":"https://public-api.tradelocker.com/reference/cancelallorders","officialReference":"https://public-api.tradelocker.com/reference/cancelallorders","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-orders"},{"method":"GET","path":"/trade/accounts/{accountId}/orders","version":null,"group":"Account","summary":"List the account's orders that are not yet final: those neither filled, cancelled nor rejected.","status":"verified","source":"https://public-api.tradelocker.com/reference/getorders","officialReference":"https://public-api.tradelocker.com/reference/getorders","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders"},{"method":"POST","path":"/trade/accounts/{accountId}/orders","version":null,"group":"Trading","summary":"Place a market, limit or stop order on the account, with an optional stop loss and take profit. The reply carries the new orderId.","status":"verified","source":"https://public-api.tradelocker.com/reference/placeorder","officialReference":"https://public-api.tradelocker.com/reference/placeorder","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/post-account-orders"},{"method":"GET","path":"/trade/accounts/{accountId}/ordersHistory","version":null,"group":"Account","summary":"List the account's orders that reached a final status: filled, cancelled or rejected.","status":"verified","source":"https://public-api.tradelocker.com/reference/getordershistory","officialReference":"https://public-api.tradelocker.com/reference/getordershistory","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders-history"},{"method":"DELETE","path":"/trade/accounts/{accountId}/positions","version":null,"group":"Trading","summary":"Place closing orders for every open position on the account, or only those in one instrument. The page says closure is not guaranteed and may not be immediate.","status":"verified","source":"https://public-api.tradelocker.com/reference/closeallpositions","officialReference":"https://public-api.tradelocker.com/reference/closeallpositions","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-positions"},{"method":"GET","path":"/trade/accounts/{accountId}/positions","version":null,"group":"Account","summary":"List every position currently open on the account.","status":"verified","source":"https://public-api.tradelocker.com/reference/getpositions","officialReference":"https://public-api.tradelocker.com/reference/getpositions","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-positions"},{"method":"GET","path":"/trade/accounts/{accountId}/state","version":null,"group":"Account","summary":"Read the current state of one account, such as its balance, available funds and profit and loss.","status":"verified","source":"https://public-api.tradelocker.com/reference/getstate","officialReference":"https://public-api.tradelocker.com/reference/getstate","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-state"},{"method":"GET","path":"/trade/config","version":null,"group":"Config","summary":"Read 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.","status":"verified","source":"https://public-api.tradelocker.com/reference/getconfigusingget","officialReference":"https://public-api.tradelocker.com/reference/getconfigusingget","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-config"},{"method":"GET","path":"/trade/dailyBar","version":null,"group":"Market data","summary":"Read the current daily bar of one instrument: open, high, low, close and volume.","status":"verified","source":"https://public-api.tradelocker.com/reference/getdailybar","officialReference":"https://public-api.tradelocker.com/reference/getdailybar","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-daily-bar"},{"method":"GET","path":"/trade/history","version":null,"group":"Market data","summary":"Download historical bars for one instrument between two times, at a resolution from one minute to one month.","status":"verified","source":"https://public-api.tradelocker.com/reference/gethistory","officialReference":"https://public-api.tradelocker.com/reference/gethistory","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-history"},{"method":"GET","path":"/trade/instruments/{tradableInstrumentId}","version":null,"group":"Instruments and Sessions","summary":"Read the dealing details of one instrument, such as lot size and step, smallest and largest lot, tick size, quoting currency and trade session.","status":"verified","source":"https://public-api.tradelocker.com/reference/getinstrumentdetails","officialReference":"https://public-api.tradelocker.com/reference/getinstrumentdetails","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-instrument-details"},{"method":"DELETE","path":"/trade/orders/{orderId}","version":null,"group":"Trading","summary":"Cancel one pending order. It works only before the order has been executed.","status":"verified","source":"https://public-api.tradelocker.com/reference/cancelorder","officialReference":"https://public-api.tradelocker.com/reference/cancelorder","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-order"},{"method":"PATCH","path":"/trade/orders/{orderId}","version":null,"group":"Trading","summary":"Change a pending order: its price, size, validity, stop loss or take profit.","status":"verified","source":"https://public-api.tradelocker.com/reference/modifyorder","officialReference":"https://public-api.tradelocker.com/reference/modifyorder","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-order"},{"method":"DELETE","path":"/trade/positions/{positionId}","version":null,"group":"Trading","summary":"Place an order that closes one open position, in full or in part. The page says closure is not guaranteed and may not be immediate.","status":"verified","source":"https://public-api.tradelocker.com/reference/closeposition","officialReference":"https://public-api.tradelocker.com/reference/closeposition","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-position"},{"method":"PATCH","path":"/trade/positions/{positionId}","version":null,"group":"Trading","summary":"Change the stop loss, the take profit or both on an open position. Sending null for one removes it.","status":"verified","source":"https://public-api.tradelocker.com/reference/modifyposition","officialReference":"https://public-api.tradelocker.com/reference/modifyposition","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-position"},{"method":"GET","path":"/trade/quotes","version":null,"group":"Market data","summary":"Read the current bid and ask of one instrument, with the size at each.","status":"verified","source":"https://public-api.tradelocker.com/reference/getquotes","officialReference":"https://public-api.tradelocker.com/reference/getquotes","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-quotes"},{"method":"GET","path":"/trade/sessions/{sessionId}","version":null,"group":"Instruments and Sessions","summary":"Read one trade session: its time zone, its opening periods, its holidays and whether trading is blocked.","status":"verified","source":"https://public-api.tradelocker.com/reference/gettradesession","officialReference":"https://public-api.tradelocker.com/reference/gettradesession","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-session"},{"method":"GET","path":"/trade/sessionStatuses/{sessionStatusId}","version":null,"group":"Instruments and Sessions","summary":"Read which order operations and order types a trade session allows while it is in a given session status.","status":"verified","source":"https://public-api.tradelocker.com/reference/getsessionstatususingget","officialReference":"https://public-api.tradelocker.com/reference/getsessionstatususingget","checked":"2026-10-12","page":"https://openbrokerapi.com/platforms/tradelocker/endpoints/get-session-status"}]},"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":[]},"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":"https://openbrokerapi.com/errors/tradelocker","register":"https://openbrokerapi.com/data/errors.json","records":[{"code":"400 Bad Request","http":400,"category":"api-error","rateLimit":null,"status":"verified","source":"https://public-api.tradelocker.com/reference/getjwttokens.md","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/tradelocker/400-bad-request"},{"code":"401 Unauthorized","http":401,"category":"api-error","rateLimit":null,"status":"verified","source":"https://public-api.tradelocker.com/reference/placeorder.md","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/tradelocker/401-unauthorized"},{"code":"403 Forbidden","http":403,"category":"api-error","rateLimit":null,"status":"verified","source":"https://public-api.tradelocker.com/reference/placeorder.md","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/tradelocker/403-forbidden"},{"code":"404 Not Found","http":404,"category":"api-error","rateLimit":null,"status":"verified","source":"https://public-api.tradelocker.com/reference/placeorder.md","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/tradelocker/404-not-found"},{"code":"no_data","http":null,"category":null,"rateLimit":null,"status":"verified","source":"https://public-api.tradelocker.com/reference/gethistory.md","checked":"2026-10-09","page":"https://openbrokerapi.com/errors/tradelocker/no-data"}]},"mcpServers":{"licence":"CC BY 4.0","page":"https://openbrokerapi.com/ai/mcp-directory","register":"https://openbrokerapi.com/data/mcp-servers.json","records":[],"noneFound":[{"name":"TradeLocker","text":"No MCP server found. public-api.tradelocker.com states verbatim: For AI agents: visit https://public-api.tradelocker.com/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI. Fetching that URL returned the docs index page rather than plain text, so the file content is unverified.","source":"https://public-api.tradelocker.com/","sourceTitle":"public-api.tradelocker.com","checked":"2026-09-24"}]},"partnerProgramme":{"licence":"CC BY 4.0","register":"https://openbrokerapi.com/data/programmes.json","page":"https://openbrokerapi.com/partners/tradelocker","record":{"id":"tradelocker","firm":"TradeLocker","programmeType":"none-found","pagesOpened":["https://tradelocker.com/partners/"],"publishedFigure":null,"figureAsWorded":"no published figure","figureIsCeiling":false,"figureNote":"The page is an integration partner showcase rather than an affiliate programme, and the only figures published are discount codes.","restrictionsForPublishers":"No publisher facing programme terms are published on the page opened this cycle.","documentsNotOpened":null,"checked":"2026-10-05","verification":"page-opened"}},"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":[{"id":"tradelocker-2026-09-23-1","date":"2026-09-23","kind":"ecosystem","text":"TradeLocker documents no streaming. From the getting started page, /docs/streaming and /docs/quotes-stream both return 404. Read 23 September 2026.","source":"https://public-api.tradelocker.com/docs/getting-started","sourceTitle":"TradeLocker public API: getting started","checked":"2026-09-23"},{"id":"tradelocker-2026-09-23-2","date":"2026-09-23","kind":"change","text":"Correction. This site described a TradeLocker Streams API over Socket.IO. Both streaming documentation URLs returned 404 on 23 Sep 2026, so streaming is now recorded as not documented. The rest is unchanged: JWT from /auth/jwt/token, per route limits from /trade/config/ at runtime, separate demo and live hosts, and an official Python client. The getting started page is dated 22 May 2025.","source":"https://public-api.tradelocker.com/docs/getting-started","sourceTitle":"TradeLocker public API: getting started","checked":"2026-09-23"},{"id":"tradelocker-2024-12-18-1","date":"2024-12-18","kind":"change","text":"TradeLocker released version 0.56.2 of its official Python client on PyPI. It is the latest release, and the client requires Python 3.11 or later.","source":"https://pypi.org/project/tradelocker/#history","sourceTitle":"tradelocker release history, PyPI","checked":null},{"id":"tradelocker-2024-01-29-1","date":"2024-01-29","kind":"change","text":"TradeLocker released the first public version (0.39.0) of its Python client for the TradeLocker API.","source":"https://github.com/TradeLocker/tradelocker-python/blob/main/changelog.MD","sourceTitle":"tradelocker-python changelog.MD","checked":null}]}}