Skip to main content
Every Spillway-originated error carries a stable code, a human message, and (control plane only) a docs_url pointing back to this page. Codes are stable across releases — build on code, not on message text.

Response shapes

Spillway returns a different envelope depending on which plane you’re calling, so client SDKs parse the shape they already expect.
RFC-7807-ish. Always this shape.
details is present when the error carries structured context (for example, which field failed validation).

Headers on a block

Blocks also set response headers, so you can branch on the outcome without parsing the body:

Error codes

Every code below is a real value defined in the server’s error taxonomy — not an aspirational list. One exception is noted inline: approval_required exists in the code but is currently unreachable because its trigger (a guardrail’s require_approval effect) can’t be authored yet.

Auth & keys

Governance blocks

Requests & validation

Providers & gateway

Resources (control plane CRUD)

Approvals & automation

CEL (guardrail conditionCel)

All six CEL codes are returned at authoring time — POST/PATCH /api/policies or POST /api/policies/lint — not discovered later against live traffic.

System