statusCode in the body alongside the HTTP status.
This table is the full set.
Deciding whether to retry? See Rate limits & errors.
Success
Client errors
406 is used by the AI endpoints to signal things like “no languages
available to optimize for” or “the social connection is incomplete”. It is a
validation failure, not a content-negotiation problem.Server errors
The ones that bite
Most of these are obvious. Three are worth internalising.422 vs 406 — both are validation
422 vs 406 — both are validation
422 comes from the request schema: a required field is missing or the wrong
type.406 comes from the domain: the request was well-formed but the state it
depends on is not there. An AI optimize call for a language that does not exist
returns
406, not 422.423 vs 426 — inactive vs over quota
423 vs 426 — inactive vs over quota
423 means the whole workspace is disabled, typically an expired plan. Nothing
will work until billing is fixed.426 means the workspace is healthy but one quota is exhausted. You can still
call endpoints that do not touch that quota.
Example error
Handling in code
Rate Limits & Errors
Rate limits, quotas, and retry strategy.
Response format
The envelope every code arrives in.

