Skip to main content
Every AI CMS response carries a 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.
401 means the key itself is the problem: missing, revoked, expired, or disabled. Fix the key.403 means the key works but its role is not permitted to do this. The key is fine; it needs fewer or different permissions. See API keys for the role table.
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 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.