diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index bafa326a..b27c0122 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: 6f77441e1dc1069bd78afe09c4afd9ee
+ docChecksum: 4d7bc309d152d9219793784223caa0e2
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 1.0.1
- configChecksum: 1b090d450f85b5839d5e85b8a9893a46
+ releaseVersion: 1.0.2
+ configChecksum: 0d88423a51b17a0f814a69da6e567287
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: bb16be7e-6101-41da-9f5f-e2d606ded138
- pristine_commit_hash: 45f1542f3a6501272c994912c277397a616a62af
- pristine_tree_hash: 1d11119251e962d7c1de4f86f1d51a7e9cbb2374
+ generation_id: c7290cc8-9e30-476c-814d-ddbb46291b13
+ pristine_commit_hash: 51e0667d890545728a2326f301008448da6999e7
+ pristine_tree_hash: 30dba92ec25182ca262a2e72aaba8f67267868e9
features:
python:
acceptHeaders: 3.0.0
@@ -2014,8 +2014,8 @@ trackedFiles:
pristine_git_object: 967c0e2abcf18d52589d674bdf45d0414050b71f
docs/components/fusionservertoolconfig.mdx:
id: 87976811b0c3
- last_write_checksum: sha1:267106d40b0f8e9a7601945753f7934b34084183
- pristine_git_object: 1247ee7797392ca5e7778a47b42932a97cc16203
+ last_write_checksum: sha1:897a21e872f16b3da363410d17ff89473701343d
+ pristine_git_object: 745dc5599a9a96a9727a68292c5061d7dfac0ffa
docs/components/fusionservertoolconfigeffort.mdx:
id: f5ce0fbc94aa
last_write_checksum: sha1:4ce09a069b4eeae41ac1531027cf97dc4139927f
@@ -6694,8 +6694,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:a627791ecc75c207e1643dab39d8ad491f424832
- pristine_git_object: 53b3f25e3364095a735ec5b2233d1321fbd07394
+ last_write_checksum: sha1:e7ac166ffcdc1b8ee6eb7a4acc7a26d059036b03
+ pristine_git_object: d5038fdd4789c39bb8cbde28a3045830ad4d2136
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:3a798d815c15fc62000f76deeef005e219cfc85f
- pristine_git_object: 5f2bcfd4ae8cca81345346effd5141ed7aaa154e
+ last_write_checksum: sha1:aa9006eeb9981c347e3a7ad34c37f2665a7d7177
+ pristine_git_object: 0529b8a8d7c685556c80adfaca339db0803fc2f5
src/openrouter/analytics.py:
id: cb406b5aaabb
last_write_checksum: sha1:9e709b71dd0611056dc0cec6150b578defe32841
@@ -7642,8 +7642,8 @@ trackedFiles:
pristine_git_object: 0015e263bbb2d817af89780610cc8f25ff852e73
src/openrouter/components/fusionservertoolconfig.py:
id: 0d1d229c531f
- last_write_checksum: sha1:682c03ac94460a8da295986f442f598f97c2aa39
- pristine_git_object: 4426b5b37de4f24d28bfa779acdab59ff248327a
+ last_write_checksum: sha1:fdda1ef4d255f3f1860609dbf3b569271c47b4ac
+ pristine_git_object: 3e4fc18f5b963d2a29ef65d22c12ec8cba69d506
src/openrouter/components/fusionsource.py:
id: ce20a4a9f32f
last_write_checksum: sha1:2141dd1dd9396035bf8070878c9ec945331514c8
@@ -11201,4 +11201,3 @@ 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.input.union(Array<>)[].union(OutputBashServerToolItem)` **Changed**\n * `response` **Changed**\n* `open_router.presets.create_presets_responses()`: \n * `request.input.union(Array<>)[].union(OutputBashServerToolItem)` **Changed**\n"
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index ca8bde25..2ae28ff5 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.0.1
+ version: 1.0.2
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 49055e0a..dbed269c 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -8716,7 +8716,7 @@ components:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
max_completion_tokens:
- description: 'Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 50000.'
+ description: 'Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 20000.'
example: 16384
type: 'integer'
max_tool_calls:
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 3c095b0e..0e2c3caa 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:51717059b037e72dd6fba46e7fce6df49aa5db317f8aded34632048927c7af9f
- sourceBlobDigest: sha256:f0b915cb0addae38ea63264fe44482976fb9f9d997bf6b1e4c6d0f93254e42bb
+ sourceRevisionDigest: sha256:90bc553557136c69e7601f536e471df2bd622ce48692f0f0211ed1349c46438e
+ sourceBlobDigest: sha256:e43cdffbde0cda821063fbf0211aa73a9efe9a2ba8246783fea7fef0f6294e11
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:51717059b037e72dd6fba46e7fce6df49aa5db317f8aded34632048927c7af9f
- sourceBlobDigest: sha256:f0b915cb0addae38ea63264fe44482976fb9f9d997bf6b1e4c6d0f93254e42bb
+ sourceRevisionDigest: sha256:90bc553557136c69e7601f536e471df2bd622ce48692f0f0211ed1349c46438e
+ sourceBlobDigest: sha256:e43cdffbde0cda821063fbf0211aa73a9efe9a2ba8246783fea7fef0f6294e11
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:aa4362de8cc0c46cfedb92b2042a4bdaa4a9087aef96179f984fdb38c8ff06cf
+ codeSamplesRevisionDigest: sha256:525f3adc33384a65334f916bbee8e617d8a57e9a2685e8c7a681269836e99bc1
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 749b2ea9..3cd25ef4 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -589,4 +589,14 @@ Based on:
### Generated
- [python v1.0.1] .
### Releases
-- [PyPI v1.0.1] https://pypi.org/project/openrouter/1.0.1 - .
\ No newline at end of file
+- [PyPI v1.0.1] https://pypi.org/project/openrouter/1.0.1 - .
+
+## 2026-07-21 01:10:43
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.0.2] .
+### Releases
+- [PyPI v1.0.2] https://pypi.org/project/openrouter/1.0.2 - .
\ No newline at end of file
diff --git a/docs/components/fusionservertoolconfig.mdx b/docs/components/fusionservertoolconfig.mdx
index 1247ee77..745dc559 100644
--- a/docs/components/fusionservertoolconfig.mdx
+++ b/docs/components/fusionservertoolconfig.mdx
@@ -11,7 +11,7 @@ Configuration for the openrouter:fusion server tool.
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `analysis_models` | List[*str*] | :heavy_minus_sign: | Slugs of models to run in parallel as the analysis panel. Each model receives the user prompt with openrouter:web_search and openrouter:web_fetch enabled, then a judge model summarizes the collective output into structured analysis JSON. Capped at 8 models to bound cost amplification. Defaults to the Quality preset from /labs/fusion. | [
"~anthropic/claude-opus-latest",
"~openai/gpt-latest",
"~google/gemini-pro-latest"
] |
| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format. | \{
"type": "ephemeral"
} |
-| `max_completion_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 50000. | 16384 |
+| `max_completion_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 20000. | 16384 |
| `max_tool_calls` | *Optional[int]* | :heavy_minus_sign: | Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16. | 12 |
| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request. | ~anthropic/claude-opus-latest |
| `reasoning` | [Optional[components.FusionServerToolConfigReasoning]](../components/fusionservertoolconfigreasoning.mdx) | :heavy_minus_sign: | Reasoning configuration forwarded to panelist and judge inner calls. Use this to control reasoning effort and token budget for models that support extended thinking. | |
diff --git a/pyproject.toml b/pyproject.toml
index 53b3f25e..d5038fdd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.0.1"
+version = "1.0.2"
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 5f2bcfd4..0529b8a8 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "1.0.1"
+__version__: str = "1.0.2"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 1.0.1 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.0.2 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/components/fusionservertoolconfig.py b/src/openrouter/components/fusionservertoolconfig.py
index 4426b5b3..3e4fc18f 100644
--- a/src/openrouter/components/fusionservertoolconfig.py
+++ b/src/openrouter/components/fusionservertoolconfig.py
@@ -100,7 +100,7 @@ class FusionServerToolConfigTypedDict(TypedDict):
cache_control: NotRequired[AnthropicCacheControlDirectiveTypedDict]
r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format."""
max_completion_tokens: NotRequired[int]
- r"""Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 50000."""
+ r"""Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 20000."""
max_tool_calls: NotRequired[int]
r"""Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."""
model: NotRequired[str]
@@ -123,7 +123,7 @@ class FusionServerToolConfig(BaseModel):
r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format."""
max_completion_tokens: Optional[int] = None
- r"""Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 50000."""
+ r"""Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, panelists default to 32000 and the judge to 20000."""
max_tool_calls: Optional[int] = None
r"""Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."""
diff --git a/uv.lock b/uv.lock
index 19ead27f..53d13a54 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.0.1"
+version = "1.0.2"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },