API Reference
Errors
HTTP status codes the venue can return. Every non-2xx response carries a JSON body { error: string, code: string, detail?: any } unless the error originated at the edge (nginx 404, etc.).
Status matrix
| Code | Name | When you see it |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | BadRequest | Malformed body, missing required field, unknown market, decimal parse failure. |
| 401 | Unauthorized | PLANNED Phase B. Today no auth is required. |
| 403 | Forbidden | PLANNED Phase B. Attribution-scoped permission denied. |
| 404 | NotFound | Endpoint path or resource id does not exist. Many planned routes 404 today. |
| 409 | Conflict | Session id already active for attribution; idempotency key collision; cancel on already-cancelled order. |
| 429 | RateLimit | PLANNED Phase B. No rate limit enforced today. |
| 451 | Geoblocked | PLANNED Phase B. Edge geoblock probe rejected the region. |
| 500 | Internal | Matcher error or upstream RPC failure. |
| 503 | Unavailable | Matcher restart in progress or warp session being finalised. |
Retry strategy
For 5xx and 429: exponential backoff starting at 200ms with jitter, capped at 5s, max 5 attempts. Never retry a POST /book/v1/orders without an idempotency_key (Phase B) — the matcher will accept the duplicate.
For 4xx: fix the request before retrying. The body's detail field tells you which field failed validation.
