Errors
Every refusal, its status and its code
Every refusal has the same shape, RFC 9457 problem details, and a stable code your software can branch on.
The shape
404
Branch on code, never on title or detail - the sentences may be reworded, the codes will not. Nothing internal is ever in a refusal: no database message, no stack.
Codes
Request ids
Every answer, success or refusal, carries a Request-Id header, and a refusal repeats it as request_id. Quote it to support and we can find the request.
What to retry
rate_limited: wait theRetry-Afterseconds, then retry.internal_error: retry with backoff. Retry a POST with the sameIdempotency-Key, so it can never write twice.key_paused: stop. A person has to resume the key before anything works.- Everything else: fix the request. Sending it again will get the same answer.