Actionable model availability errors with structured error.availability object
OpenRouter now returns a structured error.availability object on API error envelopes when a model cannot be used, replacing free-text prose with 11 stable machine-readable codes across all three API skins. The change is additive but includes one behavioral shift: unknown model IDs on the Chat Completions router now consistently return HTTP 400 instead of the previous 500.
PUBLISHED2026-08-19
OBSERVED2026-08-21
AGE7d
SOURCES1
- New
error.availabilityobject on error envelopes for non-streaming responses and streaming error chunks across Chat Completions, Responses, and Anthropic Messages skins - 11 stable error codes:
model_not_found,wrong_endpoint,no_endpoints,model_deprecated,model_unavailable_upstream,capacity_exhausted,temporarily_unavailable,region_restricted,privacy_restricted,constraint_filtered,free_variant_ended - Fields include:
retryable,retry_after,requested_models,affected_providers,excluded_by,fallback_models,constraint,docs_url - Additive and backward compatible —
error_type,http_status, andmessageunchanged - Breaking: unknown model IDs on Chat Completions now return HTTP 400 consistently (previously could surface as 500)
retry_aftermirrors theRetry-Afterheader in the response bodyerror.metadata.previous_errorsslimmed to{provider, code, status}— no longer carries raw upstream provider error bodies
COMMUNITY
No curated reactions recorded for this event. Facts and takes are kept in separate layers — community context is added by hand, never blended into the record above.