Every reserved code, its HTTP status, the spec section that triggers it, and a one-line note on the client-side response. For the envelope shape itself, see Error envelope.
All reserved codes (§11.3)
† Status for
invitation_not_found is not explicitly bound in spec text. 404 is the conventional reading; a service may also use 410 if the invitation was previously valid and atomically superseded. Don’t program against the status alone — inspect code.
Grouped by what you should do about it
Transient — retry with a small change
expired_signature— re-sign, retry.rate_limit_exceeded— sleepRetry-Afterseconds, retry.owner_session_too_stale— re-authenticate the human, retry.
Misconfigured — surface to the developer
replayed_nonce— your signer is buggy.malformed_request— fix the request shape.unsupported_recipient_type— read the discovery doc.invalid_attestation/attestation_required— fix attestor wiring.
Onboarding required
unknown_account(implicit signup disabled) — callPOST /accounts.revoked_key/account_expired— start over with a fresh agent.
State machine boundary
already_claimed/not_claimed— read the spec state machine; the operation doesn’t apply.owner_authentication_required— needs the human in the loop.owner_binding_blocked— needs the human in the loop, full stop.
Auth surface
invalid_signature— programmer error or hostile input.invitation_expired/invitation_not_found— invitation is gone; re-issue.
Custom codes
Services MAY add their own codes beyond §11.3 (example_quota_exceeded, feature_not_in_plan, etc.) and SHOULD prefix them with a service-specific namespace. The envelope shape is the same — clients can ignore unknown codes safely.
Further reading
- Troubleshooting — these codes organized by symptom, with the fix.
- Error envelope — the response shape and how to consume it.
- Spec §11 — normative.
- Test vectors §C.5 — one envelope fixture per reserved code.