diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 89ff524d..24fe659b 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: c48cf606-fb42-4a45-9c23-8f0555307828
management:
- docChecksum: 1d1fbee3790c1c92c11a1812b74ca906
+ docChecksum: 6dbc066243539a97a1e225d3d6391b61
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 0.11.40
- configChecksum: 4979c1e57b670ed5748debe188b549e8
+ releaseVersion: 0.11.41
+ configChecksum: ddac6556ba465f524a1cec7a31b32b0a
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 7f9458b3-8f8f-4f6c-b7cd-2fd963dd9322
- pristine_commit_hash: ba1661a777ab5ae1aee3bedf7c4501d97245da1a
- pristine_tree_hash: e3eecf07c82d4c6b75e99b15a4e0c52f24cd70d9
+ generation_id: 8314c8ef-99b5-48c1-8a60-4626f255bef4
+ pristine_commit_hash: 550028ddd21d236997e3a4e2dca4e50a5f5ab419
+ pristine_tree_hash: 439cc92e5a9b273693102bea2fafe65e409b9757
features:
python:
acceptHeaders: 3.0.0
@@ -3314,8 +3314,8 @@ trackedFiles:
pristine_git_object: 09effe2d3fe45536c8b0aa0f23c02ce19b15f62c
docs/components/openresponsesresult.mdx:
id: d0fed85674d2
- last_write_checksum: sha1:2ffbf6a72d81a6bc5585fe5b71c9e57a89694118
- pristine_git_object: b987eca82266acf1fac32040d53f940a69ab9766
+ last_write_checksum: sha1:3bc26b772dfc3397c0da7b769b16d938eede91fb
+ pristine_git_object: f5c81b7142316cd4a6ec8a96c192b682a1a34ff8
docs/components/openresponsesresultobject.mdx:
id: 93b1fcc70132
last_write_checksum: sha1:7579ee1bb9e0d20c55cf54a8ca2ccbc950d2921d
@@ -6694,8 +6694,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:3c5edb81c415444ed7ca7f29537020fe0191c168
- pristine_git_object: 9e010896eb50ec116d8c8d8281eab4cec11fcee5
+ last_write_checksum: sha1:0110d38ef96fe2ab6c76b19c6f151e5d5f19d550
+ pristine_git_object: 1a2b61bcea2b580dbe603784edc8309e6b6ddc65
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -6722,8 +6722,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:00873996242e32dae6a85490475ff0f1ace09971
- pristine_git_object: 96b7185e5478492793a8ccec2af6951a6952c819
+ last_write_checksum: sha1:cce8b5c35f58d8675f8cd2b0b77ab4d63047e389
+ pristine_git_object: 6f847a9d821ebe3dd1b8eeb3259e4cad78297843
src/openrouter/analytics.py:
id: cb406b5aaabb
last_write_checksum: sha1:9e709b71dd0611056dc0cec6150b578defe32841
@@ -8162,8 +8162,8 @@ trackedFiles:
pristine_git_object: 08d990d8cc07b7928158fc55784cd9d613f4c58b
src/openrouter/components/openresponsesresult.py:
id: 78f7e33b19e6
- last_write_checksum: sha1:737262cfbd36e4b60e859213c9bb5c229a21bc9d
- pristine_git_object: bf2d31cf24e062ae72d9083a926619d0406cc268
+ last_write_checksum: sha1:35ed4f39bfe05c8d56e14166be09adc76b3fb0ec
+ pristine_git_object: f3be4e665351b3b08a77a2fa324ca88aad4ec4e9
src/openrouter/components/openroutermetadata.py:
id: 87062f38be59
last_write_checksum: sha1:65c4b563aea67eb15f1fc6d859856a081a1cc78f
@@ -11189,4 +11189,6 @@ examples:
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
examplesVersion: 1.0.2
-releaseNotes: "## Python SDK Changes:\n* `open_router.beta.responses.send()`: \n * `request.plugins[].union(auto-beta-router)` **Added**\n* `open_router.chat.send()`: \n * `request.plugins[].union(auto-beta-router)` **Added**\n* `open_router.presets.create_presets_chat_completions()`: \n * `request.plugins[].union(auto-beta-router)` **Added**\n* `open_router.presets.create_presets_messages()`: \n * `request.plugins[].union(auto-beta-router)` **Added**\n* `open_router.presets.create_presets_responses()`: \n * `request.plugins[].union(auto-beta-router)` **Added**\n"
+releaseNotes: |
+ ## Python SDK Changes:
+ * `open_router.beta.responses.send()`: `response` **Changed**
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 08f78303..cec0661b 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 0.11.40
+ version: 0.11.41
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 85f2efd5..e2b8b8c0 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -3757,6 +3757,8 @@ components:
type:
- 'string'
- 'null'
+ prompt_cache_options:
+ $ref: '#/components/schemas/PromptCacheOptions'
reasoning:
$ref: '#/components/schemas/BaseReasoningConfig'
safety_identifier:
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 7df2b9b6..eb96a953 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -2,8 +2,8 @@ speakeasyVersion: 1.787.0
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:6308421b446ad5042667897b1e0aabf7ea76dcbca1aec003d5f883f4e5eacd6a
- sourceBlobDigest: sha256:323dfa8e051375d00c336d9a1ac1808f08075bf0236944f2c8c877d6c438c721
+ sourceRevisionDigest: sha256:da22df10cffa0bd2d54dcf8d9dae10c42018060422a5c6406d933be4e9a7ebe8
+ sourceBlobDigest: sha256:9638fb99f873cb57e93d5817c8b9f003789fcd46b782ba735794aecbf8cec0d4
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:6308421b446ad5042667897b1e0aabf7ea76dcbca1aec003d5f883f4e5eacd6a
- sourceBlobDigest: sha256:323dfa8e051375d00c336d9a1ac1808f08075bf0236944f2c8c877d6c438c721
+ sourceRevisionDigest: sha256:da22df10cffa0bd2d54dcf8d9dae10c42018060422a5c6406d933be4e9a7ebe8
+ sourceBlobDigest: sha256:9638fb99f873cb57e93d5817c8b9f003789fcd46b782ba735794aecbf8cec0d4
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:86bc9a3a266ba9cb1ef17f48ac5b645a575127381bbd247801802af2ba35601b
+ codeSamplesRevisionDigest: sha256:041da88c8c234c9074b4688c217053b7e181bd35b9a943f4ad8099d33e29292e
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index cfa4cfec..f8a57b08 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -508,4 +508,14 @@ Based on:
### Generated
- [python v0.11.40] .
### Releases
-- [PyPI v0.11.40] https://pypi.org/project/openrouter/0.11.40 - .
\ No newline at end of file
+- [PyPI v0.11.40] https://pypi.org/project/openrouter/0.11.40 - .
+
+## 2026-07-17 16:27:17
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v0.11.41] .
+### Releases
+- [PyPI v0.11.41] https://pypi.org/project/openrouter/0.11.41 - .
\ No newline at end of file
diff --git a/docs/components/openresponsesresult.mdx b/docs/components/openresponsesresult.mdx
index b987eca8..f5c81b71 100644
--- a/docs/components/openresponsesresult.mdx
+++ b/docs/components/openresponsesresult.mdx
@@ -29,6 +29,7 @@ Complete non-streaming response from the Responses API
| `previous_response_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | |
| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../components/storedprompttemplate.mdx) | :heavy_minus_sign: | N/A | \{
"id": "prompt-abc123",
"variables": \{
"name": "John"
}
} |
| `prompt_cache_key` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | |
+| `prompt_cache_options` | [OptionalNullable[components.PromptCacheOptions]](../components/promptcacheoptions.mdx) | :heavy_minus_sign: | Request-level prompt-cache controls. `mode: "explicit"` disables OpenAI-managed breakpoints so only blocks marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer. | \{
"mode": "explicit",
"ttl": "30m"
} |
| `reasoning` | [OptionalNullable[components.BaseReasoningConfig]](../components/basereasoningconfig.mdx) | :heavy_minus_sign: | N/A | \{
"effort": "medium",
"summary": "auto"
} |
| `safety_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | |
| `service_tier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | |
diff --git a/pyproject.toml b/pyproject.toml
index 9e010896..1a2b61bc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "0.11.40"
+version = "0.11.41"
description = "Official Python Client SDK for OpenRouter."
authors = [{ name = "OpenRouter" },]
readme = "README-PYPI.md"
diff --git a/src/openrouter/_version.py b/src/openrouter/_version.py
index 96b7185e..6f847a9d 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "0.11.40"
+__version__: str = "0.11.41"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 0.11.40 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 0.11.41 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/components/openresponsesresult.py b/src/openrouter/components/openresponsesresult.py
index bf2d31cf..f3be4e66 100644
--- a/src/openrouter/components/openresponsesresult.py
+++ b/src/openrouter/components/openresponsesresult.py
@@ -39,6 +39,7 @@
PreviewWebSearchServerTool,
PreviewWebSearchServerToolTypedDict,
)
+from .promptcacheoptions import PromptCacheOptions, PromptCacheOptionsTypedDict
from .responseserrorfield import ResponsesErrorField, ResponsesErrorFieldTypedDict
from .servertoolusedetails import ServerToolUseDetails, ServerToolUseDetailsTypedDict
from .shellservertool import ShellServerTool, ShellServerToolTypedDict
@@ -376,6 +377,8 @@ class OpenResponsesResultTypedDict(TypedDict):
previous_response_id: NotRequired[Nullable[str]]
prompt: NotRequired[Nullable[StoredPromptTemplateTypedDict]]
prompt_cache_key: NotRequired[Nullable[str]]
+ prompt_cache_options: NotRequired[Nullable[PromptCacheOptionsTypedDict]]
+ r"""Request-level prompt-cache controls. `mode: \"explicit\"` disables OpenAI-managed breakpoints so only blocks marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer."""
reasoning: NotRequired[Nullable[BaseReasoningConfigTypedDict]]
safety_identifier: NotRequired[Nullable[str]]
service_tier: NotRequired[Nullable[str]]
@@ -447,6 +450,9 @@ class OpenResponsesResult(BaseModel):
prompt_cache_key: OptionalNullable[str] = UNSET
+ prompt_cache_options: OptionalNullable[PromptCacheOptions] = UNSET
+ r"""Request-level prompt-cache controls. `mode: \"explicit\"` disables OpenAI-managed breakpoints so only blocks marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer."""
+
reasoning: OptionalNullable[BaseReasoningConfig] = UNSET
safety_identifier: OptionalNullable[str] = UNSET
@@ -483,6 +489,7 @@ def serialize_model(self, handler):
"previous_response_id",
"prompt",
"prompt_cache_key",
+ "prompt_cache_options",
"reasoning",
"safety_identifier",
"service_tier",
@@ -511,6 +518,7 @@ def serialize_model(self, handler):
"previous_response_id",
"prompt",
"prompt_cache_key",
+ "prompt_cache_options",
"reasoning",
"safety_identifier",
"service_tier",
diff --git a/uv.lock b/uv.lock
index 54b63242..1baf379d 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "0.11.40"
+version = "0.11.41"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },