Compare commits

...
4 Commits
Author SHA1 Message Date
github-actions[bot]GitHubspeakeasybotspeakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
778e2e36fb chore: 🐝 Update SDK - Generate (spec change merged) 0.10.8 (#380)
Co-authored-by: speakeasybot <bot@speakeasyapi.dev>
Co-authored-by: speakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
2026-06-28 15:31:38 +00:00
14f262fa66 chore: update OpenAPI spec from monorepo (#379)
Co-authored-by: OpenRouter SDK Bot <sdk-bot@openrouter.ai>
2026-06-28 15:25:57 +00:00
github-actions[bot]GitHubspeakeasybotspeakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
10f2890d75 chore: 🐝 Update SDK - Generate (spec change merged) 0.10.7 (#378)
Co-authored-by: speakeasybot <bot@speakeasyapi.dev>
Co-authored-by: speakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
2026-06-26 23:48:17 +00:00
ad1cfda1f4 chore: update OpenAPI spec from monorepo (#377)
Co-authored-by: OpenRouter SDK Bot <sdk-bot@openrouter.ai>
2026-06-26 23:42:21 +00:00
14 changed files with 158 additions and 44 deletions
+32 -25
View File
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: c48cf606-fb42-4a45-9c23-8f0555307828
management:
docChecksum: 943db43ef788f1fbf09ba21ebc37b36e
docChecksum: e7ae838af3f89aafec730d6f56a6264b
docVersion: 1.0.0
speakeasyVersion: 1.680.0
generationVersion: 2.788.4
releaseVersion: 0.10.6
configChecksum: 8b6b6b859a7ac5f479ea7692967e2fa5
releaseVersion: 0.10.8
configChecksum: 8243c4a0e55e45da047a1d60c75a497d
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
generation_id: dd88384e-e683-40b7-b651-42a9d80338dc
pristine_commit_hash: 4fac0f3ddfa463658573eff12f65fc97fc7256dc
pristine_tree_hash: e21d30ee6d99331108acadd9040cffb37a1eaa9c
generation_id: 941715a1-02fc-4177-a705-0f0a75de97ec
pristine_commit_hash: d3f06b10deb99bed3a70737944b76cb45ba18876
pristine_tree_hash: 7e30bc063f631c35e1645f8790acc79f301f383f
features:
python:
acceptHeaders: 3.0.0
@@ -774,12 +774,12 @@ trackedFiles:
pristine_git_object: 79909c48a34888496f9051cf33899ca1b9a7b4fc
docs/components/chatcontentimagedetail.md:
id: 3f26a1053cda
last_write_checksum: sha1:c074cafc4780c4bc7e6d4a053c886020a89c4e42
pristine_git_object: 9653ab78adb9b8b9ccfcd46d186d4f9c5a2ace85
last_write_checksum: sha1:296d52deb9b5223ed17cfb8ff3300727e671e001
pristine_git_object: 1c2cfb3ab7c7f2226e3c00c65af8fb9b79ca7740
docs/components/chatcontentimageimageurl.md:
id: 7c66172651cc
last_write_checksum: sha1:f0382f65b65ec13b0747b9f7ca6aaf235c7d39d4
pristine_git_object: e1e9f886d59c9580dd2b0556b737508573ec03d4
last_write_checksum: sha1:035c15e90cd89d8a8f20a27e28cf19551df62ecd
pristine_git_object: 9915ffe26c36a6a8ad5054389f960f7ea3c4e7bf
docs/components/chatcontentimagetype.md:
id: b92a4757efe6
last_write_checksum: sha1:ce2d8002a22bf03477cbbd88c68fc4eace9b392b
@@ -1944,6 +1944,10 @@ trackedFiles:
id: 58ee513b0cad
last_write_checksum: sha1:2ec57cd7447b8eecdbe6fec744c22edb3a817999
pristine_git_object: c7121728c6509e3d02a0b431431f133067ca057d
docs/components/fusionsource.md:
id: 8e98a9da51e2
last_write_checksum: sha1:3e0611061189a883bfd2c1fad738798debb71e9a
pristine_git_object: 59ff3c09fff96145b369a5fe5165618810fa1076
docs/components/generationcontentdata.md:
id: 1085c488fd3a
last_write_checksum: sha1:186d3e8118f6d393d524a91e2ac06772a7eaf818
@@ -3346,8 +3350,8 @@ trackedFiles:
pristine_git_object: 31066e50f45a2f32c35d0389886757885704ea4a
docs/components/outputfusionservertoolitem.md:
id: 886e6be27ec2
last_write_checksum: sha1:9c957daab1d214aa7f9b997c451876c759de0eec
pristine_git_object: f16afb99ac514a2fa4b63fed2feea6226872a038
last_write_checksum: sha1:b3758081c485683416158c2f10c228958f60055b
pristine_git_object: be5e88a6f8bb73b9e2e7aaec2a8b4a84661e480f
docs/components/outputfusionservertoolitemtype.md:
id: 93233bb8c5d7
last_write_checksum: sha1:5e9a0f90c938eaa5fc231859f48f5b9673b6b00b
@@ -6338,8 +6342,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
last_write_checksum: sha1:f0d810bbc878221d09f42255265a4860b6172ac0
pristine_git_object: 9ca17d4ad72d4df47c7353c69a7edf3977cb1052
last_write_checksum: sha1:83883613f4ce5a35940a61255018ae96c5b161a3
pristine_git_object: 2c73ae5647842e85c54240de3c2634ef1644c424
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -6366,8 +6370,8 @@ trackedFiles:
pristine_git_object: 07ace03229fd3267623c8f48665d2c3a67c3565d
src/openrouter/_version.py:
id: d8d15ad6c586
last_write_checksum: sha1:a5ac91c143d8f29b45461e1ce1ad4573e64eb436
pristine_git_object: 255f8f94a0bc1085ca60c24c5ecb43d78ee1d1d5
last_write_checksum: sha1:9191ddd2824cab64aba72a37907c39c13bae5e7b
pristine_git_object: ae046a12bfe3757e47b922caa4ee98754663db43
src/openrouter/analytics.py:
id: cb406b5aaabb
last_write_checksum: sha1:6d47d1ab3da9cb4ac9f0a2bfe442f1a82a614f35
@@ -6406,8 +6410,8 @@ trackedFiles:
pristine_git_object: 2654cbc562cc83940a6713b68f3967cb3f9dcfbe
src/openrouter/components/__init__.py:
id: 81754e97b3f4
last_write_checksum: sha1:e38f46d4bf8292139d85d59c2b2cb5f450367e39
pristine_git_object: 27e2fff5aafa475227a34c3dd5242e4e54b9e762
last_write_checksum: sha1:d82d36a0074b74d4556f1226230bc17565ec0171
pristine_git_object: 581b01ca5299006b8b6596ea466a7b26810e594b
src/openrouter/components/aabenchmarkentry.py:
id: e2e0f0b48c82
last_write_checksum: sha1:1b6b66672fb80dccdc39843a98bdef6d7d804364
@@ -6770,8 +6774,8 @@ trackedFiles:
pristine_git_object: e737cbd7318fb553946f2c5a9986a9630415016e
src/openrouter/components/chatcontentimage.py:
id: 6897abcd5da0
last_write_checksum: sha1:e60f0f980421fe82190850b65948bdca3b0a7859
pristine_git_object: 6219f8400d09673322eaa3068c0b57dbcd662e5c
last_write_checksum: sha1:3e4d1947edd8b77f1ebd804e91423221e6d33682
pristine_git_object: 45430fd36f0e76600b818778af749de0969ae34f
src/openrouter/components/chatcontentitems.py:
id: c4253e14cbd3
last_write_checksum: sha1:e17966663f37a773e5ab5fc0c5e7e09f3ab9aef4
@@ -7256,6 +7260,10 @@ trackedFiles:
id: 0d1d229c531f
last_write_checksum: sha1:b0b2c44af496c446fd6bbf1396f1f97f696eff5e
pristine_git_object: 9d5ec202c11d21002eaa7b6724d62e0710c42522
src/openrouter/components/fusionsource.py:
id: ce20a4a9f32f
last_write_checksum: sha1:2141dd1dd9396035bf8070878c9ec945331514c8
pristine_git_object: c60f29915ce3fed38a693d10b8c2de868f8ee728
src/openrouter/components/generationcontentdata.py:
id: 0140215b5b46
last_write_checksum: sha1:09e15ae2acc4f44084e2206ea51e6a06f4c5ee11
@@ -7794,8 +7802,8 @@ trackedFiles:
pristine_git_object: dcfc7a806fbf5794ad168bca00344b005e0d16ee
src/openrouter/components/outputfusionservertoolitem.py:
id: 1d798a2bb7ae
last_write_checksum: sha1:3808bb5da64abfef93437fb05e494ea492eb9818
pristine_git_object: 0ad5d34088e18cd0727ce13c5b9a3b8d47a94297
last_write_checksum: sha1:72cd3cdd5e1f505fe58c30949b4ceba8faf49644
pristine_git_object: 0e8e4e6ed1d5e8c5fb613c6fb1c6beee033087c3
src/openrouter/components/outputimagegenerationcallitem.py:
id: 48d20dc00e1c
last_write_checksum: sha1:6795b316ac97958ba4381cdd4d6cc6108d7bd1a5
@@ -7810,8 +7818,8 @@ trackedFiles:
pristine_git_object: 897c4727eec2497fe15e5603187e24218c08ac87
src/openrouter/components/outputitems.py:
id: 90f107de3116
last_write_checksum: sha1:31923f8d495bcd6b48594217cff463b5f868ecbb
pristine_git_object: a7d056e30ef0b1035d5d2e020505821dbc638143
last_write_checksum: sha1:e262597f5269a4d4374500a0bc9b43701cc938fa
pristine_git_object: da3d920280394d094a6745d0770e57373df1afc5
src/openrouter/components/outputmcpservertoolitem.py:
id: bb8c2536a58e
last_write_checksum: sha1:6cbe556b2268af0142d982007b273cc43b7605c7
@@ -10560,4 +10568,3 @@ examples:
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
examplesVersion: 1.0.2
releaseNotes: "## Python SDK Changes:\n* `open_router.tts.create_speech()`: \n * `request.provider.options.quiver` **Added**\n* `open_router.stt.create_transcription()`: \n * `request.provider.options.quiver` **Added**\n* `open_router.byok.list()`: `request.provider` **Changed**\n* `open_router.images.generate()`: \n * `request.provider.options.quiver` **Added**\n* `open_router.video_generation.generate()`: \n * `request.provider.options.quiver` **Added**\n"
+1 -1
View File
@@ -32,7 +32,7 @@ generation:
skipResponseBodyAssertions: false
preApplyUnionDiscriminators: true
python:
version: 0.10.6
version: 0.10.8
additionalDependencies:
dev: {}
main: {}
+28 -1
View File
@@ -4270,11 +4270,15 @@ components:
image_url:
properties:
detail:
description: Image detail level for vision models
description: >-
Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat
Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers
that lack an original-resolution tier.
enum:
- auto
- low
- high
- original
type: string
url:
description: 'URL of the image (data: URLs supported)'
@@ -8405,6 +8409,22 @@ components:
maxItems: 8
type: array
type: object
FusionSource:
description: A web page retrieved via web search during a fusion run.
example:
title: Example article title
url: https://example.com/article
properties:
title:
description: Title of the retrieved web page.
type: string
url:
description: URL of the web page a panel or the judge retrieved during the run.
type: string
required:
- url
- title
type: object
GenerationContentData:
description: Stored prompt and completion content
example:
@@ -16295,6 +16315,13 @@ components:
- model
type: object
type: array
sources:
description: >-
Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL
across the whole run. Present when at least one model cited a source.
items:
$ref: '#/components/schemas/FusionSource'
type: array
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
+25 -1
View File
@@ -4267,11 +4267,13 @@ components:
image_url:
properties:
detail:
description: Image detail level for vision models
description: >-
Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier.
enum:
- auto
- low
- high
- original
type: string
x-speakeasy-unknown-values: allow
url:
@@ -8356,6 +8358,22 @@ components:
maxItems: 8
type: array
type: object
FusionSource:
description: A web page retrieved via web search during a fusion run.
example:
title: Example article title
url: https://example.com/article
properties:
title:
description: Title of the retrieved web page.
type: string
url:
description: URL of the web page a panel or the judge retrieved during the run.
type: string
required:
- url
- title
type: object
GenerationContentData:
description: Stored prompt and completion content
example:
@@ -16212,6 +16230,12 @@ components:
- model
type: object
type: array
sources:
description: >-
Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source.
items:
$ref: '#/components/schemas/FusionSource'
type: array
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
+6 -6
View File
@@ -2,20 +2,20 @@ speakeasyVersion: 1.680.0
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:c71a8e6b169e2ba8a81840f6ebeeb268ee09a440fb16b891f74fe2a9b065b989
sourceBlobDigest: sha256:9d925b089f27563fa71967c94b8307007161626a685b84f4c4ab046b78b33f01
sourceRevisionDigest: sha256:ed6981b24a0f8df827afac0f83d7dae4d8f7df331ae6e72664e03800cb7a0244
sourceBlobDigest: sha256:5961e537bd3160eb3f541232a5e7cb43704fed5e9ce76b342c08f6c52d4fefe9
tags:
- latest
- speakeasy-sdk-regen-1782497972
- speakeasy-sdk-regen-1782660460
- 1.0.0
targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:c71a8e6b169e2ba8a81840f6ebeeb268ee09a440fb16b891f74fe2a9b065b989
sourceBlobDigest: sha256:9d925b089f27563fa71967c94b8307007161626a685b84f4c4ab046b78b33f01
sourceRevisionDigest: sha256:ed6981b24a0f8df827afac0f83d7dae4d8f7df331ae6e72664e03800cb7a0244
sourceBlobDigest: sha256:5961e537bd3160eb3f541232a5e7cb43704fed5e9ce76b342c08f6c52d4fefe9
codeSamplesNamespace: open-router-python-code-samples
codeSamplesRevisionDigest: sha256:ad463b22c9ef7c281c59200fc59405a2d57b37cb07a848f6fad47870777c8ec0
codeSamplesRevisionDigest: sha256:d3f20480ea1c0bcb8d872ae696b7a8b2c16d1469ee95b6df12b03b7004ce1c9c
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.680.0
+21 -1
View File
@@ -88,4 +88,24 @@ Based on:
### Generated
- [python v0.10.6] .
### Releases
- [PyPI v0.10.6] https://pypi.org/project/openrouter/0.10.6 - .
- [PyPI v0.10.6] https://pypi.org/project/openrouter/0.10.6 - .
## 2026-06-26 23:43:40
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
### Generated
- [python v0.10.7] .
### Releases
- [PyPI v0.10.7] https://pypi.org/project/openrouter/0.10.7 - .
## 2026-06-28 15:27:21
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.680.0 (2.788.4) https://github.com/speakeasy-api/speakeasy
### Generated
- [python v0.10.8] .
### Releases
- [PyPI v0.10.8] https://pypi.org/project/openrouter/0.10.8 - .
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
version = "0.10.6"
version = "0.10.8"
description = "Official Python Client SDK for OpenRouter."
authors = [{ name = "OpenRouter" },]
readme = "README-PYPI.md"
+2 -2
View File
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
__version__: str = "0.10.6"
__version__: str = "0.10.8"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.788.4"
__user_agent__: str = "speakeasy-sdk/python 0.10.6 2.788.4 1.0.0 openrouter"
__user_agent__: str = "speakeasy-sdk/python 0.10.8 2.788.4 1.0.0 openrouter"
try:
if __package__ is not None:
+5
View File
@@ -1020,6 +1020,7 @@ if TYPE_CHECKING:
FusionServerToolConfigToolTypedDict,
FusionServerToolConfigTypedDict,
)
from .fusionsource import FusionSource, FusionSourceTypedDict
from .generationcontentdata import (
GenerationContentData,
GenerationContentDataOutput,
@@ -3423,6 +3424,8 @@ __all__ = [
"FusionServerToolOpenRouter",
"FusionServerToolOpenRouterType",
"FusionServerToolOpenRouterTypedDict",
"FusionSource",
"FusionSourceTypedDict",
"GenerationContentData",
"GenerationContentDataOutput",
"GenerationContentDataOutputTypedDict",
@@ -5348,6 +5351,8 @@ _dynamic_imports: dict[str, str] = {
"FusionServerToolConfigTool": ".fusionservertoolconfig",
"FusionServerToolConfigToolTypedDict": ".fusionservertoolconfig",
"FusionServerToolConfigTypedDict": ".fusionservertoolconfig",
"FusionSource": ".fusionsource",
"FusionSourceTypedDict": ".fusionsource",
"GenerationContentData": ".generationcontentdata",
"GenerationContentDataOutput": ".generationcontentdata",
"GenerationContentDataOutputTypedDict": ".generationcontentdata",
@@ -13,17 +13,18 @@ ChatContentImageDetail = Union[
"auto",
"low",
"high",
"original",
],
UnrecognizedStr,
]
r"""Image detail level for vision models"""
r"""Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier."""
class ChatContentImageImageURLTypedDict(TypedDict):
url: str
r"""URL of the image (data: URLs supported)"""
detail: NotRequired[ChatContentImageDetail]
r"""Image detail level for vision models"""
r"""Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier."""
class ChatContentImageImageURL(BaseModel):
@@ -33,7 +34,7 @@ class ChatContentImageImageURL(BaseModel):
detail: Annotated[
Optional[ChatContentImageDetail], PlainValidator(validate_open_enum(False))
] = None
r"""Image detail level for vision models"""
r"""Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier."""
ChatContentImageType = Literal["image_url",]
+24
View File
@@ -0,0 +1,24 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from typing_extensions import TypedDict
class FusionSourceTypedDict(TypedDict):
r"""A web page retrieved via web search during a fusion run."""
title: str
r"""Title of the retrieved web page."""
url: str
r"""URL of the web page a panel or the judge retrieved during the run."""
class FusionSource(BaseModel):
r"""A web page retrieved via web search during a fusion run."""
title: str
r"""Title of the retrieved web page."""
url: str
r"""URL of the web page a panel or the judge retrieved during the run."""
@@ -2,6 +2,7 @@
from __future__ import annotations
from .fusionanalysisresult import FusionAnalysisResult, FusionAnalysisResultTypedDict
from .fusionsource import FusionSource, FusionSourceTypedDict
from .toolcallstatus import ToolCallStatus
from openrouter.types import BaseModel
from openrouter.utils import validate_open_enum
@@ -60,6 +61,8 @@ class OutputFusionServerToolItemTypedDict(TypedDict):
id: NotRequired[str]
responses: NotRequired[List[ResponseTypedDict]]
r"""Analysis models that produced a response in this fusion run, with each model's full panel content."""
sources: NotRequired[List[FusionSourceTypedDict]]
r"""Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source."""
class OutputFusionServerToolItem(BaseModel):
@@ -85,3 +88,6 @@ class OutputFusionServerToolItem(BaseModel):
responses: Optional[List[Response]] = None
r"""Analysis models that produced a response in this fusion run, with each model's full panel content."""
sources: Optional[List[FusionSource]] = None
r"""Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source."""
+1 -1
View File
@@ -140,9 +140,9 @@ OutputItemsTypedDict = TypeAliasType(
OutputWebFetchServerToolItemTypedDict,
OutputCodeInterpreterServerToolItemTypedDict,
OutputReasoningItemTypedDict,
OutputFusionServerToolItemTypedDict,
OutputAdvisorServerToolItemTypedDict,
OutputSubagentServerToolItemTypedDict,
OutputFusionServerToolItemTypedDict,
],
)
r"""An output item from the response"""
Generated
+2 -2
View File
@@ -76,7 +76,7 @@ name = "exceptiongroup"
version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
wheels = [
@@ -220,7 +220,7 @@ wheels = [
[[package]]
name = "openrouter"
version = "0.10.6"
version = "0.10.8"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },