Skip to main content
Entries on this page are generated automatically from OpenAPI specification diffs when releases ship. Breaking changes are reviewed by a human before publication. See API 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).
BYOKObservabilitySCIM

New response codes

Anthropic MessagesBYOKBreakingEnd UsersExternal UsersGuardrailsInternsOrganizationPrivate EndpointsWorkspaces

Breaking changes

  • CreateEndUserRequest: schema object removedAction required
    • Renamed to CreateExternalUserRequest; the shape is unchanged, so HTTP callers need no change. The Python SDK (openrouter 1.3.70 and later) and TypeScript SDK (@openrouter/sdk 1.5.0 and later) replace the CreateEndUserRequest model with CreateExternalUserRequest.
  • EndUser: schema object removedAction required
    • Renamed to ExternalUser; the shape is unchanged, so HTTP callers need no change. The Python SDK (openrouter 1.3.70 and later) and TypeScript SDK (@openrouter/sdk 1.5.0 and later) replace the EndUser model with ExternalUser.
  • EndUserResponse: schema object removedAction required
    • Renamed to ExternalUserResponse; the shape is unchanged, so HTTP callers need no change. The Python SDK (openrouter 1.3.70 and later) and TypeScript SDK (@openrouter/sdk 1.5.0 and later) replace the EndUserResponse model with ExternalUserResponse.
  • ListEndUsersResponse: schema object removedAction required
    • Renamed to ListExternalUsersResponse; the shape is unchanged, so HTTP callers need no change. The Python SDK (openrouter 1.3.70 and later) and TypeScript SDK (@openrouter/sdk 1.5.0 and later) replace the ListEndUsersResponse model with ListExternalUsersResponse.
  • UpdateEndUserRequest: schema object removedAction required
    • Renamed to UpdateExternalUserRequest; the shape is unchanged, so HTTP callers need no change. The Python SDK (openrouter 1.3.70 and later) and TypeScript SDK (@openrouter/sdk 1.5.0 and later) replace the UpdateEndUserRequest model with UpdateExternalUserRequest.
  • /end-users: endpoint object removedAction required
    • Requests to /end-users continue to work and are forwarded to /external-users, so HTTP callers need no change. In the Python SDK (openrouter 1.3.70 and later), switch client.end_users to client.external_users; the old namespace was removed. In the TypeScript SDK (@openrouter/sdk 1.5.0 and later), use externalUsers for new code; endUsers remains available as a compatibility alias. Method names (list, create, get, update, delete) are unchanged.
  • /end-users/{user}: endpoint object removedAction required
    • Requests to /end-users/{user} continue to work and are forwarded to /external-users/{user}, so HTTP callers need no change. Python SDK users switch to external_users; TypeScript SDK users can migrate to externalUsers while endUsers remains available as a compatibility alias, as described on the /end-users entry above.
  • GET /interns/{internId}/icon: content image/jpeg object removedNo action needed
    • The response is now declared as image/*. The bytes served and their Content-Type headers are unchanged.
  • GET /interns/{internId}/icon: content image/png object removedNo action needed
    • The response is now declared as image/*. The bytes served and their Content-Type headers are unchanged.
  • $.tags: End Users object removedNo action needed
    • Documentation tag renamed to External Users. No API change.
  • POST /messages: x-speakeasy-sse-sentinel [DONE] object removedAction required
    • Streams now end at the message_stop event and no longer send a trailing data: [DONE] frame, matching the Anthropic Messages protocol. Clients that detected the end of a /messages stream by waiting for [DONE] must terminate on message_stop on success, and on the error event or stream closure on failure. Anthropic’s official SDKs already expect this.
  • BulkAssignMembersRequest: member_user_ids now accepts at most 500 itemsAction required
    • Requests with more than 500 member user IDs now return 400; previously they were accepted. Split larger lists into batches of 500 or fewer, matching the existing limit on the key assignment endpoints.
    • Used by POST /guardrails/{id}/assignments/members
  • BulkUnassignMembersRequest: member_user_ids now accepts at most 500 itemsAction required
    • Requests with more than 500 member user IDs now return 400; previously they were accepted. Split larger lists into batches of 500 or fewer, matching the existing limit on the key assignment endpoints.
    • Used by POST /guardrails/{id}/assignments/members/remove
  • InternDaemonAccess: required viewer property addedAction required

New endpoints

Modified endpoints

New response codes

New schemas

Modified schemas

BYOK

Modified endpoints

Modified schemas

InternsSchemas

New endpoints

Modified endpoints

Modified schemas

InternsVault

New endpoints

Modified endpoints

Modified schemas

Schemas

Modified schemas

  • BatchSubmitBody: new property callback_url
BreakingSchemas

Breaking changes

  • BatchListItem: required expires_at property addedNo action needed
    • No action required for existing consumers. New response-only field.
    • Used by GET /batches
  • BatchListItem: required provider property addedNo action needed
    • No action required for existing consumers. New response-only field.
    • Used by GET /batches
  • BatchObject: required expires_at property addedNo action needed
  • BatchObject: required provider property addedNo action needed
  • BatchPaymentRequiredResponse: required expires_at property addedNo action needed
    • No action required for existing consumers. New response-only field.
    • Used by GET /batches/{id}
  • BatchPaymentRequiredResponse: required provider property addedNo action needed
    • No action required for existing consumers. New response-only field.
    • Used by GET /batches/{id}

Modified schemas

API KeysBreakingMCPModelsSchemasVault

Breaking changes

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingChatContainersEmbeddingsEndpointsFilesGuardrailsSchemasVideo Generation

Breaking changes

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingObservabilitySchemas

Breaking changes

Modified endpoints

New schemas

Modified schemas

Embeddings

Modified endpoints

API KeysBreaking

Breaking changes

  • GET /key: required budgets property addedNo action needed
    • No action required for existing consumers. New response-only field.
  • GET /key: required effective_budget property addedNo action needed
    • No action required for existing consumers. New response-only field.

Modified endpoints

New schemas

Modified schemas

API KeysBreakingEnd UsersGuardrailsInternsSchemas

Breaking changes

Modified endpoints

New response codes

Modified schemas

API KeysInternsSchemas

Modified endpoints

Modified schemas

InternsSchemas

New endpoints

New schemas

Modified schemas

API KeysBYOKBreakingSchemas

Breaking changes

  • BYOKKey: required declared_region property addedNo action needed
    • No action required for existing consumers. Responses from BYOK endpoints now include declared_region ("global", "europe", "us", or null) indicating the key’s declared data region.
  • GET /keys: required last_used_at property addedNo action needed
    • No action required for existing consumers. API key responses now include last_used_at, an ISO 8601 UTC timestamp of the key’s most recent recorded usage, or null if none has been recorded.
  • POST /keys: required last_used_at property addedNo action needed
  • GET /keys/{hash}: required last_used_at property addedNo action needed
  • PATCH /keys/{hash}: required last_used_at property addedNo action needed

Modified endpoints

New response codes

New schemas

Modified schemas

Schemas

Modified schemas

  • BatchProviderPreferences: description updated; new property allow_fallbacks
BreakingSTTSchemas

Breaking changes

Modified endpoints

Modified schemas

API KeysAnalyticsBreakingGenerationsSchemas

Breaking changes

  • ActivityItem: required cached_tokens property addedNo action needed

Modified endpoints

New response codes

New schemas

Modified schemas

ContainersEnd UsersOrganizationSchemas

New endpoints

Modified endpoints

New schemas

Modified schemas

BYOKBatchBreakingInternsSTTSchemasToolsVault

Breaking changes

New endpoints

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingEndpointsInternsPrivate EndpointsSchemas

Breaking changes

New endpoints

Modified endpoints

New schemas

Modified schemas

Embeddings

New response codes

BYOKBatchBreakingEndpointsInternsSchemasTTS

Breaking changes

New endpoints

Modified endpoints

New schemas

Modified schemas

BYOKInternsSCIMSchemas

New endpoints

Modified endpoints

New schemas

Modified schemas

BreakingInternsSchemas

Breaking changes

New endpoints

New schemas

Modified schemas

  • CustomToolCallItem:
    • new property async
    • new property call_id
    • new property id
    • new property input
    • new property name
    • new property namespace
    • new property status
    • new property type
    • type property_added
    • Used by POST /presets/{slug}/responses, POST /responses
  • FunctionCallItem:
    • new property arguments
    • new property async
    • new property call_id
    • new property id
    • new property name
    • new property namespace
    • new property status
    • new property subagent_id
    • new property subagent_items
    • new property type
    • type property_added
    • Used by POST /presets/{slug}/responses, POST /responses
InternsSchemasWorkspacesalpha.decisions

Modified endpoints

New schemas

Modified schemas

BYOKBreakingInternsSchemas

Breaking changes

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingSystemOnealpha.decisions

Breaking changes

New endpoints

  • POST /systemone: Submit a System One request (TypeSafe SDK compatible alias)

Modified endpoints

  • POST /systemone: x-speakeasy-name-override object_added; description updated; tags property_added
API KeysBYOKBreakingInternsObservabilitySchemas

Breaking changes

  • GET /key: required organization_id property addedNo action needed
  • GET /key: required workspace_id property addedNo action needed
  • CreateInternRequest: required workspace_id property removedNo action needed
  • InternChatAssistantMessage: required content property removedNo action needed
  • DELETE /interns/{internId}: requestBody requestBody property addedAction required
    • Regenerated SDK clients: pass {} when no acknowledgement is needed, or { acknowledge_workspace_loss: true } when deleting the intern also requires acknowledging workspace loss. Raw HTTP clients may continue to omit the body.

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingInternsSchemasalpha.decisions

Breaking changes

Modified endpoints

Modified schemas

BYOKContainersDecisionsInternsModelsPresetsResponsesSchemas

New endpoints

Modified endpoints

New schemas

Modified schemas

API KeysBreakingEmbeddingsRerankSTTSchemasVault

Breaking changes

  • GET /key: required free_model_daily_requests property addedNo action needed
  • GET /key: required allowed_data_regions property addedNo action needed

New endpoints

Modified endpoints

New response codes

New schemas

Modified schemas

EmbeddingsGuardrailsRerankSchemas

Modified endpoints

New response codes

Modified schemas

BYOKVideo Generation

Modified endpoints

New response codes

Modified schemas

BYOKPresets

Modified endpoints

Modified schemas

BreakingWorkspaces

Breaking changes

  • /workspaces/{id}/budgets: endpoint object removedAction required
    • SDK and Terraform callers: rename the path argument from id to workspace_ref (workspaceRef in camelCase clients). The URL value itself is unchanged.
  • /workspaces/{id}/budgets/{interval}: endpoint object removedAction required
    • SDK and Terraform callers: rename the path argument from id to workspace_ref (workspaceRef in camelCase clients). The URL value itself is unchanged.

New endpoints

BYOKBreakingSchemas

Breaking changes

Modified endpoints

Modified schemas

BYOKBreakingSchemas

Breaking changes

Modified endpoints

Modified schemas

Schemas

Modified schemas

BreakingObservability

Breaking changes

Modified endpoints

New schemas

Modified schemas

MCPSCIMSchemas

New endpoints

New schemas

Modified schemas

API KeysBYOKGuardrailsOAuth

New endpoints

Modified endpoints

New response codes

New schemas

Modified schemas

API KeysBreakingEmbeddingsRerankSCIMSTTSchemasTTSVideo Generation

Breaking changes

  • POST /keys: properties external_api_key object removedNo action needed
  • POST /keys: properties external_user object removedNo action needed

Modified endpoints

New response codes

New schemas

Modified schemas

BYOKBreakingModelsSchemas

Breaking changes

Modified endpoints

New schemas

Modified schemas

Schemas

Modified schemas

API KeysAnalyticsOAuth

Modified endpoints

BYOKBreakingContainersModels

Breaking changes

Modified endpoints

New schemas

Modified schemas

Schemas

Modified schemas

BreakingContainersFilesSchemasWorkspaces

Breaking changes

Modified endpoints

Modified schemas

ContainersRerankSTTSchemasTTSVideo Generation

New endpoints

New response codes

New schemas

Modified schemas

API KeysBreakingContainersSchemas

Breaking changes

  • ContainerReferenceEnvironment: maxLength 20 modifiedNo action needed
    • No action required for existing consumers. The maximum container reference length increased from 20 to 40 characters.
  • /containers/{session_id}/files: endpoint object removedAction required
    • Use the corresponding /containers/{container_id}/... endpoint and pass the canonical container_id returned by a bash or shell tool result instead of the original session ID.
  • /containers/{session_id}/files/{file_id}: endpoint object removedAction required
    • Use the corresponding /containers/{container_id}/... endpoint and pass the canonical container_id returned by a bash or shell tool result instead of the original session ID.
  • /containers/{session_id}/files/{file_id}/content: endpoint object removedAction required
    • Use the corresponding /containers/{container_id}/... endpoint and pass the canonical container_id returned by a bash or shell tool result instead of the original session ID.
  • ObservabilityDatadogDestination: default https://api.us5.datadoghq.com modifiedAction required
    • If your Datadog site is US5 and you relied on the omitted URL default, explicitly set url to https://api.us5.datadoghq.com. The new default is the US1 endpoint, https://api.datadoghq.com.
  • GET /keys: required external_user property addedNo action needed
  • POST /keys: required external_user property addedAction required
    • Connect client-secret callers must include a non-empty external_user when creating a key. Management-key callers should continue to omit this Connect-only field.
  • GET /keys/{hash}: required external_user property addedNo action needed
  • PATCH /keys/{hash}: required external_user property addedNo action needed

New endpoints

Modified endpoints

New schemas

Modified schemas

Schemas

New schemas

Modified schemas

BYOKEmbeddings

Modified endpoints

New response codes

Modified schemas

AnalyticsBreakingGuardrailsSchemas

Breaking changes

  • GET /analytics/meta: tags beta.Analytics property removedNo action needed
  • POST /analytics/query: tags beta.Analytics property removedNo action needed
  • $.tags: beta.Analytics object removedNo action needed

Modified endpoints

Modified schemas

BYOKBreakingSchemas

Breaking changes

New capabilities

  • BYOK API: manage credential restrictions (allowed_models, allowed_user_ids, allowed_api_key_hashes) via create/update. See the BYOK guide for examples and validation rules.

New schemas

Modified schemas

BreakingSchemasbeta.Analytics

Breaking changes

  • POST /analytics/query: maxItems 10 modifiedAction required
    • Limit classifier_dimensions.dimension_names to at most two entries. Split requests that previously queried three or more classifier dimensions.

Modified endpoints

Modified schemas

BreakingPresetsSchemasWorkspaces

Breaking changes

Modified endpoints

New schemas

Modified schemas

DatasetsSchemas

Modified endpoints

Modified schemas

Anthropic MessagesBreakingGenerationsSchemasWorkspaces

Breaking changes

  • MessagesErrorDetail: schema object removedNo action needed
  • MessagesErrorResponse: schema object removedNo action needed

Modified endpoints

New schemas

Modified schemas

DatasetsModelsWorkspaces

New endpoints

Modified endpoints

New schemas

Modified schemas

BYOKBenchmarksBreakingGenerationsSchemas

Breaking changes

  • UnifiedBenchmarksResponse: discriminator discriminator object removedNo action needed
  • GenerationContentData: required error property addedNo action needed

Modified endpoints

  • GET /benchmarks:
    • description updated
    • new parameter benchmark_type
    • new parameter include_run_config
    • new parameter search_engine
    • new parameter search_surface
    • parameter task_type updated
  • GET /generation/content: description updated; response schema updated
  • GET /byok: parameter provider updated

New schemas

Modified schemas

BreakingPresetsSchemas

Breaking changes

Modified endpoints

New schemas

Modified schemas

Schemas

Modified schemas

Schemas

Modified schemas

BYOKBreakingObservabilitySchemas

Breaking changes

Modified endpoints

New response codes

New schemas

Modified schemas

FilesSchemas

Modified endpoints

Modified schemas

SchemasWorkspacesbeta.Analytics

Modified endpoints

New response codes

New schemas

Modified schemas

AnalyticsBreakingEndpointsbeta.Analytics

Breaking changes

  • GenerationResponse: required workspace_id property addedNo action needed
    • No action required for existing consumers. Generation responses now include workspace_id, the ID of the workspace the generation belongs to.
    • Used by GET /generation

Modified endpoints

New schemas

Modified schemas

Guardrails

Modified endpoints

Modified schemas

BYOKBreakingSCIMSchemas

Breaking changes

  • SpeechRequest: required voice property removedNo action needed
    • No action required for existing consumers. voice is now optional; requests that send it are unaffected.
    • Used by POST /audio/speech

New endpoints

Modified endpoints

New schemas

Modified schemas

BenchmarksBreakingFilesSchemasWorkspaces

Breaking changes

  • FileMetadata: schema object removedNo action needed
  • FileDeleteResponse: discriminator discriminator object addedAction required
    • HTTP clients: no change. Requests without a vendor SDK still get the OpenRouter shape (_shape: "openrouter") with the same fields as before. Typed SDK clients: this response type is now a union discriminated by _shape. In the TypeScript SDK, the field is named shape, so check shape === "openrouter" before reading OpenRouter fields such as id and type.
    • Used by DELETE /files/{file_id}
  • FileDeleteResponse: properties id object removedNo action needed
  • FileDeleteResponse: properties type object removedNo action needed
  • FileDeleteResponse: required id property removedNo action needed
  • FileDeleteResponse: required type property removedNo action needed
  • FileListResponse: discriminator discriminator object addedAction required
    • HTTP clients: no change. Requests without a vendor SDK still get the OpenRouter shape (_shape: "openrouter") with the same fields as before. Typed SDK clients: this response type is now a union discriminated by _shape. In the TypeScript SDK, the field is named shape, so check shape === "openrouter" before reading OpenRouter fields such as cursor.
    • Used by GET /files
  • FileListResponse: properties cursor object removedNo action needed
  • FileListResponse: properties data object removedNo action needed
  • FileListResponse: properties first_id object removedNo action needed
  • FileListResponse: properties has_more object removedNo action needed
  • FileListResponse: properties last_id object removedNo action needed
  • FileListResponse: required cursor property removedNo action needed
  • FileListResponse: required data property removedNo action needed
  • FileListResponse: required first_id property removedNo action needed
  • FileListResponse: required has_more property removedNo action needed
  • FileListResponse: required last_id property removedNo action needed

Modified endpoints

New response codes

New schemas

Modified schemas

BreakingFilesResponsesSchemas

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
  • $.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

Modified schemas

EmbeddingsSchemas
BYOKBreakingResponsesSchemas

Breaking changes

  • POST /responses: tags beta.responses property removedNo action needed
    • 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 removedNo action needed
    • Same change as above at the specification level: the beta.responses tag definition is gone from $.tags.

Modified endpoints

Modified schemas

Schemas

Modified schemas

Schemas

New schemas

Modified schemas

  • ImageStreamingResponse: new union variant added
DatasetsImagesModelsSTT

Modified endpoints

  • POST /audio/transcriptions: description updated; request body now accepts multipart/form-data
  • GET /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 sort updated

New response codes

New schemas

Modified schemas

Workspaces

New endpoints

New schemas