NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2398 most downloaded on PyPI
Official Python Client SDK for OpenRouter.
Last release today
20 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 months old
267 releases · first in 2025
One column per month.
open_router.beta.responses.send():
open_router.beta.responses.send():
request.input.[array].[].[output_fusion_server_tool_item].sources Addedresponse Changedopen_router.presets.create_presets_responses():
request.input.[array].[].[output_fusion_server_tool_item].sources AddedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
open_router.tts.create_speech():
open_router.tts.create_speech():
request.provider.options.quiver Addedopen_router.stt.create_transcription():
request.provider.options.quiver Addedopen_router.byok.list(): request.provider Changedopen_router.images.generate():
request.provider.options.quiver Addedopen_router.video_generation.generate():
request.provider.options.quiver AddedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
open_router.video_generation.get_video_content(): response.status[200] Changed Breaking :warning:
open_router.video_generation.get_video_content(): response.status[200] Changed Breaking :warning:Generated with Speakeasy CLI 1.680.0
Publishing Completed
open_router.images.generate(): response Changed
open_router.images.generate(): response ChangedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
open_router.embeddings.list_models(): response.data.[].pricing.input_cache_write_1h Added
open_router.embeddings.list_models(): response.data.[].pricing.input_cache_write_1h Addedopen_router.endpoints.list_zdr_endpoints(): response.data.[].pricing.input_cache_write_1h Addedopen_router.endpoints.list(): response.data.endpoints.[].pricing.input_cache_write_1h Addedopen_router.models.get(): response.data.pricing.input_cache_write_1h Addedopen_router.models.list(): response.data.[].pricing.input_cache_write_1h Addedopen_router.models.list_for_user(): response.data.[].pricing.input_cache_write_1h AddedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
open_router.beta.responses.send():
open_router.beta.responses.send():
request Changedresponse Changed Breaking :warning:open_router.tts.create_speech():
request.provider.options Changedopen_router.chat.send(): response Changedopen_router.images.list_models(): Addedopen_router.images.list_model_endpoints(): Addedopen_router.datasets.get_benchmarks_artificial_analysis(): Deleted Breaking :warning:open_router.datasets.get_benchmarks_design_arena(): Deleted Breaking :warning:open_router.classifications.get_task_classifications(): Addedopen_router.benchmarks.get_benchmarks(): Addedopen_router.images.generate(): Addedopen_router.stt.create_transcription():
request.provider.options Changedopen_router.byok.list(): request.provider Changedopen_router.embeddings.generate(): response.usage Changedopen_router.embeddings.list_models(): response.data.[].reasoning Addedopen_router.models.get(): response.data.reasoning Addedopen_router.models.list():
request.sort Changedresponse.data.[].reasoning Addedopen_router.models.list_for_user(): response.data.[].reasoning Addedopen_router.presets.create_presets_responses(): request Changedopen_router.video_generation.generate():
request.provider.options ChangedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
open_router.beta.responses.send():
open_router.beta.responses.send():
request Changed Breaking :warning:response Changed Breaking :warning:open_router.presets.create_presets_responses(): request Changed Breaking :warning:open_router.presets.create_presets_chat_completions(): request Changed Breaking :warning:open_router.chat.send(): request Changed Breaking :warning:open_router.workspaces.set_budget(): Addedopen_router.o_auth.create_auth_code():
request.workspace_id Addederror.status[403] Addedopen_router.files.download(): Addedopen_router.models.get(): Addedopen_router.workspaces.list_budgets(): Addedopen_router.workspaces.delete_budget(): Addedopen_router.datasets.get_benchmarks_artificial_analysis(): Addedopen_router.beta.analytics.query_analytics(): response.data.warnings Addedopen_router.files.delete(): Addedopen_router.files.retrieve(): Addedopen_router.files.upload(): Addedopen_router.embeddings.list_models(): response.data.[].benchmarks Addedopen_router.models.list():
request Changedresponse.data.[].benchmarks Addedopen_router.models.list_for_user(): response.data.[].benchmarks Addedopen_router.files.list(): Addedopen_router.presets.create_presets_messages(): request Changedopen_router.datasets.get_benchmarks_design_arena(): AddedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
request Changed Breaking :warning:
open_router.chat.send():
request Changed Breaking :warning:response Changederror Changedopen_router.video_generation.generate():
request Changed Breaking :warning:error.openrouter_metadata Addedopen_router.beta.responses.send():
request Changed Breaking :warning:response Changed Breaking :warning:error Changedopen_router.rerank.rerank():
request.documents.[] Changed Breaking :warning:response.results.[].document Changederror.openrouter_metadata Addedopen_router.generations.get_generation():
response.data Changed Breaking :warning:error.openrouter_metadata Addedopen_router.o_auth.create_auth_code(): error.openrouter_metadata Addedopen_router.endpoints.list(): error.openrouter_metadata Addedopen_router.embeddings.list_models():
response.data.[].supported_voices Addederror.openrouter_metadata Addedopen_router.byok.update(): Addedopen_router.datasets.get_app_rankings(): Addedopen_router.datasets.get_rankings_daily(): Addedopen_router.generations.list_generation_content(): Addedopen_router.observability.list(): Addedopen_router.observability.create(): Addedopen_router.observability.delete(): Addedopen_router.observability.get(): Addedopen_router.observability.update(): Addedopen_router.presets.list(): Addedopen_router.presets.get(): Addedopen_router.presets.create_presets_chat_completions(): Addedopen_router.presets.create_presets_messages(): Addedopen_router.presets.create_presets_responses(): Addedopen_router.presets.list_versions(): Addedopen_router.presets.get_version(): Addedopen_router.workspaces.list(): Addedopen_router.workspaces.create(): Addedopen_router.workspaces.delete(): Addedopen_router.workspaces.get(): Addedopen_router.workspaces.update(): Addedopen_router.workspaces.bulk_add_members(): Addedopen_router.workspaces.bulk_remove_members(): Addedopen_router.analytics.get_user_activity(): error.openrouter_metadata Addedopen_router.o_auth.exchange_auth_code_for_api_key(): error.openrouter_metadata Addedopen_router.beta.analytics.get_analytics_meta(): Addedopen_router.byok.create(): Addedopen_router.credits.get_credits(): error.openrouter_metadata Addedopen_router.embeddings.generate():
request.input.[array].[].content.[] Changedresponse.usage.prompt_tokens_details Addederror.openrouter_metadata Addedopen_router.byok.get(): Addedopen_router.byok.delete(): Addedopen_router.guardrails.list_guardrail_key_assignments(): error.openrouter_metadata Addedopen_router.byok.list(): Addedopen_router.guardrails.list():
request.workspace_id Addedresponse.data.[] Changederror.openrouter_metadata Addedopen_router.guardrails.create():
request Changedresponse.data Changederror Changedopen_router.guardrails.delete(): error.openrouter_metadata Addedopen_router.guardrails.get():
response.data Changederror.openrouter_metadata Addedopen_router.guardrails.update():
request Changedresponse.data Changederror.openrouter_metadata Addedopen_router.endpoints.list_zdr_endpoints(): error.openrouter_metadata Addedopen_router.guardrails.bulk_assign_keys(): error.openrouter_metadata Addedopen_router.guardrails.bulk_unassign_keys(): error.openrouter_metadata Addedopen_router.guardrails.list_guardrail_member_assignments(): error.openrouter_metadata Addedopen_router.guardrails.bulk_assign_members(): error.openrouter_metadata Addedopen_router.guardrails.bulk_unassign_members(): error.openrouter_metadata Addedopen_router.guardrails.list_key_assignments(): error.openrouter_metadata Addedopen_router.guardrails.list_member_assignments(): error.openrouter_metadata Addedopen_router.api_keys.get_current_key_metadata(): error.openrouter_metadata Addedopen_router.api_keys.list():
request.workspace_id Addedresponse.data.[].workspace_id Addederror.openrouter_metadata Addedopen_router.api_keys.create():
request.workspace_id Addedresponse.data.workspace_id Addederror Changedopen_router.api_keys.delete(): error.openrouter_metadata Addedopen_router.api_keys.get():
response.data.workspace_id Addederror.openrouter_metadata Addedopen_router.api_keys.update():
response.data.workspace_id Addederror.openrouter_metadata Addedopen_router.models.list():
request.sort Addedresponse.data.[].supported_voices Addederror.openrouter_metadata Addedopen_router.models.count(): error.openrouter_metadata Addedopen_router.models.list_for_user():
response.data.[].supported_voices Addederror.openrouter_metadata Addedopen_router.organization.list_members(): error.openrouter_metadata Addedopen_router.providers.list(): error.openrouter_metadata Addedopen_router.stt.create_transcription(): Addedopen_router.tts.create_speech(): Addedopen_router.beta.analytics.query_analytics(): Addedopen_router.video_generation.get_generation(): error.openrouter_metadata Addedopen_router.video_generation.get_video_content(): error.openrouter_metadata Addedopen_router.video_generation.list_videos_models(): error.openrouter_metadata AddedGenerated with Speakeasy CLI 1.680.0
Publishing Completed
Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Bump Package Version Number Publishing Completed
Bump Package Version Number
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.658.2 (2.755.9) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.666.0 (2.768.0) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.658.1 (2.755.6) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.656.2 (2.753.6) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.656.2 (2.753.6) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.656.2 (2.753.6) https://github.com/speakeasy-api/speakeasy
Based on:
Publishing Completed
Speakeasy CLI 1.656.2 (2.753.6) 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 →