Endpoints
Request headers
Response headers
Always set, every response (success and error):
Sometimes set:
Resource IDs
All resource IDs are readable, typed-prefix strings — a lowercase 3-to-5-letter resource-type prefix plus a Base58 encoding of the underlying UUID. Bare UUIDs never appear in a v3 response body. Server-generated, permanent, safe to store and index.- Example:
tde_5W7guYdHT24JFnRQrZN9y8 - Regex:
^[a-z]{3,5}_[1-9A-HJ-NP-Za-km-z]{1,22}$
Status enums
Trades terminate at
EXECUTED (atomic single-hop). Deposits terminate at COMPLETED or ERROR. See Status enums reference.
Amount precision
Amounts are JSON strings, never numbers. Regex:
^-?[0-9]+(\.[0-9]{1,8})?$. See Amounts.
Idempotency TTLs
See Idempotency.
Pagination
The unbounded lists (trades, deposits, withdrawals) use cursor pagination, newest-first by createdAt. Default page size is 25 and the maximum is 100. Their responses wrap {data, pagination: {limit, hasNext, nextCursor, hasPrev, prevCursor}}; cursors are opaque tokens that you pass back verbatim. The bounded lists (pairs, balances, withdrawal-accounts) return their complete data array without pagination parameters or a pagination object. No endpoint uses total_count or page numbers.
See Pagination.
Error response shape
code, type, message, retryStrategy, and details are all required on every v3 error response (details is {} when there’s no structured context). code is stable across versions; message may change. Branch on code and type for behavior, or read retryStrategy directly for retry handling — never branch on message. For body-portable correlation, capture the X-Trace-Id header at call time. Full catalog: Errors.
HTTP status × type quick map
What’s next
Quickstart
5-minute round trip from JWT to executed trade.
API reference
Full schemas with the interactive playground.
Errors
Every documented error code with retry semantics.
Migration from v2
Field renames and the breaking changes that matter.