Skip to main content
Every /v1 error response is application/problem+json (RFC 9457) with a fixed field set:
Branch on code, never on detail — code is a stable machine contract; detail is human-readable and may change. param is present when the error is attributable to a specific request parameter. Include request_id when contacting support.

Error codes

The code set is closed: new codes are a public contract change and are announced through the API changelog. A retryable: true response means the condition may resolve; it does not prove a write had no effect. Retry reads with a finite attempt and time budget, exponential backoff and jitter. Honor Retry-After when present, including on a retryable 409 or 429. For mutations, follow the operation’s documented idempotency and recovery contract. Preserve the original key and request when supported. Do not invent a new key after a timeout or 5xx: doing so may repeat a successful write. An Idempotency-Key header provides no protection on an operation that does not support it.