NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3113 most downloaded on PyPI
Official Python Client SDK for OpenRouter.
Last release 2 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 months old
317 releases · first in 2025
One column per month.
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.guardrails.list() : response.data[].content_filter_builtins[].slug.enum(secrets) Added
open_router.guardrails.list(): response.data[].content_filter_builtins[].slug.enum(secrets) Addedopen_router.guardrails.create():
request.content_filter_builtins[].slug.enum(secrets) Addedresponse.data.content_filter_builtins[].slug.enum(secrets) Addedopen_router.guardrails.get(): response.data.content_filter_builtins[].slug.enum(secrets) Addedopen_router.guardrails.update():
request.content_filter_builtins[].slug.enum(secrets) Addedresponse.data.content_filter_builtins[].slug.enum(secrets) AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.workspaces.delete() : request.confirm_default_workspace_deletion Added
open_router.workspaces.delete(): request.confirm_default_workspace_deletion AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
open_router.presets.create_presets_responses() :
open_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(ShellCallOutputItem) Changedopen_router.responses.send():
request.input.union(Array<>)[].union(ShellCallOutputItem) Changedopen_router.beta.responses.send():
request.input.union(Array<>)[].union(ShellCallOutputItem) ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.images.generate() : request.user Added
open_router.images.generate(): request.user AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.images.list_model_endpoints() : response.endpoints[].pricing[].unit.enum(request) Added
open_router.images.list_model_endpoints(): response.endpoints[].pricing[].unit.enum(request) AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.tts.create_speech() : error.status[413] Added
open_router.tts.create_speech(): error.status[413] Addedopen_router.stt.create_transcription(): error.status[413] Addedopen_router.stt.create_transcription_multipart(): error.status[413] Addedopen_router.rerank.rerank(): error.status[413] Addedopen_router.video_generation.generate(): error.status[413] AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.containers.promote_container_file() : Added
open_router.containers.promote_container_file(): AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
request.tools[].union(BashServerTool).parameters.environment Changed
open_router.chat.send():
request.tools[].union(BashServerTool).parameters.environment Changedopen_router.presets.create_presets_chat_completions():
request.tools[].union(BashServerTool).parameters.environment Changedopen_router.presets.create_presets_messages():
request.tools[].union(ShellServerTool_OpenRouter).parameters.environment Changedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(BashServerTool).parameters.environment Changedopen_router.responses.send():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(BashServerTool).parameters.environment Changedopen_router.beta.responses.send():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(ShellServerTool_OpenRouter).parameters.environment ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
request.tools[].union(BashServerTool).parameters.environment Changed
open_router.chat.send():
request.tools[].union(BashServerTool).parameters.environment Changedopen_router.presets.create_presets_chat_completions():
request.tools[].union(BashServerTool).parameters.environment Changedopen_router.presets.create_presets_messages():
request.tools[].union(BashServerTool).parameters.environment Changedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(BashServerTool).parameters.environment Changedopen_router.responses.send():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(BashServerTool).parameters.environment Changedopen_router.beta.responses.send():
request.input.union(Array<>)[].union(AdditionalToolsItem).tools[].union(ShellServerTool_OpenRouter).parameters.environment ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
open_router.byok.create() : request.allowed_api_key_hashes Added
open_router.byok.create(): request.allowed_api_key_hashes Addedopen_router.byok.update(): request.allowed_api_key_hashes AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.analytics.get_analytics_meta() : Added
open_router.analytics.get_analytics_meta(): Addedopen_router.analytics.query_analytics(): Addedopen_router.beta.analytics.get_analytics_meta(): Removed (Breaking ⚠️)open_router.beta.analytics.query_analytics(): Removed (Breaking ⚠️)Generated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.beta.responses.send() :
open_router.beta.responses.send():
request.input.union(Array<>)[].union(ReasoningItem).format.enum(bedrock_xai_responses_v1) Addedresponse Changedopen_router.chat.send():
request.messages[].union(assistant).reasoning_details[].union(reasoning.server_tool_call).format.enum(bedrock_xai_responses_v1) Addedresponse Changedopen_router.presets.create_presets_chat_completions():
request.messages[].union(assistant).reasoning_details[].union(reasoning.summary).format.enum(bedrock_xai_responses_v1) Addedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(ReasoningItem).format.enum(bedrock_xai_responses_v1) Addedopen_router.responses.send():
request.input.union(Array<>)[].union(class (8)).format.enum(bedrock_xai_responses_v1) Addedresponse ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.beta.responses.send() :
open_router.beta.responses.send():
request.input.union(Array<>)[].union(CustomToolCallItem).status Addedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(CustomToolCallItem).status Addedopen_router.responses.send():
request.input.union(Array<>)[].union(CustomToolCallItem).status AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.beta.responses.send() :
open_router.beta.responses.send():
request.input.union(Array<>)[].union(OutputSubagentServerToolItem).status.enum(failed) Addedresponse Changedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[].union(OutputSubagentServerToolItem).status.enum(failed) Addedopen_router.responses.send():
request.input.union(Array<>)[].union(OutputAdvisorServerToolItem).status.enum(failed) Addedresponse ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.video_generation.generate() : request Changed
open_router.video_generation.generate(): request Changedopen_router.video_generation.list_videos_models(): response.data[] ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
open_router.beta.responses.send():
open_router.beta.responses.send():
request.input.union(Array<>)[] Changedresponse Changedopen_router.chat.send():
request.tools[].union(SubagentServerTool_OpenRouter).parameters Changedopen_router.presets.create_presets_chat_completions():
request.tools[].union(SubagentServerTool_OpenRouter).parameters Changedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[] Changedopen_router.responses.send():
request.input.union(Array<>)[] Changedresponse ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.datasets.get_session_cost(): Added
open_router.datasets.get_session_cost(): AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.workspaces.delete(): request.confirm_default_settings_deletion Added
open_router.workspaces.delete(): request.confirm_default_settings_deletion AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.models.list(): request.region Changed
open_router.models.list(): request.region ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.beta.responses.send():
open_router.beta.responses.send():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.tts.create_speech():
request.provider.options.databricks Addedopen_router.stt.create_transcription():
request.provider.options.databricks Addedopen_router.byok.list():
request.provider Changedresponse.data[].provider.enum(databricks) Addedopen_router.byok.create():
request.provider.enum(databricks) Addedresponse.data.provider.enum(databricks) Addedopen_router.byok.get(): response.data.provider.enum(databricks) Addedopen_router.byok.update(): response.data.provider.enum(databricks) Addedopen_router.chat.send():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.embeddings.generate():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.endpoints.list_zdr_endpoints(): response.data[].provider_name.enum(databricks) Addedopen_router.endpoints.list(): response.data.endpoints[].provider_name.enum(databricks) Addedopen_router.generations.get_generation(): response.data.provider_responses[].provider_name.enum(databricks) Addedopen_router.images.generate(): request.provider Changedopen_router.presets.create_presets_chat_completions():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.presets.create_presets_messages():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.presets.create_presets_responses():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.rerank.rerank():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.responses.send():
request.provider.ignore[].union(ProviderName).enum(databricks) Addedopen_router.video_generation.generate():
request.provider.options.databricks AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.generations.list_generation_content(): response.data.error Added
open_router.generations.list_generation_content(): response.data.error AddedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
open_router.benchmarks.get_benchmarks():
open_router.benchmarks.get_benchmarks():
request Changedresponse.data[] Changed (Breaking ⚠️)Generated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.beta.responses.send():
open_router.beta.responses.send():
request.input.union(Array<>)[] Changedresponse Changedopen_router.presets.create_presets_responses():
request.input.union(Array<>)[] Changedopen_router.responses.send():
request.input.union(Array<>)[] Changedresponse ChangedGenerated with Speakeasy CLI 1.787.0
Publishing Completed
Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Your coding agent can read these notes before it upgrades. Set up the MCP server →