diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 5ac6eaac..711a0a60 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: b6b6c2e99101e03a1b8366308a40ebfc
+ docChecksum: 027a8e36d13391087c6d2baf8d94c250
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 1.3.9
- configChecksum: 894441e58a3f5dd9204fd01aaf544262
+ releaseVersion: 1.3.10
+ configChecksum: 53d2caf389ae884e9a9c61e989f0fdb2
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 49ee07b9-005b-49d4-b09c-b91a4ac95790
- pristine_commit_hash: 64eb3fb8de2d28b787c2c2ceb1900a21b1594805
- pristine_tree_hash: 5836b8f07955e68e55c5bad4211927949c7ce1d1
+ generation_id: 0019c2ba-e50a-4606-bb1d-9b2af904614d
+ pristine_commit_hash: 64c19e3c304b1c3e642b1f159c1698e16f122dae
+ pristine_tree_hash: 9b9612d3fa6ad6fc4f07cb82d991ad1c4cfab4b8
features:
python:
acceptHeaders: 3.0.0
@@ -8736,8 +8736,8 @@ trackedFiles:
pristine_git_object: 3bd312de040f562fc4b66811f89db0b06483ec1d
docs/operations/listcontainerfilesrequest.mdx:
id: 54073da72503
- last_write_checksum: sha1:59ba17191d4169cc9694e004eb28a9a2f7c688c6
- pristine_git_object: 5164f3178bdb8dfc0984d723a0f5a9d467ff5250
+ last_write_checksum: sha1:1e7cf2cb69b41bd118a62dbb17bfdca7591b5681
+ pristine_git_object: 90add74a591950b1c08757f18063f33a49c73f65
docs/operations/listdata.mdx:
id: 949d8d9f5ac7
last_write_checksum: sha1:ad6cfad0f973f73ffc93542796af523c275eb535
@@ -9488,8 +9488,8 @@ trackedFiles:
pristine_git_object: bed5f74e5e8269cbba66943524ffa5206c933de3
docs/sdks/containers/README.mdx:
id: cc963972ad75
- last_write_checksum: sha1:074510fd249616355476609d7c5a0e0124082949
- pristine_git_object: a616e87543c27d3c273460512c37774a98af78f5
+ last_write_checksum: sha1:75105ed296ac6b9690a5838b16b7a7be3e5ed0e3
+ pristine_git_object: 6c21ea54370fee978e7b28415047312e269bee48
docs/sdks/credits/README.mdx:
id: 2ba51de8de3f
last_write_checksum: sha1:08de2963f78b645eaa14fa8511552bae2ddccd75
@@ -9604,8 +9604,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:384f59fbedda4c45bc46e666ae73e94a2d717ba9
- pristine_git_object: 7e2689abaea1448d14006d70d04b486b2e663a01
+ last_write_checksum: sha1:b739879bb6b7a8928dbab3269b02216004ee4d00
+ pristine_git_object: 438de8339a6bb367f7e5996bdb1ccdcbfdb2d02d
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -9632,8 +9632,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:f9d687f92e3f26b72075401aa52a64ebbf3de9aa
- pristine_git_object: 91bbbc18887348098057e3e32e63d2c5bedb9017
+ last_write_checksum: sha1:d03b2de49c1a8098368b23cca9dd913579b71a57
+ pristine_git_object: cd93806bcdf19ed5871d95ccc53fed063d2aafb0
src/openrouter/alpha.py:
id: 306c4d93308d
last_write_checksum: sha1:30f55a360f41376ab194b9ea725fe4e001a5ae1a
@@ -12924,8 +12924,8 @@ trackedFiles:
pristine_git_object: 72db9c53af7eca4225e47c854d94f686df920af9
src/openrouter/containers.py:
id: 5edae5db57e9
- last_write_checksum: sha1:f85e2c6690147ccae53d67d70951b60b9a040e36
- pristine_git_object: b0b365c046b2cd3812f60f2f3f2dff6189bede7e
+ last_write_checksum: sha1:7fd7efbc65df7908c9a33ef0a81a19f6b6d81bdb
+ pristine_git_object: 7157fe08f91ee5aa084343220e959bec7d5e180b
src/openrouter/credits.py:
id: cdc961937101
last_write_checksum: sha1:7ac37671d3de537eb98f15239d531e3ab3928a59
@@ -13464,8 +13464,8 @@ trackedFiles:
pristine_git_object: 3204af92c6d4ed1d987070c80eb6739ac9d5b5de
src/openrouter/operations/listcontainerfiles.py:
id: 7a30b9291c76
- last_write_checksum: sha1:c51c428703923d69ea0fd6178d6313314e7b0ee9
- pristine_git_object: 47015cefac479e2b5a5d7065fdafa7f94d53f25e
+ last_write_checksum: sha1:937c9fb30fd651d28793340285b3389518b26d96
+ pristine_git_object: 66670139b6cee0fe41d3aeac9ad1be9671f2b501
src/openrouter/operations/listembeddingsmodels.py:
id: bf749a1f23d6
last_write_checksum: sha1:938440c9b9df0c3d8430792f262bffced0207d13
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 55e055a5..3c539ef4 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.3.9
+ version: 1.3.10
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 4c424c77..9f778558 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -35759,12 +35759,12 @@ paths:
maximum: 1000
minimum: 1
type: 'integer'
- - description: 'Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path.'
+ - description: 'Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted.'
in: 'query'
name: 'after'
required: false
schema:
- description: 'Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path.'
+ description: 'Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted.'
example: 'cfile_b3V0L3JlcG9ydC5jc3Y'
type: 'string'
responses:
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index cd9b0365..c0c5af29 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:4970cb589eff6eb54083b44fb90230c549fd15c17fea9c8cba5ccb9fd7804230
- sourceBlobDigest: sha256:68d7182d3f19a46ab117cfb06e1b8322d7d3575cccfd61271295bfec93762a9d
+ sourceRevisionDigest: sha256:781cdc5e6fe2f01af8242ea101ecc82072f5a6199663e31100252cf02c83e27c
+ sourceBlobDigest: sha256:0a9eb32d2d19144af6a459a08618c682830c3a2c694262c03f31644db9b5c530
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:4970cb589eff6eb54083b44fb90230c549fd15c17fea9c8cba5ccb9fd7804230
- sourceBlobDigest: sha256:68d7182d3f19a46ab117cfb06e1b8322d7d3575cccfd61271295bfec93762a9d
+ sourceRevisionDigest: sha256:781cdc5e6fe2f01af8242ea101ecc82072f5a6199663e31100252cf02c83e27c
+ sourceBlobDigest: sha256:0a9eb32d2d19144af6a459a08618c682830c3a2c694262c03f31644db9b5c530
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:de6376de84b2f9cecc789aab6d657181289b70ae89baf40d1b0c44b5966406f8
+ codeSamplesRevisionDigest: sha256:3a26973e3451f911526337545b8ab15829773e10742be8a19b60e9ebbc30d2e6
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 0e09b76b..0df51a6e 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -2859,4 +2859,14 @@ Based on:
### Generated
- [python v1.3.9] .
### Releases
-- [PyPI v1.3.9] https://pypi.org/project/openrouter/1.3.9 - .
\ No newline at end of file
+- [PyPI v1.3.9] https://pypi.org/project/openrouter/1.3.9 - .
+
+## 2026-09-30 06:27:59
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.3.10] .
+### Releases
+- [PyPI v1.3.10] https://pypi.org/project/openrouter/1.3.10 - .
\ No newline at end of file
diff --git a/docs/operations/listcontainerfilesrequest.mdx b/docs/operations/listcontainerfilesrequest.mdx
index 5164f317..90add74a 100644
--- a/docs/operations/listcontainerfilesrequest.mdx
+++ b/docs/operations/listcontainerfilesrequest.mdx
@@ -4,11 +4,11 @@ title: "ListContainerFilesRequest"
## Fields
-| Field | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
-| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
-| `container_id` | *str* | :heavy_check_mark: | The canonical container id, exactly as returned in a bash/shell tool result — a restarted session has its own `-r`-suffixed id. A session-derived id is always `sess_` + the sanitized session key, which is not necessarily the raw session id that was sent. | sess_abc123 |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1-1000). Defaults to 100 when absent. | 100 |
-| `after` | *Optional[str]* | :heavy_minus_sign: | Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. | cfile_b3V0L3JlcG9ydC5jc3Y |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
+| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
+| `container_id` | *str* | :heavy_check_mark: | The canonical container id, exactly as returned in a bash/shell tool result — a restarted session has its own `-r`-suffixed id. A session-derived id is always `sess_` + the sanitized session key, which is not necessarily the raw session id that was sent. | sess_abc123 |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1-1000). Defaults to 100 when absent. | 100 |
+| `after` | *Optional[str]* | :heavy_minus_sign: | Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted. | cfile_b3V0L3JlcG9ydC5jc3Y |
\ No newline at end of file
diff --git a/docs/sdks/containers/README.mdx b/docs/sdks/containers/README.mdx
index a616e875..6c21ea54 100644
--- a/docs/sdks/containers/README.mdx
+++ b/docs/sdks/containers/README.mdx
@@ -41,15 +41,15 @@ with OpenRouter(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `container_id` | *str* | :heavy_check_mark: | The canonical container id, exactly as returned in a bash/shell tool result — a restarted session has its own `-r`-suffixed id. A session-derived id is always `sess_` + the sanitized session key, which is not necessarily the raw session id that was sent. | sess_abc123 |
-| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
-| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1-1000). Defaults to 100 when absent. | 100 |
-| `after` | *Optional[str]* | :heavy_minus_sign: | Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. | cfile_b3V0L3JlcG9ydC5jc3Y |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `container_id` | *str* | :heavy_check_mark: | The canonical container id, exactly as returned in a bash/shell tool result — a restarted session has its own `-r`-suffixed id. A session-derived id is always `sess_` + the sanitized session key, which is not necessarily the raw session id that was sent. | sess_abc123 |
+| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
+| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1-1000). Defaults to 100 when absent. | 100 |
+| `after` | *Optional[str]* | :heavy_minus_sign: | Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted. | cfile_b3V0L3JlcG9ydC5jc3Y |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
diff --git a/pyproject.toml b/pyproject.toml
index 7e2689ab..438de833 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.3.9"
+version = "1.3.10"
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 91bbbc18..cd93806b 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.9"
+__version__: str = "1.3.10"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 1.3.9 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.3.10 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/containers.py b/src/openrouter/containers.py
index b0b365c0..7157fe08 100644
--- a/src/openrouter/containers.py
+++ b/src/openrouter/containers.py
@@ -40,7 +40,7 @@ def list_container_files(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param limit: Maximum number of files to return (1-1000). Defaults to 100 when absent.
- :param after: Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path.
+ :param after: Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -191,7 +191,7 @@ async def list_container_files_async(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param limit: Maximum number of files to return (1-1000). Defaults to 100 when absent.
- :param after: Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path.
+ :param after: Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
diff --git a/src/openrouter/operations/listcontainerfiles.py b/src/openrouter/operations/listcontainerfiles.py
index 47015cef..66670139 100644
--- a/src/openrouter/operations/listcontainerfiles.py
+++ b/src/openrouter/operations/listcontainerfiles.py
@@ -97,7 +97,7 @@ class ListContainerFilesRequestTypedDict(TypedDict):
limit: NotRequired[int]
r"""Maximum number of files to return (1-1000). Defaults to 100 when absent."""
after: NotRequired[str]
- r"""Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path."""
+ r"""Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted."""
class ListContainerFilesRequest(BaseModel):
@@ -144,7 +144,7 @@ class ListContainerFilesRequest(BaseModel):
Optional[str],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
- r"""Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path."""
+ r"""Forward cursor: the previous page’s `last_id` (or any container file id); listing resumes strictly after that path. A `last_id` from a page that stopped at the scan bound may name a directory-marker path (trailing `/`) that was never listed as a file; such cursors are accepted."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/uv.lock b/uv.lock
index 58970fd5..b3960866 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.3.9"
+version = "1.3.10"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },