> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # API Changelog > Changes to the OpenRouter API, generated from the OpenAPI specification on every release. Entries on this page are generated automatically from [OpenAPI specification](/docs/api_reference/overview) diffs when releases ship. Breaking changes are reviewed by a human before publication. See [API Versioning](/docs/api_reference/versioning) for what counts as a breaking change and how deprecations are announced. Endpoint paths are shown relative to the API base URL (`https://openrouter.ai/api/v1`). ## New capabilities * BYOK API: manage credential restrictions (`allowed_models`, `allowed_user_ids`, `allowed_api_key_hashes`) via create/update. See the [BYOK guide](/docs/guides/overview/auth/byok#managing-filters-via-the-management-api) for examples and validation rules. ## Modified endpoints * [`GET /benchmarks`](/docs/api/api-reference/benchmarks/list-benchmarks): description updated; parameter `source` updated; response schema updated ## New schemas * `UnifiedBenchmarksORItem` * Used by [`GET /benchmarks`](/docs/api/api-reference/benchmarks/list-benchmarks) ## Modified schemas * `UnifiedBenchmarksMeta`: enum property\_added * Used by [`GET /benchmarks`](/docs/api/api-reference/benchmarks/list-benchmarks) * `UnifiedBenchmarksResponse`: example modified; new union variant added * Used by [`GET /benchmarks`](/docs/api/api-reference/benchmarks/list-benchmarks) ## Breaking changes * `FusionCallAnalysisInProgressEvent`: required `analyst_model` property addedNo action needed * **No action required for existing consumers.** `analyst_model` replaces `judge_model` in this streaming event; `judge_model` is retained as a deprecated alias that always carries the same value. * Used by [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * \$.tags: responses object removedNo action needed * **No action required.** The `responses` OpenAPI tag was renamed to `Responses` for consistent Title Case across the API Reference. This is a documentation-grouping change only: `POST /api/v1/responses` and 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. ## Modified endpoints * [`GET /files`](/docs/api/api-reference/files/list-files): parameter `cursor` updated; response schema updated * [`POST /files`](/docs/api/api-reference/files/upload-a-file): response schema updated * [`DELETE /files/{file_id}`](/docs/api/api-reference/files/delete-a-file): parameter `file_id` updated; response schema updated * [`GET /files/{file_id}`](/docs/api/api-reference/files/get-file-metadata): parameter `file_id` updated; response schema updated * [`GET /files/{file_id}/content`](/docs/api/api-reference/files/download-file-content): parameter `file_id` updated ## Modified schemas * `FusionAnalysisResult`: description updated * Used by [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body), [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionCallAnalysisCompletedEvent`: description updated * Used by [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionCallAnalysisInProgressEvent`: * description updated * example modified * new property `analyst_model` * property `judge_model` deprecated (alias of `analyst_model`, kept for existing consumers) * Used by [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionPlugin`: description updated * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionServerToolConfig`: description updated; property `effort` updated; property `max_tokens` updated * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionServerTool_OpenRouter`: description updated * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `FusionSource`: description updated * Used by [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body), [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `OutputFusionServerToolItem`: description updated * Used by [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body), [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `ChatWebSearchShorthand`: description updated * Used by [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion), [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * `WebSearchConfig`: description updated * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * `WebSearchDomainFilter`: example modified; new property `blocked_domains` * Used by [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body), [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `WebSearchServerToolConfig`: description updated * Used by [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body), [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `AnthropicFileDocumentSource`: example modified * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message), [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * `FileDeleteResponse`: example modified * Used by [`DELETE /files/{file_id}`](/docs/api/api-reference/files/delete-a-file) * `FileListResponse`: example modified * Used by [`GET /files`](/docs/api/api-reference/files/list-files) * `FileMetadata`: example modified * Used by [`GET /files`](/docs/api/api-reference/files/list-files), [`GET /files/{file_id}`](/docs/api/api-reference/files/get-file-metadata), [`POST /files`](/docs/api/api-reference/files/upload-a-file) * `GenerationResponse`: property `data_region` updated * Used by [`GET /generation`](/docs/api/api-reference/generations/get-request-&-usage-metadata-for-a-generation) * `CreateGuardrailRequest`: new property `enable_free_model_publication`; new property `enable_free_model_training`; new property `enable_paid_model_training` * Used by [`POST /guardrails`](/docs/api/api-reference/guardrails/create-a-guardrail) * `Guardrail`: * example modified * new property `enable_free_model_publication` * new property `enable_free_model_training` * new property `enable_paid_model_training` - [`GET /guardrails`](/docs/api/api-reference/guardrails/list-guardrails) - [`GET /guardrails/{id}`](/docs/api/api-reference/guardrails/get-a-guardrail) - [`PATCH /guardrails/{id}`](/docs/api/api-reference/guardrails/update-a-guardrail) - [`POST /guardrails`](/docs/api/api-reference/guardrails/create-a-guardrail) * `UpdateGuardrailRequest`: new property `enable_free_model_publication`; new property `enable_free_model_training`; new property `enable_paid_model_training` * Used by [`PATCH /guardrails/{id}`](/docs/api/api-reference/guardrails/update-a-guardrail) * `AutoBetaRouterPlugin`: * example modified * new property `cost_tier` * deprecated property\_added * description updated - [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) - [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) - [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) - [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) - [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) - [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `AutoRouterPlugin`: * example modified * new property `cost_tier` * deprecated property\_added * description updated - [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) - [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) - [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) - [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) - [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) - [`POST /responses`](/docs/api/api-reference/responses/create-a-response) ## Modified endpoints * [`POST /embeddings`](/docs/api/api-reference/embeddings/submit-an-embedding-request): request schema updated ## Modified schemas * `Quantization`: enum property\_added * [`GET /endpoints/zdr`](/docs/api/api-reference/endpoints/preview-the-impact-of-zdr-on-the-available-endpoints) * [`GET /models/{author}/{slug}/endpoints`](/docs/api/api-reference/endpoints/list-all-endpoints-for-a-model) * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /embeddings`](/docs/api/api-reference/embeddings/submit-an-embedding-request) * [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /rerank`](/docs/api/api-reference/rerank/submit-a-rerank-request) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `ReasoningFormat`: enum property\_added * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) ## Breaking changes * [`POST /responses`](/docs/api/api-reference/responses/create-a-response): tags `beta.responses` property removed * **Migration: no action for HTTP clients.** The Responses API is now GA. `beta.responses` was an OpenAPI grouping tag and SDK namespace, never a URL. `POST /api/v1/responses` and 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`, with `client.responses.send()` (TypeScript, Python) and `client.Responses.Send()` (Go). The `beta.responses` namespace, and TypeScript's `betaResponsesSend` standalone function, keep working as deprecated aliases; their removal will be announced here with a sunset date before it ships. * \$.tags: beta.responses object removed * Same change as above at the specification level: the `beta.responses` tag definition is gone from `$.tags`. ## Modified endpoints * [`POST /responses`](/docs/api/api-reference/responses/create-a-response): tags property\_added * [`GET /byok`](/docs/api/api-reference/byok/list-byok-provider-credentials): parameter `provider` updated ## Modified schemas * `MessagesStartEvent`: property `provider` updated * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * `ProviderName`: enum property\_added * [`GET /endpoints/zdr`](/docs/api/api-reference/endpoints/preview-the-impact-of-zdr-on-the-available-endpoints) * [`GET /models/{author}/{slug}/endpoints`](/docs/api/api-reference/endpoints/list-all-endpoints-for-a-model) * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /embeddings`](/docs/api/api-reference/embeddings/submit-an-embedding-request) * [`POST /images`](/docs/api/api-reference/images/generate-an-image) * [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /rerank`](/docs/api/api-reference/rerank/submit-a-rerank-request) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `ProviderOptions`: new property `claude-on-aws` * [`POST /audio/speech`](/docs/api/api-reference/tts/create-speech) * [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) * [`POST /images`](/docs/api/api-reference/images/generate-an-image) * [`POST /videos`](/docs/api/api-reference/video-generation/submit-a-video-generation-request) * `ProviderResponse`: enum property\_added * Used by [`GET /generation`](/docs/api/api-reference/generations/get-request-&-usage-metadata-for-a-generation) * `BYOKProviderSlug`: enum property\_added * [`GET /byok`](/docs/api/api-reference/byok/list-byok-provider-credentials) * [`GET /byok/{id}`](/docs/api/api-reference/byok/get-a-byok-provider-credential) * [`PATCH /byok/{id}`](/docs/api/api-reference/byok/update-a-byok-provider-credential) * [`POST /byok`](/docs/api/api-reference/byok/create-a-byok-provider-credential) ## Modified schemas * `MessagesStartEvent`: property `provider` updated * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * `ProviderName`: enum property\_added * [`GET /endpoints/zdr`](/docs/api/api-reference/endpoints/preview-the-impact-of-zdr-on-the-available-endpoints) * [`GET /models/{author}/{slug}/endpoints`](/docs/api/api-reference/endpoints/list-all-endpoints-for-a-model) * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /embeddings`](/docs/api/api-reference/embeddings/submit-an-embedding-request) * [`POST /images`](/docs/api/api-reference/images/generate-an-image) * [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /rerank`](/docs/api/api-reference/rerank/submit-a-rerank-request) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `ProviderOptions`: new property `voyageai` * [`POST /audio/speech`](/docs/api/api-reference/tts/create-speech) * [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) * [`POST /images`](/docs/api/api-reference/images/generate-an-image) * [`POST /videos`](/docs/api/api-reference/video-generation/submit-a-video-generation-request) * `ProviderResponse`: enum property\_added * Used by [`GET /generation`](/docs/api/api-reference/generations/get-request-&-usage-metadata-for-a-generation) * `AnthropicCompactionBlock`: new property `encrypted_content` * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) * `MessagesToolAdditionBlock`: new property `cache_control`; new union variant added; type property\_removed * `tool` widened from a single `tool_reference` object to a union of `tool_reference`, `mcp_tool_reference` (`name` + `server_name`) and `mcp_toolset_reference` (`server_name`). The `tool_reference` variant is unchanged, so existing `{ "type": "tool_reference", "name": "…" }` payloads stay valid. The `name` and `type` properties moved into that variant rather than being removed. * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message), [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * `MessagesToolRemovalBlock`: new property `cache_control`; new union variant added; type property\_removed * `tool` widened the same way as `MessagesToolAdditionBlock`; existing `tool_reference` payloads stay valid. * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message), [`POST /presets/{slug}/messages`](/docs/api/api-reference/presets/create-a-preset-from-a-messages-request-body) * `ORAnthropicStopReason`: enum property\_added * Used by [`POST /messages`](/docs/api/api-reference/anthropic-messages/create-a-message) ## New schemas * `ImageGenTextChunkEvent` * Used by [`POST /images`](/docs/api/api-reference/images/generate-an-image) ## Modified schemas * `ImageStreamingResponse`: new union variant added * Used by [`POST /images`](/docs/api/api-reference/images/generate-an-image) ## Modified endpoints * [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription): description updated; request body now accepts `multipart/form-data` * [`GET /datasets/rankings-daily`](/docs/api/api-reference/datasets/daily-token-totals-for-top-50-models): * description updated * new parameter `category` * new parameter `context_bucket` * new parameter `language_type` * new parameter `modality` * new parameter `period` * [`GET /models`](/docs/api/api-reference/models/list-all-models-and-their-properties): * 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 `sort` updated ## New response codes * [`POST /images`](/docs/api/api-reference/images/generate-an-image): now returns `413` ## New schemas * `STTSegment` * Used by [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) * `STTTimestampGranularity` * Used by [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) * `STTWord` * Used by [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) ## Modified schemas * `ChatFunctionTool`: new union variant added * Used by [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion), [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * `FusionServerToolConfig`: description updated * [`POST /chat/completions`](/docs/api/api-reference/chat/create-a-chat-completion) * [`POST /presets/{slug}/chat/completions`](/docs/api/api-reference/presets/create-a-preset-from-a-chat-completions-request-body) * [`POST /presets/{slug}/responses`](/docs/api/api-reference/presets/create-a-preset-from-a-responses-request-body) * [`POST /responses`](/docs/api/api-reference/responses/create-a-response) * `ImageGenCompletedEvent`: description updated; example modified * Used by [`POST /images`](/docs/api/api-reference/images/generate-an-image) * `ImageGenerationResponse`: property `media_type` updated * Used by [`POST /images`](/docs/api/api-reference/images/generate-an-image) * `STTRequest`: new property `response_format`; new property `timestamp_granularities` * Used by [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) * `STTResponse`: * new property `duration` * new property `language` * new property `segments` * new property `task` * new property `words` * Used by [`POST /audio/transcriptions`](/docs/api/api-reference/stt/create-transcription) ## New endpoints * [`GET /workspaces/{id}/members`](/docs/api/api-reference/workspaces/list-workspace-members): List workspace members ## New schemas * `ListWorkspaceMembersResponse` * Used by [`GET /workspaces/{id}/members`](/docs/api/api-reference/workspaces/list-workspace-members)