Errors

A failure is an RFC 9457 problem (application/problem+json): type (an anchor below), title, status, detail, and the service's code and context.

not_found 404

Nothing matches the reference given, or the path answers no operation.

method_not_allowed 405

The path answers other methods, which the Allow header lists.

not_entitled 403

The resource exists but is held back from this caller.

not_permitted 401, 403 or 429

context.reason says why: credential (401, sign in again: the token is missing, expired, revoked or used on a channel it is not bound to), scope (403, the token lacks the scope), principal (403, the token may not act on this store or row), plan (403, the plan does not include it), limit (429, see the limits guide).

conflict 409

The call clashes with the current state. context names the field, its current value and what it is blocked_by.

invalid 422

An argument is malformed. context.path points at it (["body"] for the body itself, ["headers", "idempotency-key"] for the key) and context.reason says what is wrong. A body over 16 MiB answers 413 with this type; one nesting deeper than 64 levels, or holding more than 100000 objects and arrays or 100000 values, answers 422.

internal 500

The call failed inside the service. A read, or a write sent with an Idempotency-Key, may be retried with backoff and a bounded number of attempts; any other write may have landed, so read the state back first.

unavailable 503

The service could not be reached. Retry as for internal.

client-fault 500

The API itself failed before or after calling the service, and retrying will not help. reached_core says whether the call reached the service; when it did, core_answer is what the service answered: ok means the write landed, a code means it was refused, internal leaves the outcome unknown.

No answer carries Retry-After unless the service said when to retry.