Error codes
Common API and deployment errors returned by the platform and how to respond.
The error envelope
The REST API returns every error as a small JSON object with two fields: a
stable code you can branch on, and a human-readable message. The portal
translates the common failures into user-facing guidance, so you rarely see the
raw payload in the dashboard.
{
"code": "BAD_IMAGE",
"message": "image must use an immutable tag from an approved source"
}Status codes
Errors use the HTTP status code plus the code field above.
400(request validation failed). The image, name, resource, or region values were rejected:BAD_JSON,BAD_NAME,BAD_RESOURCES,BAD_IMAGE,BAD_REGION. An image is rejected here, not as a422, when it is not immutably tagged (never:latest) or is not from the platform registry or an approved base.BAD_REGIONmeans the project's region code is missing or unknown — pick one fromGET /v1/regions.401UNAUTHORIZED. The access token is missing, expired, or invalid.402INSUFFICIENT_BALANCE(top up your credit with a voucher) orACCOUNT_NOT_INITIALIZED.403FORBIDDEN(you may not act on this resource) orACCOUNT_SUSPENDED.404NOT_FOUND. The resource does not exist, or it is not yours. For privacy we do not reveal which.409(conflict with the current state). Examples: a*_TAKENcode when a name is already in use,AUTOSCALING_OWNS_REPLICASwhen the replica count is managed by autoscaling and cannot be set by hand,LIFECYCLE_UNSUPPORTED, orREGION_SERVICE_UNAVAILABLEwhen a service isn't offered in your project's region yet.422INSUFFICIENT_BALANCE_FOR_AUTOSCALING(not enough credit to raise the maximum replicas),NO_EMAIL(an alert policy needs a verified email address first), orREGION_UNAVAILABLE(the region you chose is real but not open yet — pick an available one or join its waitlist).429RATE_LIMITED. You are sending requests too quickly. Wait, then retry.503(a feature is turned off or temporarily unavailable):AI_DISABLED,STRIPE_DISABLED,DB_BACKUP_UNAVAILABLE,REGISTRY_UNAVAILABLE.
AI inference errors look different
The AI inference endpoints are OpenAI-compatible, so they return the OpenAI
error shape ({"error": {"message", "type", "code"}}) instead of the
envelope above. See AI limits and errors.
Support context
When opening a support ticket, include the project id, container id, deployment id, timestamp, and visible error message. Never include secrets.