Skip to content

Error catalogue

The catalogue is closed: a failure carries one of these codes and no others. Branch on code, never on message — the code is stable, the sentence is not. How the envelope is shaped, and the four cases worth special handling, are on Errors.

retryable is derived from the error class and travels in the envelope. The column below is the class default; provider_error takes its retryability per instance, so for that one read the value you were sent rather than this table.

CodeHTTPRetryable by default
budget_exceeded402no
code_run_failed502no
configuration_invalid500no
conflict409no
decryption_failed500no
forbidden403no
guardrail_blocked422no
idempotency_in_flight409yes
idempotency_key_mismatch422no
idempotency_key_reuse422no
invalid_transition409no
lease_lost409no
malformed_json400no
method_not_allowed405no
model_supplied_repository_scope403no
not_found404no
not_implemented501no
not_resumable422no
not_suspended409no
payload_too_large413no
plan_limit_exceeded402no
platform_error500no
provider_error502no
rate_limited429yes
resume_contract_mismatch409no
secret_missing404no
storage_unavailable422no
suspension_expired409no
template_render_failed422no
token_expired401no
token_type_mismatch401no
tool_results_mismatch422no
transient503yes
unauthenticated401no
unsupported_media_type415no
validation_failed422no
wait_timeout504yes
write_credential_in_sandbox403no