
Application errors return an error object:
json
{
"error": {
"message": "Human-readable description",
"type": "invalid_request_error",
"param": "input",
"code": "unsupported_tags"
}
}| Type | Condition |
|---|---|
invalid_request_error | Authentication, invalid input, or a missing resource |
billing_error | Insufficient credit or a spending limit |
rate_limit_error | Request-per-minute or concurrency limit |
server_error | Server response with status 500 or higher |
| Code | Meaning |
|---|---|
invalid_api_key | Key is missing, invalid, expired, or revoked |
invalid_language | Language is not supported |
model_not_found | Model ID is unknown |
unsupported_tags | Input contains an inline performance tag |
rate_limit_exceeded | Requests-per-minute limit was reached |
concurrency_limit_exceeded | Concurrent request limit was reached |
insufficient_credits | Account balance cannot cover the request |
spending_limit_exceeded | Project or key spending cap was reached |
Pydantic field validation returns a detail array instead of the application envelope. Each item identifies the invalid location, value, and validation message.
New projects default to 60 requests per minute and 4 concurrent requests. Project settings may override both values. Limit failures return HTTP 429 with rate_limit_error and the matching code.
Use x-request-id from a speech response when tracing a completed or partially completed request.
On this page