batch_only | 400 | Model is batch-only and cannot serve real-time requests |
budget_exhausted | 429 | Account or project budget reached |
byok_keys_required | 400 | BYOK keys required but none are configured |
client_disconnected | 0 | Client closed the connection before the response completed |
content_filtered | 400 | The upstream provider’s content filter rejects the request |
context_length_exceeded | 400 | Token count exceeds the model’s context window |
cost_constraint_exceeded | 400 | No provider meets the cost constraint |
duplicate_resource | 409 | A resource with this identifier already exists |
expired_api_key | 401 | API key has expired |
feature_disabled | 403 | Feature is not available for this account or plan |
field_immutable | 400 | Field cannot be modified after resource creation |
hosted_tool_not_supported | 400 | Model does not support the requested hosted tool on available providers |
idempotency_conflict | 409 | Idempotency key reused with a different payload |
insufficient_permissions | 403 | Caller authenticated but lacks the required scope |
insufficient_quota | 429 | No quota remaining on the current plan |
internal_error | 500 | Unexpected server error |
invalid_api_key | 401 | API key is missing, malformed, revoked, or unrecognized |
invalid_parameter_value | 400 | Field present, value outside allowed range or set |
invalid_recovery_code | 401 | MFA recovery code is invalid or already used |
invalid_request | 400 | Malformed or invalid request |
json_mode_not_supported | 400 | Model does not support JSON mode |
latency_constraint_exceeded | 400 | No provider meets the latency constraint |
method_not_allowed | 405 | HTTP method not supported on this endpoint |
mfa_required | 403 | Action requires multi-factor authentication step-up |
mfa_verification_failed | 401 | TOTP verification code is incorrect or expired |
missing_required_parameter | 400 | Required parameter not provided |
model_not_found | 404 | Requested model ID isn’t in the catalog |
model_unavailable | 503 | The requested model is temporarily unavailable |
no_compatible_endpoint | 400 | No provider supports the required API endpoint for this model |
no_provider_available | 503 | No provider can serve this request right now |
no_responses_endpoint | 400 | Request requires the Response API but no provider supports it for this model |
non_streaming_not_supported | 400 | Model requires streaming |
operation_not_allowed | 400 | Operation not permitted for current resource state or role |
payload_too_large | 413 | Request body exceeds the size limit |
platform_keys_unavailable | 400 | No platform keys available for this model |
provider_blocked | 400 | All providers for this model are in the blocklist |
provider_not_in_allowlist | 400 | No provider in the allowlist supports this model |
rate_limit_exceeded | 429 | Requests-per-minute cap hit |
reasoning_not_supported | 400 | Model does not support reasoning/extended thinking |
required_params_not_supported | 400 | No provider supports all required parameters |
resource_not_found | 404 | Requested resource not found |
response_api_only | 400 | Model is only available via the Response API |
service_unavailable | 503 | Planned or temporary capacity shortage |
state_precondition_failed | 409 | Resource is not in the required state for this operation |
streaming_not_supported | 400 | Model does not support streaming |
structured_output_not_supported | 400 | Model does not support structured output |
thinking_disable_not_supported | 400 | Model does not support disabling thinking |
throughput_constraint_not_met | 400 | No provider meets the throughput constraint |
tier_opt_in_required | 400 | Model requires explicit tier opt-in (e.g., priority tier for fast mode) |
tool_choice_required_not_supported | 400 | Model does not support tool_choice=“required” |
tools_not_supported | 400 | Model does not support tool/function calling |
tools_with_structured_output_not_supported | 400 | Model does not support tools with structured output |
unknown_field | 400 | Request contains an unrecognized field |
unsupported_modalities | 400 | Audio output is not supported |
upstream_error | 502 | An upstream provider returned an invalid or unparseable response |
upstream_timeout | 504 | Upstream exceeded the request deadline |
vision_not_supported | 400 | Model does not support vision/image input |