Resources

Errors

Errors use standard HTTP status codes with a JSON body. The body never leaks internals — just a stable code and a human message.

Error shape

Application errors (400 / 404 / 503) return a stable string code under error, sometimes with extra context. Gateway errors (401 / 402 / 403 / 429) come from the API gateway and use its own { "message": "…" } envelope.

json
{ "error": "history_disabled" }

// some carry context:
{ "error": "unknown_kind", "kinds": ["assets", "funding", "limits", "orderbook", "volume"] }

Status codes

CodeMeaningNotes
200OKRequest succeeded.
400Bad requestMalformed query — check param types.
401UnauthorizedMissing or invalid API key.
402Payment requiredx402 route — pay and retry (see Authentication).
403ForbiddenYour tier can't reach this surface (see Access tiers).
404Not foundUnknown family, kind or exchange.
429Too many requestsRate limited — honor Retry-After.
503Service unavailableA soft dependency (e.g. history store) is disabled or down.

Soft dependencies

Some surfaces depend on optional infrastructure. If the history store is disabled, history returns a 503 with { "error": "history_disabled" } (or history_unavailable if it is down) — live and recent are unaffected. Treat these as retriable but back off.