| Status | When |
|---|---|
400 | Invalid query, body, or precision (lot size, min notional, missing required fields) |
401 | Missing or invalid API key |
403 | Key lacks the required scope, or the account lacks feat:api:write / feat:terminal |
404 | Unknown id, or a route that is not on the API-key allowlist |
409 | Idempotency conflict when the same key is reused with a different body |
429 | Per-key rate limit (Pro 60/min, Institutional 300/min) or auth brute-force throttle |
{
"error": "human-readable message"
}
Mutating routes require Idempotency-Key. Reuse the same key when retrying the same operation.
Place-order in personal mode returns an async ack keyed by client_order_id — poll
GET /terminal/orders/by-client-order-id/{client_order_id} for fills.
Terminal place-order validates quantity, price, and min notional against venue symbol rules.
Fetch GET /terminal/symbol-rules first. Paper before live.