Browse documentation
HTTP status codes, retryable failures, and request correlation.
Envelope
Error catalogue
The following error codes are part of the public contract:
Code | HTTP | Retryable | Typical cause |
|---|---|---|---|
| 400 | no | Wrong content type, bad cursor, over-long |
| 400 | no | Body is not JSON |
| 400 | no | Field not in the contract ( |
| 400 | no | Write without |
| 401 | no | No bearer, or key sent in query/cookie |
| 401 | no | Unknown, malformed or disabled key; invalid session |
| 401 | no | Key revoked |
| 401 | no | Key past |
| 403 | no | Key not allowed on API/MCP; session token on MCP; disallowed browser origin on MCP |
| 403 | no | Missing scope |
| 403 | no | Reserved; brand checks currently answer |
| 403 | no | Owner is not on Scale/Enterprise |
| 403 | no | Not enrolled, beta scope not allowed, flag off, brand/destination frozen, account locked, no entitlement, plan feature missing |
| 404 | no | Unknown or not accessible with this key; unknown route |
| 409 | yes | Destination not healthy |
| 409 | no | Content not publishable, preview expired/mismatched/changed, stale edit, only-active-keys rules |
| 409 | see | Different request with the same key (no), or original still in progress (yes) |
| 409 | no | Job not queued any more |
| 413 | no | Body > 1 MB (draft body > 256 KB) |
| 422 | no | Invalid value; |
| 429 | yes | Per-minute limit (or Local 24 h run limit) |
| 429 | yes¹ | Daily requests or monthly credits exhausted; also max active keys (¹non-retryable) and Local location cap |
| 429 | yes | Too many jobs in progress |
| 500 | no | Unexpected failure — contact support with |
| 502 | no | Destination rejected the operation |
| 503 | yes | Database, Redis, queue or provider unreachable; MCP tool timeout |
| 503 | yes | Surface disabled by operators |
Connectivity failures (DNS, refused, reset, timeout) towards Postgres or Redis are always reported as 503 upstream_unavailable with Retry-After: 5, never as 500.
Job and operation failure codes
failure.code on jobs and publishing operations comes from a keyword mapping of worker/provider errors. The raw text is never stored or returned:
| Retryable | Meaning |
|---|---|---|
| no | Worker could not verify the signed context (secret mismatch or tampering) |
| no | Kill switch or destination freeze flipped while queued |
| no | Owner lost entitlement after admission |
| no | Generated content failed quality checks |
| no | Destination rejected (auth etc.) |
| yes | Timeout / 5xx / connection error |
| no | Anything else, including orphaned jobs (no trace after 10 min) |