Broker Platform API¶
The Broker Platform API is the interface your own software uses to build on KnockOut-Platform: your operations tooling, your reporting and risk engines, your trading front end.
Early access — not yet generally available
This API is being finalized. It is not enabled on production, credentials are issued to design-partner firms only, and the pages in this chapter describe an interface that is still being extended. Treat everything here as accurate but incomplete: read the changelog before you plan work around it, and talk to your account contact before you commit a delivery date to it.
What it is not¶
The Partner API is a narrow, affiliate-facing surface: read the accounts a partner referred, and drive the referral signup flow. The Broker Platform API is the broad one — your whole firm's data, live streaming, and outbound events. They are separate surfaces with separate credentials, and nothing you learn here changes how the Partner API behaves.
What you can build with it today¶
| You want to | Use |
|---|---|
| Pull accounts, trading accounts, positions or transactions in bulk, filtered and paged | Bulk reads |
| See live balance, equity, margin and open profit across your book | Account status |
| Create and update accounts, one at a time or a thousand at once | Writing data |
| Open and close positions | Trading |
| Record deposits and withdrawals and move them through approval | Transactions |
| Stream prices, live account figures, or a durable event feed | WebSocket streaming |
| Receive account, order, position and transaction events on your own endpoint | Webhooks |
Writing is newer than reading here, and the two halves are not yet fully consistent with each other — ids come back as strings from a write and as numbers from a read, for one. Writing data flags each difference where you will meet it.
One write operation is deliberately refused: approving a withdrawal that pays
out through a payment provider answers 501 and must not be retried. See
transactions.
The shape of the API¶
- Base path — everything lives under
/api/v1/. A change that would break a working integration mints/api/v2/;v1does not change under you. See the changelog. - Base URL — your integration's own hostname, issued with your credential.
Examples on these pages write it as
https://platform-api.example.com. - Authentication — a server credential exchanged for a short-lived access token, and optionally re-exchanged for a token scoped to a single trader. See Authentication.
- Your platform's shape — one API, and the account fields a read returns follow your firm's offering: a standalone trading setup receives the core account fields; a CRM brand additionally receives its CRM and custom fields. See Bulk reads.
- Errors —
application/problem+jsonwith a stablecodefrom a closed registry. Match on the code, not the status. See the error catalog. - Correlation — every response carries
X-Request-Id. Log it, and quote it in support requests. - Money — decimal strings on the wire, never floating-point numbers.
Parse them with a decimal type;
0.1 + 0.2is not a balance. - Writes — every write carries an
Idempotency-Key, and repeating one has precise consequences. Read Idempotency and retries before writing your retry logic. - Paging — cursor-based, never offsets. See Bulk reads.
- Rate limits — per credential and per firm, by plan tier. See Rate limits.
Where to go next¶
- Quickstart — credential to first page of data
- Authentication — credentials, tokens, scopes, rotation
- Bulk reads — the query surface, filters, and paging
- Writing data — the write rules, and the account endpoints
- Idempotency and retries — the contract every write shares
- Trading — opening and closing positions
- Transactions — recording and approving money movement
- WebSocket streaming — the live channels and the durable feed
- Webhooks — signed delivery to your own endpoint
- Rate limits — plan tiers and the headers to watch
- Errors — the full error catalog
- SDKs — the TypeScript and Python clients
- Reference — the generated endpoint reference
- Changelog — what changed, and the versioning promise