A read-only API key lets a program you choose — a signal provider's dashboard, a bot, your own script — read your accounts: the balance, the open profit and loss, the status, and the orders Tradeus placed with their fills. It can only read. A key is refused everywhere outside the read-only API, so it cannot place, change or cancel an order, change a setting, or create or revoke keys.
- 1Create a keyIn your profile, under API keys, give it a name — the program it is for — and create it. The key is shown once: copy it then. Tradeus keeps only a one-way hash of it and cannot show it again.
- 2Hand it to the programIt sends the key as
Authorization: Bearer tdk_…on every request. Never in a URL. - 3Revoke it when you are doneRevoking stops it on the program's next request. Make a new key for a new program rather than sharing one.
What it can read
GET /v1/accounts
Every account you have connected: id, broker account number, name, broker, firm, status (active, locked, disconnected, closed), balance, open P&L, today's P&L, open positions, the account lock, and when the broker was read (as_of).
GET /v1/accounts/:id
One of them.
GET /v1/accounts/:id/orders
The orders Tradeus sent to that account, newest first, with the fill price where the broker reported one.
?limit= up to 200, ?since= an ISO time.GET /v1/signals/:id
What one alert did: the same per-account rows its webhook answer carried, and the orders it produced. The
signalId is in every webhook answer.A request and part of its answer
curl -H "Authorization: Bearer tdk_…" https://api.tradeus.app/v1/accounts
{
"api_version": "1",
"accounts": [
{ "id": "70276688", "account_number": "70276688", "name": "Apex 1", "broker": "Tradovate",
"status": "active", "balance": 50412.5, "open_pnl": -37.5, "day_pnl": 412.5,
"open_positions": 1, "lock": { "armed": true, "locked": false, "locked_until": null },
"liquidation": null, "as_of": "2026-11-08T15:04:01.000Z" }
]
}What it does not do
- It does not ask your broker on every request. Each account is read at most once every 30 seconds for the API —
as_ofsays when — and one key may make up to 60 requests a minute; past that it is answered 429 with Retry-After. - It does not know your firm's liquidation line.
liquidationis there and null, so a program can be written against it now. - A fill price the broker did not report is null, never 0. Tradovate does not answer a market order with its price, so Tradeus reads it from Tradovate's own fills a few seconds later; an order placed a moment ago can show null until then.
day_pnlis null until one of your own screens has been opened that day — the day's starting point is taken there, on your own day.- A balance is only shown while the account's broker session is open; otherwise
balanceis null andlast_known_balancecarries the last one on record.
The API is on every plan and needs an active subscription, like the rest of the app. Fields are only ever added inside /v1, never renamed or removed; a change that would break a program is a new version.