Skip to main content
Every response carries an x-request-id header, including errors. Quote it when you ask us about a call — it is the only handle that reaches the whole path the request took. Error bodies follow the OpenAI shape:
Branch on code, not on message. Messages get reworded; codes do not — they are append-only, and a retired one is never reused.

Does a failed call cost me anything?

Almost never. Of the 30 errors below, 2 still produce a usage record:
  • REQUEST_CANCELLED — Request cancelled by client.
  • PARTIAL_RESPONSE_TIMEOUT — The response was cut off because the model timed out.
The reason is the same in both cases: the model had already produced output when the call came apart, so the tokens exist whether or not you received them. Everything else on this page is free of charge when it fails.

All errors

Training and datasets

The training API (/v1/accounts/{account}/...) returns the same envelope. A valid key that may not make a call — its role does not allow it, it is scoped away from the operation, or the path names an account other than its own — gets OPERATION_NOT_ALLOWED, whichever of the three it was.
Retry? = yes means the same request may succeed later with no change on your side. A no means something about the request or the account has to change first — retrying it unchanged will fail the same way.