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 28 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
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.