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.
Status codes
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.