https://openrouter.ai/api/v1).
ErrorsSchemas
Actionable model availability errors
Model-availability failures (unknown model, no endpoints, deprecated model, provider capacity exhausted, region/privacy/constraint filtering, ended:free promotions) now carry an additive error.availability object on the error envelope, on non-streaming responses and streaming error chunks across all three API skins (Chat Completions, Responses, Anthropic Messages).- New
error.availabilityobject with fields:code(one of 11 stable values: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),retryable,retry_after,requested_models,affected_providers,excluded_by,fallback_models,constraint, anddocs_url. See Model availability errors for the full code table, field reference, and example payloads. - Migration notes: The change is additive and backward compatible —
error_type,http_status, andmessageare unchanged, so existing error handling keeps working. Clients that currently parse the free-textmessageprose to distinguish availability conditions should switch toavailability.code. Clients keying off HTTP status alone should note that unknown model ids on the chat completions router now consistently return400(previously they could surface as500).availability.retry_aftermirrors theRetry-Afterheader in the response body and is populated whenever any attempted endpoint supplied a retry hint.error.metadata.previous_errorsis now a slim, stable shape ({provider, code, status}) and no longer carries raw upstream provider error bodies — do not parse upstream bodies from it.
Benchmarks
Modified endpoints
GET /benchmarks: description updated; parametersourceupdated; response schema updated
New schemas
UnifiedBenchmarksORItem- Used by
GET /benchmarks
- Used by
Modified schemas
UnifiedBenchmarksMeta: enum property_added- Used by
GET /benchmarks
- Used by
UnifiedBenchmarksResponse: example modified; new union variant added- Used by
GET /benchmarks
- Used by
BreakingFilesResponsesSchemas
Breaking changes
FusionCallAnalysisInProgressEvent: requiredanalyst_modelproperty addedNo action needed- No action required for existing consumers.
analyst_modelreplacesjudge_modelin this streaming event;judge_modelis retained as a deprecated alias that always carries the same value. - Used by
POST /responses
- No action required for existing consumers.
- $.tags: responses object removedNo action needed
- No action required. The
responsesOpenAPI tag was renamed toResponsesfor consistent Title Case across the API Reference. This is a documentation-grouping change only:POST /api/v1/responsesand its schemas are unchanged, SDK namespaces are unchanged (client.responses.send()in TypeScript and Python,Sdk.Responses.Send()in Go), and endpoint documentation URLs are unchanged.
- No action required. The
Modified endpoints
GET /files: parametercursorupdated; response schema updatedPOST /files: response schema updatedDELETE /files/{file_id}: parameterfile_idupdated; response schema updatedGET /files/{file_id}: parameterfile_idupdated; response schema updatedGET /files/{file_id}/content: parameterfile_idupdated
Modified schemas
-
FusionAnalysisResult: description updated -
FusionCallAnalysisCompletedEvent: description updated- Used by
POST /responses
- Used by
-
FusionCallAnalysisInProgressEvent:- description updated
- example modified
- new property
analyst_model - property
judge_modeldeprecated (alias ofanalyst_model, kept for existing consumers) - Used by
POST /responses
-
FusionPlugin: description updated -
FusionServerToolConfig: description updated; propertyeffortupdated; propertymax_tokensupdated -
FusionServerTool_OpenRouter: description updated -
FusionSource: description updated -
OutputFusionServerToolItem: description updated -
ChatWebSearchShorthand: description updated -
WebSearchConfig: description updated -
WebSearchDomainFilter: example modified; new propertyblocked_domains -
WebSearchServerToolConfig: description updated -
AnthropicFileDocumentSource: example modified -
FileDeleteResponse: example modified- Used by
DELETE /files/{file_id}
- Used by
-
FileListResponse: example modified- Used by
GET /files
- Used by
-
FileMetadata: example modified- Used by
GET /files,GET /files/{file_id},POST /files
- Used by
-
GenerationResponse: propertydata_regionupdated- Used by
GET /generation
- Used by
-
CreateGuardrailRequest: new propertyenable_free_model_publication; new propertyenable_free_model_training; new propertyenable_paid_model_training- Used by
POST /guardrails
- Used by
-
Guardrail:- example modified
- new property
enable_free_model_publication - new property
enable_free_model_training - new property
enable_paid_model_training
-
UpdateGuardrailRequest: new propertyenable_free_model_publication; new propertyenable_free_model_training; new propertyenable_paid_model_training- Used by
PATCH /guardrails/{id}
- Used by
-
AutoBetaRouterPlugin:- example modified
- new property
cost_tier - deprecated property_added
- description updated
-
AutoRouterPlugin:- example modified
- new property
cost_tier - deprecated property_added
- description updated
EmbeddingsSchemas
Modified endpoints
POST /embeddings: request schema updated
Modified schemas
-
Quantization: enum property_added -
ReasoningFormat: enum property_added
BYOKBreakingResponsesSchemas
Breaking changes
POST /responses: tagsbeta.responsesproperty removed- Migration: no action for HTTP clients. The Responses API is now GA.
beta.responseswas an OpenAPI grouping tag and SDK namespace, never a URL.POST /api/v1/responsesand its request and response schemas are unchanged, so raw HTTP callers and OpenAI-compatible clients (including the OpenAI Agents SDK) need no changes. The endpoint now appears under Responses instead of Beta responses in the API Reference. - Migration for SDK users: optional until sunset. The canonical namespace is now
responses, withclient.responses.send()(TypeScript, Python) andclient.Responses.Send()(Go). Thebeta.responsesnamespace, and TypeScript’sbetaResponsesSendstandalone function, keep working as deprecated aliases; their removal will be announced here with a sunset date before it ships.
- Migration: no action for HTTP clients. The Responses API is now GA.
- $.tags: beta.responses object removed
- Same change as above at the specification level: the
beta.responsestag definition is gone from$.tags.
- Same change as above at the specification level: the
Modified endpoints
POST /responses: tags property_addedGET /byok: parameterproviderupdated
Modified schemas
-
MessagesStartEvent: propertyproviderupdated- Used by
POST /messages
- Used by
-
ProviderName: enum property_added -
ProviderOptions: new propertyclaude-on-aws -
ProviderResponse: enum property_added- Used by
GET /generation
- Used by
-
BYOKProviderSlug: enum property_added
Schemas
Modified schemas
-
MessagesStartEvent: propertyproviderupdated- Used by
POST /messages
- Used by
-
ProviderName: enum property_added -
ProviderOptions: new propertyvoyageai -
ProviderResponse: enum property_added- Used by
GET /generation
- Used by
-
AnthropicCompactionBlock: new propertyencrypted_content- Used by
POST /messages
- Used by
-
MessagesToolAdditionBlock: new propertycache_control; new union variant added; type property_removedtoolwidened from a singletool_referenceobject to a union oftool_reference,mcp_tool_reference(name+server_name) andmcp_toolset_reference(server_name). Thetool_referencevariant is unchanged, so existing{ "type": "tool_reference", "name": "…" }payloads stay valid. Thenameandtypeproperties moved into that variant rather than being removed.- Used by
POST /messages,POST /presets/{slug}/messages
-
MessagesToolRemovalBlock: new propertycache_control; new union variant added; type property_removedtoolwidened the same way asMessagesToolAdditionBlock; existingtool_referencepayloads stay valid.- Used by
POST /messages,POST /presets/{slug}/messages
-
ORAnthropicStopReason: enum property_added- Used by
POST /messages
- Used by
Schemas
New schemas
ImageGenTextChunkEvent- Used by
POST /images
- Used by
Modified schemas
ImageStreamingResponse: new union variant added- Used by
POST /images
- Used by
DatasetsImagesModelsSTT
Modified endpoints
POST /audio/transcriptions: description updated; request body now acceptsmultipart/form-dataGET /datasets/rankings-daily:- description updated
- new parameter
category - new parameter
context_bucket - new parameter
language_type - new parameter
modality - new parameter
period
GET /models:- new parameter
max_age_days - new parameter
max_agentic_index - new parameter
max_coding_index - new parameter
max_intelligence_index - new parameter
max_output_price - new parameter
max_tool_success_rate - new parameter
min_age_days - new parameter
min_agentic_index - new parameter
min_coding_index - new parameter
min_intelligence_index - new parameter
min_output_price - new parameter
min_tool_success_rate - description updated
- parameter
sortupdated
- new parameter
New response codes
POST /images: now returns413
New schemas
STTSegment- Used by
POST /audio/transcriptions
- Used by
STTTimestampGranularity- Used by
POST /audio/transcriptions
- Used by
STTWord- Used by
POST /audio/transcriptions
- Used by
Modified schemas
-
ChatFunctionTool: new union variant added -
FusionServerToolConfig: description updated -
ImageGenCompletedEvent: description updated; example modified- Used by
POST /images
- Used by
-
ImageGenerationResponse: propertymedia_typeupdated- Used by
POST /images
- Used by
-
STTRequest: new propertyresponse_format; new propertytimestamp_granularities- Used by
POST /audio/transcriptions
- Used by
-
STTResponse:- new property
duration - new property
language - new property
segments - new property
task - new property
words - Used by
POST /audio/transcriptions
- new property
Workspaces
New endpoints
GET /workspaces/{id}/members: List workspace members
New schemas
ListWorkspaceMembersResponse- Used by
GET /workspaces/{id}/members
- Used by