Skip to main content
Every error is the same shape on every surface: { error: { code, message, fix } }. Branch on code — it is the contract. The message is written for a person and may be reworded.
Every refusal carries a fix. That is enforced by the type: it is a required argument, so an error that does not say what to do next cannot be constructed. An agent holding one has its next step named for it.

HTTP 400

HTTP 401

HTTP 402

HTTP 403

HTTP 404

HTTP 409

HTTP 410

HTTP 413

HTTP 429

HTTP 500

HTTP 502

HTTP 503

Last modified on September 13, 2026