Compare commits

..
Author SHA1 Message Date
speakeasy-github[bot]andspeakeasy-bot 5ed54a1126 empty commit to trigger [run-tests] workflow 2026-06-18 21:41:15 +00:00
speakeasybot 66b020ff43 ## Python SDK Changes:
* `open_router.benchmarks.get_benchmarks()`: **Added**
* `open_router.datasets.get_benchmarks_artificial_analysis()`: **Deleted** **Breaking** ⚠️
* `open_router.datasets.get_benchmarks_design_arena()`: **Deleted** **Breaking** ⚠️
* `open_router.embeddings.list_models()`:  `response.data.[].reasoning` **Added**
* `open_router.models.get()`:  `response.data.reasoning` **Added**
* `open_router.models.list()`:  `response.data.[].reasoning` **Added**
* `open_router.models.list_for_user()`:  `response.data.[].reasoning` **Added**
2026-06-18 21:40:57 +00:00
7 changed files with 21 additions and 148 deletions
+14 -19
View File
@@ -1,7 +1,7 @@
lockVersion: 2.0.0
id: c48cf606-fb42-4a45-9c23-8f0555307828
management:
docChecksum: ed88d95b0b7f60419c1114838caf081b
docChecksum: 8a12eb05f6d29e6d4369ce71067b4c27
docVersion: 1.0.0
speakeasyVersion: 1.680.0
generationVersion: 2.788.4
@@ -11,9 +11,9 @@ management:
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
generation_id: 9aa73187-1861-4f91-95f7-cd1d2afafdff
pristine_commit_hash: 3750e2dd54138f67d21ec18da9f09d92da278104
pristine_tree_hash: 10fa76667eb33e2d858c8f50f5028fccb1afff88
generation_id: b1a3cf99-d693-434e-8d7e-e5a1d85ee33d
pristine_commit_hash: cd611d4017874cd968979a48e9159baafc137c1b
pristine_tree_hash: 7b768060a0f6d7e54a10dda44219006db5253019
features:
python:
acceptHeaders: 3.0.0
@@ -874,8 +874,8 @@ trackedFiles:
pristine_git_object: 13ae40be5e3c883f88789c3b5b74a3b2da4c85c2
docs/components/chatresult.md:
id: 212b0f66efd0
last_write_checksum: sha1:f40df693ad2d2d8e156aacb218af394f675bfb89
pristine_git_object: 41f82f9576591d048a504f29ca19b148ccca02bc
last_write_checksum: sha1:0a94cfb0c88a0dbf0f0abc5d83ac6fc6c48051b4
pristine_git_object: cc04eadd2f48efd93533a3ddae52ad39e91f5dee
docs/components/chatresultobject.md:
id: 668504931d18
last_write_checksum: sha1:6d550246aa007a5be94a9788ae4cfdfb75006980
@@ -898,8 +898,8 @@ trackedFiles:
pristine_git_object: 690d74b67239bf7f423039652aea3741c831137e
docs/components/chatstreamchunk.md:
id: 404d264ea22c
last_write_checksum: sha1:096b20b3777fd22cbe9c3ffb26c0d6bf51feedbe
pristine_git_object: 5cce75d63c13268740aa9fdb46f5273f77cd1c25
last_write_checksum: sha1:1353c09378850a9810c39cf3198f0fd5e049f610
pristine_git_object: 3c64aec72fb2eb9f0cf6eae975dd9c8bb183c6e6
docs/components/chatstreamchunkobject.md:
id: 5393918d9606
last_write_checksum: sha1:0765d94b3d01c811155dce29c20c2ae4bd4abd0e
@@ -998,8 +998,8 @@ trackedFiles:
pristine_git_object: 7eb1791a9153498d5ffffc6b67d3668df59000c2
docs/components/chatusage.md:
id: 72cd0c41ec64
last_write_checksum: sha1:97805cc7bc61ef57d2279033d8c0b6859cd6e09f
pristine_git_object: 206128fbeaf4799b95c46d20265c1143f83a7898
last_write_checksum: sha1:9a6a709e2ea8f36c1f55afc3ae364917ab787e5e
pristine_git_object: 536fc52c1d3dec20dc3dd38e65714da08779e4d3
docs/components/chatusermessage.md:
id: 4ab205b0030b
last_write_checksum: sha1:4c87fbc12f54bb5b58526949e3f8ea9c161f8cdf
@@ -3920,10 +3920,6 @@ trackedFiles:
id: beee40001fda
last_write_checksum: sha1:45b7b8881a6560a468153662d61b99605a492edf
pristine_git_object: 2e0839d06f821dd97780dc22f202dedf23e4efe1
docs/components/servertoolusedetails.md:
id: b14e315828c5
last_write_checksum: sha1:2e4e747062c990a502a208c1c90382305e428fe7
pristine_git_object: fb12e181963bb9eada3294d7a605b076f695ab58
docs/components/serviceunavailableresponseerrordata.md:
id: 6d65ecfd7ad3
last_write_checksum: sha1:c0e9357b45a58f3da2d3520b502cec7dae5f3446
@@ -6106,8 +6102,8 @@ trackedFiles:
pristine_git_object: a1894915bd32aee65f019885634eb7908970a046
src/openrouter/components/__init__.py:
id: 81754e97b3f4
last_write_checksum: sha1:e59a97a36a75c1848f5342f9c3d061dd993855d8
pristine_git_object: f2928e99d526cad8e81c673c4c03bc864c14a365
last_write_checksum: sha1:805bb2df1d5fe49556f426348971e5ccdc08aa56
pristine_git_object: eca63a922d8154ae9106e8f8b5aaf16dbc580afd
src/openrouter/components/aabenchmarkentry.py:
id: e2e0f0b48c82
last_write_checksum: sha1:1b6b66672fb80dccdc39843a98bdef6d7d804364
@@ -6562,8 +6558,8 @@ trackedFiles:
pristine_git_object: 2ccba8386486b7a730816a9829b01754935a2e96
src/openrouter/components/chatusage.py:
id: f224a054bf45
last_write_checksum: sha1:e63f9a7b86d0091b0fddf04ee273088b51dd76a6
pristine_git_object: 62e2f91566dbcaf0794d927b679552757efe46b1
last_write_checksum: sha1:947079d2163225a49e423151de25dc6132df5bf6
pristine_git_object: 3a7357d8a6f725ba18b1f15215a197f11e917659
src/openrouter/components/chatusermessage.py:
id: 7777191e729a
last_write_checksum: sha1:1ecc9101c05178427d73e455de4d679ac8d78015
@@ -10061,7 +10057,6 @@ releaseNotes: |
* `open_router.benchmarks.get_benchmarks()`: **Added**
* `open_router.datasets.get_benchmarks_artificial_analysis()`: **Deleted** **Breaking** :warning:
* `open_router.datasets.get_benchmarks_design_arena()`: **Deleted** **Breaking** :warning:
* `open_router.chat.send()`: `response` **Changed**
* `open_router.embeddings.list_models()`: `response.data.[].reasoning` **Added**
* `open_router.models.get()`: `response.data.reasoning` **Added**
* `open_router.models.list()`: `response.data.[].reasoning` **Added**
-25
View File
@@ -5401,9 +5401,6 @@ components:
prompt_tokens: 10
prompt_tokens_details:
cached_tokens: 2
server_tool_use_details:
tool_calls_executed: 2
tool_calls_requested: 2
total_tokens: 25
properties:
completion_tokens:
@@ -5460,28 +5457,6 @@ components:
description: Video input tokens
type: integer
type: object
server_tool_use_details:
description: Usage for server-side tool execution (e.g., web search)
nullable: true
properties:
tool_calls_executed:
description: Number of OpenRouter server tool calls that executed and produced a result
nullable: true
type: integer
tool_calls_requested:
description: >-
Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types.
Provider-native tools (e.g. native web search) are not counted here.
nullable: true
type: integer
web_search_requests:
description: >-
Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search
is also counted in tool_calls_requested; provider-native web search may report web_search_requests only.
Do not sum the two.
nullable: true
type: integer
type: object
total_tokens:
description: Total number of tokens
type: integer
-22
View File
@@ -5392,9 +5392,6 @@ components:
prompt_tokens: 10
prompt_tokens_details:
cached_tokens: 2
server_tool_use_details:
tool_calls_executed: 2
tool_calls_requested: 2
total_tokens: 25
properties:
completion_tokens:
@@ -5451,25 +5448,6 @@ components:
description: Video input tokens
type: integer
type: object
server_tool_use_details:
description: Usage for server-side tool execution (e.g., web search)
nullable: true
properties:
tool_calls_executed:
description: Number of OpenRouter server tool calls that executed and produced a result
nullable: true
type: integer
tool_calls_requested:
description: >-
Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here.
nullable: true
type: integer
web_search_requests:
description: >-
Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two.
nullable: true
type: integer
type: object
total_tokens:
description: Total number of tokens
type: integer
+6 -6
View File
@@ -2,20 +2,20 @@ speakeasyVersion: 1.680.0
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:3961034f6f0bdec425b86df15fce217a97ac7b47776d8a0c815e3dd64ebd81de
sourceBlobDigest: sha256:4e1f247864fe64f3cd13e9a6d8e3215f118d8497db4d1eb58e5c803d0d34b5dc
sourceRevisionDigest: sha256:6ca77315c3cd31ab7e308e010b26b7c9eb366b11b78ea9c71179facc4daaf97b
sourceBlobDigest: sha256:8bada810c7c5ddb302c51dbbbb36dd0c9a45c4ba1c5e44af1646f69fc2a38751
tags:
- latest
- speakeasy-sdk-regen-1781825192
- speakeasy-sdk-regen-1781818757
- 1.0.0
targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:3961034f6f0bdec425b86df15fce217a97ac7b47776d8a0c815e3dd64ebd81de
sourceBlobDigest: sha256:4e1f247864fe64f3cd13e9a6d8e3215f118d8497db4d1eb58e5c803d0d34b5dc
sourceRevisionDigest: sha256:6ca77315c3cd31ab7e308e010b26b7c9eb366b11b78ea9c71179facc4daaf97b
sourceBlobDigest: sha256:8bada810c7c5ddb302c51dbbbb36dd0c9a45c4ba1c5e44af1646f69fc2a38751
codeSamplesNamespace: open-router-python-code-samples
codeSamplesRevisionDigest: sha256:d59fc8e5b1b99b9889f59b905f8ecf55e91c3ded775b70c80e3c3b3a940f9eba
codeSamplesRevisionDigest: sha256:80ceff338c097e19bf3951fd00e8010fc7c102b916a684eeec33d507b7a3844f
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.680.0
+1 -1
View File
@@ -30,7 +30,7 @@ Based on:
### Releases
- [PyPI v0.10.0] https://pypi.org/project/openrouter/0.10.0 - .
## 2026-06-19 01:04:04
## 2026-06-18 21:38:57
### Changes
Based on:
- OpenAPI Doc
-6
View File
@@ -527,8 +527,6 @@ if TYPE_CHECKING:
CompletionTokensDetailsTypedDict,
PromptTokensDetails,
PromptTokensDetailsTypedDict,
ServerToolUseDetails,
ServerToolUseDetailsTypedDict,
)
from .chatusermessage import (
ChatUserMessage,
@@ -4058,8 +4056,6 @@ __all__ = [
"SearchQualityLevel",
"Security",
"SecurityTypedDict",
"ServerToolUseDetails",
"ServerToolUseDetailsTypedDict",
"ServiceUnavailableResponseErrorData",
"ServiceUnavailableResponseErrorDataTypedDict",
"ShellCallItem",
@@ -4746,8 +4742,6 @@ _dynamic_imports: dict[str, str] = {
"CompletionTokensDetailsTypedDict": ".chatusage",
"PromptTokensDetails": ".chatusage",
"PromptTokensDetailsTypedDict": ".chatusage",
"ServerToolUseDetails": ".chatusage",
"ServerToolUseDetailsTypedDict": ".chatusage",
"ChatUserMessage": ".chatusermessage",
"ChatUserMessageContent": ".chatusermessage",
"ChatUserMessageContentTypedDict": ".chatusermessage",
-69
View File
@@ -112,68 +112,6 @@ class PromptTokensDetails(BaseModel):
r"""Video input tokens"""
class ServerToolUseDetailsTypedDict(TypedDict):
r"""Usage for server-side tool execution (e.g., web search)"""
tool_calls_executed: NotRequired[Nullable[int]]
r"""Number of OpenRouter server tool calls that executed and produced a result"""
tool_calls_requested: NotRequired[Nullable[int]]
r"""Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here."""
web_search_requests: NotRequired[Nullable[int]]
r"""Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two."""
class ServerToolUseDetails(BaseModel):
r"""Usage for server-side tool execution (e.g., web search)"""
tool_calls_executed: OptionalNullable[int] = UNSET
r"""Number of OpenRouter server tool calls that executed and produced a result"""
tool_calls_requested: OptionalNullable[int] = UNSET
r"""Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here."""
web_search_requests: OptionalNullable[int] = UNSET
r"""Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"tool_calls_executed",
"tool_calls_requested",
"web_search_requests",
]
nullable_fields = [
"tool_calls_executed",
"tool_calls_requested",
"web_search_requests",
]
null_default_fields = []
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
return m
class ChatUsageTypedDict(TypedDict):
r"""Token usage statistics"""
@@ -193,8 +131,6 @@ class ChatUsageTypedDict(TypedDict):
r"""Whether a request was made using a Bring Your Own Key configuration"""
prompt_tokens_details: NotRequired[Nullable[PromptTokensDetailsTypedDict]]
r"""Detailed prompt token usage"""
server_tool_use_details: NotRequired[Nullable[ServerToolUseDetailsTypedDict]]
r"""Usage for server-side tool execution (e.g., web search)"""
class ChatUsage(BaseModel):
@@ -224,9 +160,6 @@ class ChatUsage(BaseModel):
prompt_tokens_details: OptionalNullable[PromptTokensDetails] = UNSET
r"""Detailed prompt token usage"""
server_tool_use_details: OptionalNullable[ServerToolUseDetails] = UNSET
r"""Usage for server-side tool execution (e.g., web search)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
@@ -235,14 +168,12 @@ class ChatUsage(BaseModel):
"cost_details",
"is_byok",
"prompt_tokens_details",
"server_tool_use_details",
]
nullable_fields = [
"completion_tokens_details",
"cost",
"cost_details",
"prompt_tokens_details",
"server_tool_use_details",
]
null_default_fields = []