Errors
Every error uses the OpenAI error shape so SDKs raise the right exception.
{ "error": { "message": "…", "type": "invalid_request_error", "param": null, "code": "…" } }| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request_error | Malformed JSON, missing model or messages, n other than 1, body too large. |
| 400 | policy_blocked | Your profile blocked the request. param is input or output; the message carries the decision code. |
| 400 | platform_policy | The platform baseline blocked the request. Not configurable per profile. |
| 401 | invalid_api_key | Missing, unknown, revoked or expired key. |
| 403 | insufficient_scope | Key lacks the scope for this endpoint. |
| 404 | not_found | Unknown model (param: "model") or route. |
| 429 | rate_limit_exceeded | Requests per minute or concurrency exceeded. retry-after is set. |
| 500 | internal_error | Unexpected failure. The message includes the request id to quote in support. |
| 502 | upstream_error | The model server returned an error. |
| 503 | overloaded | No healthy model server for that model right now. Retry with backoff. |
| 504 | upstream_timeout | The model server did not respond in time. |
Every response, including errors, carries x-request-id. Quote it when you contact us; it is the only identifier we keep for a request.
Spot an error or a gap? Tell us — and quote x-request-id if you have one.