announcement aidev BREAKING SIG 3/5

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.availability object 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, and message unchanged
  • Breaking: unknown model IDs on Chat Completions now return HTTP 400 consistently (previously could surface as 500)
  • retry_after mirrors the Retry-After header in the response body
  • error.metadata.previous_errors slimmed 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.