diff --git a/.gitignore b/.gitignore
index 90bf50b49..7c202f230 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,5 @@ __pycache__/
.DS_Store
.venv/
output.zip
-
# Claude Code local settings can store secrets from approved commands
**/.claude/settings.local.json
diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index bc94da93d..ccbbfc777 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: 62faa0000aa638e77f78e2078c7609aa
+ docChecksum: dea17b49afcf9328c109f7fa5782d37a
docVersion: 1.0.0
speakeasyVersion: 1.803.2
generationVersion: 2.950.13
- releaseVersion: 1.3.162
- configChecksum: 5ef36ad2cc020eeb8fcddead3fd5305b
+ releaseVersion: 1.3.163
+ configChecksum: bb53b28dbe3e699dc07f5d0d91d7ed11
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 53522988-5b97-4200-91b1-269089794d25
- pristine_commit_hash: 09d6b09e10bc44b83ed466ac85de13c9bb33247c
- pristine_tree_hash: de2e9d154a1adca3c476bc9a008782fbc7599785
+ generation_id: 19769bad-7674-42a8-8726-fce31df8dac5
+ pristine_commit_hash: 5e9bd0bd577e3dc60bb35e4275bc2c2d10d06602
+ pristine_tree_hash: 7677021b49ff1400994c5ea608410eaa0b1f0c8a
features:
python:
acceptHeaders: 3.0.0
@@ -8012,8 +8012,8 @@ trackedFiles:
pristine_git_object: 5d617cac37f7b364f4dd0640246e97c34351d824
docs/components/speechinput.mdx:
id: 663248d32888
- last_write_checksum: sha1:3ac2a504a301aedde4842c0a76ea324871c6b1af
- pristine_git_object: 45150512fd74a6d8fa935b9867c4877b1f0d5916
+ last_write_checksum: sha1:801f7658532bb7ffebc7ea38e142eb1c9302d77b
+ pristine_git_object: 5d2f88829becfc0307674fce87660e96744b7a2e
docs/components/speechinputreference.mdx:
id: eb5af16936c7
last_write_checksum: sha1:ab545b03da2161ae1ad449714b6861cd55ae66df
@@ -8052,8 +8052,8 @@ trackedFiles:
pristine_git_object: 34f4f07fb3008df83646fa3d88ce04009274246a
docs/components/speechrequest.mdx:
id: 06e81b0433f6
- last_write_checksum: sha1:8e39bc6283f8a3fb641472f589b9c37d2634e044
- pristine_git_object: f336273bc7b4e7e335ed52b966b7904a58055133
+ last_write_checksum: sha1:3a959255b1a37e2ccb7cb78ae81d2e9aef15fba7
+ pristine_git_object: 55d8f8ff165b666f419a086d53aa2d2205abe9d1
docs/components/speechrequestdatacollection.mdx:
id: 6c5938568888
last_write_checksum: sha1:89a08b4c4de66c1ef7676792a38747e030ed6729
@@ -11568,8 +11568,8 @@ trackedFiles:
pristine_git_object: bcbe30fccceb97caa3a0e170038245dcc7f1e540
docs/sdks/tts/README.mdx:
id: cd1132543884
- last_write_checksum: sha1:cbe5111012fe5ad15d4051f1565ddac4de4f1715
- pristine_git_object: 656a52a762ab722119de80461800e1ddf06fca5d
+ last_write_checksum: sha1:f55eb0fef269d07fd552e8d231e40525492e5520
+ pristine_git_object: db2a0c773df4e46ef040028d7966fb9176cc5c43
docs/sdks/vault/README.mdx:
id: 3738c6722acd
last_write_checksum: sha1:290b439ff730b9eabf4a6ef93737d1c61006b0fa
@@ -11588,8 +11588,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:5d03ad9ccc94bf8e7cbd608549407b8a9492c6cc
- pristine_git_object: 7c11dd04fe3a4aafa3bd88595b2c3a9c83b788cd
+ last_write_checksum: sha1:2c2a0f82f6d0ba654a45d2f93b4933bdcdfcb100
+ pristine_git_object: f4c5f7665f25f683c364023027f8db014c4b0361
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -11616,8 +11616,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:a97191251858292906878c44c4ecb99a3eb8e2a1
- pristine_git_object: 45f52a610e6f127a4ec958f5769b98dcdbe58b72
+ last_write_checksum: sha1:4b2959c4fddc86509490bc7f9ceab25f73a28b0f
+ pristine_git_object: 4af1be0c5458ff6014b829c9afce6995c250e48b
src/openrouter/alpha.py:
id: 306c4d93308d
last_write_checksum: sha1:80cc0f39649445431cc2247ed0e0765438467766
@@ -14920,8 +14920,8 @@ trackedFiles:
pristine_git_object: 418953ba7366a6015934bf8795178d79adb03b89
src/openrouter/components/speechinput.py:
id: 14e46bea4b32
- last_write_checksum: sha1:c6e320441ce7eaa95072d8796e97f082302bb326
- pristine_git_object: e85b5d8efbe123f41f4006b0e74ee5894da3fdc2
+ last_write_checksum: sha1:511d19d682544c5e51c2995ae3c2a3dda6349c13
+ pristine_git_object: cc45b6da88350cd9ab4b9c6456b5dd81c0b4c8e9
src/openrouter/components/speechinputreference.py:
id: 8e2b63f83354
last_write_checksum: sha1:b2ebc68fae64644f8bfca9b555ca7d2a7b46c9e1
@@ -14948,8 +14948,8 @@ trackedFiles:
pristine_git_object: 4633e5d7658c500aa903ce8caa8ef86cc97b78eb
src/openrouter/components/speechrequest.py:
id: 2a9400167112
- last_write_checksum: sha1:7d0605185e060b9eff5dc0cd8cbcd3d246d22658
- pristine_git_object: 76ecc5375d4c843c8585cb8cc829203cdc57404c
+ last_write_checksum: sha1:dc638e570c2c55a69e90f6bf050b8268768b3054
+ pristine_git_object: 697490ca4d1327462408c2b3f7121f9505d1d236
src/openrouter/components/speechturn.py:
id: 121e0a940f91
last_write_checksum: sha1:31bdba00e027b81de8a3872d48e694475cf02e7a
@@ -16396,8 +16396,8 @@ trackedFiles:
pristine_git_object: 701fa8597ff85f41a60736ade55fcb32f9ec7125
src/openrouter/tts.py:
id: 5055d4b95f1d
- last_write_checksum: sha1:551dba8562cfb948243002fc9be70cfb18171bb4
- pristine_git_object: 3abf119a9ffc8e4c92e9faef7fa63399fed34abf
+ last_write_checksum: sha1:6c00f73a88570f15cfdb2d442257149b8c38ac35
+ pristine_git_object: ad161c994e38e7369c2a1a04594d369035984e33
src/openrouter/types/__init__.py:
id: 5eab536205b7
last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index d03f829f5..84ce975ce 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -37,7 +37,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.3.162
+ version: 1.3.163
additionalDependencies:
dev:
pytest: '>=8.3'
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 06e6f010c..76d1b323a 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -33691,7 +33691,7 @@ components:
$ref: '#/components/schemas/SpeechTurn'
minItems: 1
type: 'array'
- description: 'Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1.'
+ description: 'Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models.'
example: 'Hello world'
SpeechInputReference:
description: 'Reference content part for stateless voice cloning or voice design'
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index a0001a693..81b63cc03 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -2,8 +2,8 @@ speakeasyVersion: 1.803.2
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:fdff72dee81d3a8b9acb40488eca6cdbcffff3f5f458c8a9f973ec8339186502
- sourceBlobDigest: sha256:8c813febc37ddfc6b3b5e0d371e986d118990426567b4facd8d1a91e71591a59
+ sourceRevisionDigest: sha256:c45a17960a7ff6c3ad056153f9538a90fe7707a0bdddcb65ab51d47a5b31e49a
+ sourceBlobDigest: sha256:f107baa955199ff9f64a82d601120b938a6c7fb7a928e87f78dda5c19fefe13a
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:fdff72dee81d3a8b9acb40488eca6cdbcffff3f5f458c8a9f973ec8339186502
- sourceBlobDigest: sha256:8c813febc37ddfc6b3b5e0d371e986d118990426567b4facd8d1a91e71591a59
+ sourceRevisionDigest: sha256:c45a17960a7ff6c3ad056153f9538a90fe7707a0bdddcb65ab51d47a5b31e49a
+ sourceBlobDigest: sha256:f107baa955199ff9f64a82d601120b938a6c7fb7a928e87f78dda5c19fefe13a
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:dfec619274d7b18a030c9cf8714c4c822fb6da376d84e8af9c69797d2229f640
+ codeSamplesRevisionDigest: sha256:7dd85062207420c824bb8d964db1ebbf13600733f060662ca126534d81884d12
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.803.2
diff --git a/RELEASES.md b/RELEASES.md
index 35899cca7..a1ffd0c9b 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -4389,4 +4389,14 @@ Based on:
### Generated
- [python v1.3.162] .
### Releases
-- [PyPI v1.3.162] https://pypi.org/project/openrouter/1.3.162 - .
\ No newline at end of file
+- [PyPI v1.3.162] https://pypi.org/project/openrouter/1.3.162 - .
+
+## 2026-11-11 22:07:57
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.803.2 (2.950.13) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.3.163] .
+### Releases
+- [PyPI v1.3.163] https://pypi.org/project/openrouter/1.3.163 - .
\ No newline at end of file
diff --git a/docs/components/speechinput.mdx b/docs/components/speechinput.mdx
index 45150512f..5d2f88829 100644
--- a/docs/components/speechinput.mdx
+++ b/docs/components/speechinput.mdx
@@ -2,7 +2,7 @@
title: "SpeechInput"
---
-Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1.
+Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models.
## Supported Types
diff --git a/docs/components/speechrequest.mdx b/docs/components/speechrequest.mdx
index f336273bc..55d8f8ff1 100644
--- a/docs/components/speechrequest.mdx
+++ b/docs/components/speechrequest.mdx
@@ -9,7 +9,7 @@ Text-to-speech request input
| Field | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `input` | [components.SpeechInput](../components/speechinput.mdx) | ✔️ | Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1. | Hello world |
+| `input` | [components.SpeechInput](../components/speechinput.mdx) | ✔️ | Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models. | Hello world |
| `input_references` | List[[components.SpeechInputReference](../components/speechinputreference.mdx)] | ➖ | Reference content for stateless voice cloning or voice design. Audio mode: one to three `input_audio` parts, each optionally paired with a `text` part carrying its transcript (a single clip accepts its transcript before or after it; with multiple clips each transcript immediately follows its clip), plus at most one `image_url` part as a scene image on providers that condition the cloned voice on its setting; only routed to endpoints that support voice cloning (and multiple references or image references when those parts are sent). Image mode: exactly one `image_url` part; only routed to endpoints that support image references. An empty array is treated as no reference. | [
\{
"input_audio": \{
"data": "data:audio/wav;base64,UklGRuQXDABXQVZF..."
},
"type": "input_audio"
},
\{
"text": "I used to rule the world.",
"type": "text"
}
] |
| `instructions` | *Optional[str]* | ➖ | Delivery instructions for the whole request, such as tone, pacing, or emotion. Supported by OpenAI gpt-4o-mini-tts, Gemini TTS, and Fish Audio models. Ignored by other providers. | Speak in a warm and friendly tone. |
| `model` | *str* | ✔️ | TTS model identifier | mistralai/voxtral-mini-tts-2603 |
diff --git a/docs/sdks/tts/README.mdx b/docs/sdks/tts/README.mdx
index 656a52a76..db2a0c773 100644
--- a/docs/sdks/tts/README.mdx
+++ b/docs/sdks/tts/README.mdx
@@ -40,7 +40,7 @@ with OpenRouter(
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `input` | [components.SpeechInput](../../components/speechinput.mdx) | ✔️ | Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1. | Hello world |
+| `input` | [components.SpeechInput](../../components/speechinput.mdx) | ✔️ | Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models. | Hello world |
| `model` | *str* | ✔️ | TTS model identifier | mistralai/voxtral-mini-tts-2603 |
| `http_referer` | *Optional[str]* | ➖ | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| |
| `x_open_router_title` | *Optional[str]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
diff --git a/pyproject.toml b/pyproject.toml
index 7c11dd04f..f4c5f7665 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.3.162"
+version = "1.3.163"
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 45f52a610..4af1be0c5 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "1.3.162"
+__version__: str = "1.3.163"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.950.13"
-__user_agent__: str = "speakeasy-sdk/python 1.3.162 2.950.13 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.3.163 2.950.13 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/components/speechinput.py b/src/openrouter/components/speechinput.py
index e85b5d8ef..cc45b6da8 100644
--- a/src/openrouter/components/speechinput.py
+++ b/src/openrouter/components/speechinput.py
@@ -9,8 +9,8 @@
SpeechInputTypedDict = TypeAliasType(
"SpeechInputTypedDict", Union[str, List[SpeechTurnTypedDict]]
)
-r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1."""
+r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models."""
SpeechInput = TypeAliasType("SpeechInput", Union[str, List[SpeechTurn]])
-r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1."""
+r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models."""
diff --git a/src/openrouter/components/speechrequest.py b/src/openrouter/components/speechrequest.py
index 76ecc5375..697490ca4 100644
--- a/src/openrouter/components/speechrequest.py
+++ b/src/openrouter/components/speechrequest.py
@@ -168,7 +168,7 @@ class SpeechRequestTypedDict(TypedDict):
r"""Text-to-speech request input"""
input: SpeechInputTypedDict
- r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1."""
+ r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models."""
model: str
r"""TTS model identifier"""
input_references: NotRequired[List[SpeechInputReferenceTypedDict]]
@@ -195,7 +195,7 @@ class SpeechRequest(BaseModel):
r"""Text-to-speech request input"""
input: SpeechInput
- r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1."""
+ r"""Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models."""
model: str
r"""TTS model identifier"""
diff --git a/src/openrouter/tts.py b/src/openrouter/tts.py
index 3abf119a9..ad161c994 100644
--- a/src/openrouter/tts.py
+++ b/src/openrouter/tts.py
@@ -51,7 +51,7 @@ def create_speech(
Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav).
- :param input: Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1.
+ :param input: Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models.
:param model: TTS model identifier
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
@@ -307,7 +307,7 @@ async def create_speech_async(
Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav).
- :param input: Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models and by Fish Audio models other than S1.
+ :param input: Text to synthesize, or a list of turns for multi-speaker input. Each turn has its own text, voice, and instructions. Multi-speaker input is supported by Gemini TTS models, by Fish Audio models other than S1, and by Speechify dialogue models.
:param model: TTS model identifier
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
diff --git a/uv.lock b/uv.lock
index 0389f2360..19e648c17 100644
--- a/uv.lock
+++ b/uv.lock
@@ -231,7 +231,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.3.162"
+version = "1.3.163"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },