diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 3286f42e..d3f7d5e7 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: 1e2c7bd771afbed597a3fe7ca5edde65
+ docChecksum: d77e3bb5aa157c7c183900d46334db39
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 1.3.32
- configChecksum: afe161db7afe8f8492778f099074d78b
+ releaseVersion: 1.3.33
+ configChecksum: 57ce91757d6eb47d6f3e59cf7aa40895
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: ed66f8f4-0c57-4953-a2bb-a93ff5a00fc0
- pristine_commit_hash: 91af034be0e5150ade4eb81419dd7c4009a89668
- pristine_tree_hash: 555ed61fb71a03ef7124ea73079b65d08b40b458
+ generation_id: b8d58c35-6e5d-4279-a7af-056afe993b31
+ pristine_commit_hash: 6fd5565bba0aa3282485aa3c221719b953bae6e1
+ pristine_tree_hash: d7bcc2c1cca0e2ef5d65bde3a90bcb8f57dfd2b5
features:
python:
acceptHeaders: 3.0.0
@@ -6232,8 +6232,8 @@ trackedFiles:
pristine_git_object: be1e5af9301ba917704f25fdafed31c152485abf
docs/components/publicendpoint.mdx:
id: ec4843ef5d86
- last_write_checksum: sha1:1e3b1f96db5774279bd275122d48ef8e89a0dca8
- pristine_git_object: 1f6678254e2dc3289a8ca1894869bcc1a36873b1
+ last_write_checksum: sha1:760859f114581ea80bbc874cffcf8729acea1ad6
+ pristine_git_object: f4828c02468e8eac1684e3040fc95028e146b34e
docs/components/publicpricing.mdx:
id: 61fb18b7ff94
last_write_checksum: sha1:e241420249fcbd1bf515b0f5e84934de0b207948
@@ -10068,8 +10068,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:2195e43e13a58488b3d9d8d221850e3c4c4934d7
- pristine_git_object: 3f7f85f061dc8970a0acec53f61f74a5929eccfc
+ last_write_checksum: sha1:3b69ad22e1b9999cecd3251223412b4452b37324
+ pristine_git_object: 46ac0b69c7fad93bd12c25586271189b21f3bcff
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -10096,8 +10096,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:3a55ecf08814769e1ed8f30f174e43d396ed72a9
- pristine_git_object: 19e295e38e86f408aac633826643dbbe1c9156eb
+ last_write_checksum: sha1:f020020ee7b613d5766e62d37a244f0382192f9b
+ pristine_git_object: 1882470da9f57f19c995e23bd3d97786140a692a
src/openrouter/alpha.py:
id: 306c4d93308d
last_write_checksum: sha1:30f55a360f41376ab194b9ea725fe4e001a5ae1a
@@ -12736,8 +12736,8 @@ trackedFiles:
pristine_git_object: 5f4a4186a9c98767217546b6b87d238fbc0155f3
src/openrouter/components/publicendpoint.py:
id: 848aa2ef9129
- last_write_checksum: sha1:4081468f3100ac4b9cbf58acf39a358c2006bd3a
- pristine_git_object: 533022aa348a1147bab3c02bf5230a021706c260
+ last_write_checksum: sha1:8b105842667b99ee35fcb63268012fca05213fa3
+ pristine_git_object: 5957a43728b0b4f749dcc01c693797ec6e4b806f
src/openrouter/components/publicpricing.py:
id: 96d115d83cc5
last_write_checksum: sha1:fd8c320ac83b282eaf2405045329b55076d4311a
@@ -18432,9 +18432,3 @@ examples:
"500":
application/json: {"error": {"code": 404, "message": "Intern not found"}}
examplesVersion: 1.0.2
-releaseNotes: |
- ## Python SDK Changes:
- * `open_router.batch.create_batches()`: `response.results[].response.body.union(OpenResponsesResult).output[].union(tool_search_call)` **Added**
- * `open_router.batch.get_batches()`: `response.results[].response.body.union(OpenResponsesResult).output[].union(tool_search_call)` **Added**
- * `open_router.responses.send()`: `response` **Changed**
- * `open_router.beta.responses.send()`: `response` **Changed**
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 789b3219..a84a6b2f 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.3.32
+ version: 1.3.33
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index c1dce256..2412bd94 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -26916,7 +26916,7 @@ components:
- $ref: '#/components/schemas/PercentileStats'
- description: 'Throughput percentiles in tokens per second over the last 30 minutes. Throughput measures output token generation speed. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests.'
uptime_last_1d:
- description: 'Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data.'
+ description: 'Uptime percentage over the last day: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic.'
format: 'double'
type:
- 'number'
@@ -26927,7 +26927,7 @@ components:
- 'number'
- 'null'
uptime_last_5m:
- description: 'Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data.'
+ description: 'Uptime percentage over the last 5 minutes: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic.'
format: 'double'
type:
- 'number'
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 68e39aba..da4c4129 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:b0338d6777e7aef8794536ab2b01600c532f442eaf31abdb76bfe6f5a111de2f
- sourceBlobDigest: sha256:9291ce4fdd172d767eb0753e3661380f632e79978f8b865aff59fa11e07763d9
+ sourceRevisionDigest: sha256:6eb860bda7545004155f9d44485fca86ef3d0f7bee88babacba93d37f7ed61bd
+ sourceBlobDigest: sha256:f5ff78370f3b0150de3532b0c83b7beda92c03528e46fe75adb2f91dabbb20ab
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:b0338d6777e7aef8794536ab2b01600c532f442eaf31abdb76bfe6f5a111de2f
- sourceBlobDigest: sha256:9291ce4fdd172d767eb0753e3661380f632e79978f8b865aff59fa11e07763d9
+ sourceRevisionDigest: sha256:6eb860bda7545004155f9d44485fca86ef3d0f7bee88babacba93d37f7ed61bd
+ sourceBlobDigest: sha256:f5ff78370f3b0150de3532b0c83b7beda92c03528e46fe75adb2f91dabbb20ab
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:3dd6f9a9f90f62ef046378a633f9c56002be05c3cc969eddf3d4a938656c4404
+ codeSamplesRevisionDigest: sha256:b8583242f2c9a6ede34ddc9456f5dab49833bc871a3d52860d1e61515a909a38
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 25685872..cd010bf1 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -3089,4 +3089,14 @@ Based on:
### Generated
- [python v1.3.32] .
### Releases
-- [PyPI v1.3.32] https://pypi.org/project/openrouter/1.3.32 - .
\ No newline at end of file
+- [PyPI v1.3.32] https://pypi.org/project/openrouter/1.3.32 - .
+
+## 2026-10-08 04:44:10
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.3.33] .
+### Releases
+- [PyPI v1.3.33] https://pypi.org/project/openrouter/1.3.33 - .
\ No newline at end of file
diff --git a/docs/components/publicendpoint.mdx b/docs/components/publicendpoint.mdx
index 201fabeb..3a1c6da9 100644
--- a/docs/components/publicendpoint.mdx
+++ b/docs/components/publicendpoint.mdx
@@ -30,6 +30,6 @@ Information about a specific model endpoint
| `supports_voice_cloning` | *Optional[bool]* | ➖ | Whether this TTS endpoint accepts inline reference audio (`input_references`) for stateless voice cloning. Requests carrying reference audio are only routed to endpoints where this is true. | |
| `tag` | *str* | ✅ | N/A | |
| `throughput_last_30m` | [Nullable[components.PercentileStats]](../components/percentilestats.mdx) | ✅ | N/A | \{
"p50": 25.5,
"p75": 35.2,
"p90": 48.7,
"p99": 85.3
} |
-| `uptime_last_1d` | *Nullable[float]* | ✅ | Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. | |
+| `uptime_last_1d` | *Nullable[float]* | ✅ | Uptime percentage over the last day: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic. | |
| `uptime_last_30m` | *Nullable[float]* | ✅ | N/A | |
-| `uptime_last_5m` | *Nullable[float]* | ✅ | Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. | |
\ No newline at end of file
+| `uptime_last_5m` | *Nullable[float]* | ✅ | Uptime percentage over the last 5 minutes: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic. | |
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 3f7f85f0..46ac0b69 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.3.32"
+version = "1.3.33"
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 19e295e3..1882470d 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.32"
+__version__: str = "1.3.33"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 1.3.32 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.3.33 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/components/publicendpoint.py b/src/openrouter/components/publicendpoint.py
index 533022aa..5957a437 100644
--- a/src/openrouter/components/publicendpoint.py
+++ b/src/openrouter/components/publicendpoint.py
@@ -501,10 +501,10 @@ class PublicEndpointTypedDict(TypedDict):
tag: str
throughput_last_30m: Nullable[PercentileStatsTypedDict]
uptime_last_1d: Nullable[float]
- r"""Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data."""
+ r"""Uptime percentage over the last day: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic."""
uptime_last_30m: Nullable[float]
uptime_last_5m: Nullable[float]
- r"""Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data."""
+ r"""Uptime percentage over the last 5 minutes: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic."""
perf_last_30m_by_workload: NotRequired[PerfLast30mByWorkloadTypedDict]
r"""Endpoint performance over the last 30 minutes, keyed by the kind of request served (e.g. `text_generation`, `image_generation`). Additive to the legacy singular latency and throughput fields; image and video generation report end-to-end latency. Only visible when authenticated with an API key or cookie."""
status: NotRequired[EndpointStatus]
@@ -557,12 +557,12 @@ class PublicEndpoint(BaseModel):
throughput_last_30m: Nullable[PercentileStats]
uptime_last_1d: Nullable[float]
- r"""Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data."""
+ r"""Uptime percentage over the last day: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic."""
uptime_last_30m: Nullable[float]
uptime_last_5m: Nullable[float]
- r"""Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data."""
+ r"""Uptime percentage over the last 5 minutes: the share of minutes in which at least 80% of provider attempts succeeded, counting only minutes with 10 or more attempts. Rate-limited and caller-caused failures are excluded. Null when no minute had enough traffic."""
perf_last_30m_by_workload: Optional[PerfLast30mByWorkload] = None
r"""Endpoint performance over the last 30 minutes, keyed by the kind of request served (e.g. `text_generation`, `image_generation`). Additive to the legacy singular latency and throughput fields; image and video generation report end-to-end latency. Only visible when authenticated with an API key or cookie."""
diff --git a/uv.lock b/uv.lock
index 66e13d96..52f15d88 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.3.32"
+version = "1.3.33"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },