diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 1454812..fa92dd7 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: 4c1de84906249adffa68289b1272a337
+ docChecksum: 913314e7b77524966693bb56c9a3dd24
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 0.11.27
- configChecksum: 8c481cc9a577b723dec23a1acb6acd44
+ releaseVersion: 0.11.28
+ configChecksum: ce48138720beb4eb8841b187c03d254f
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 29d14705-a7a0-4678-9a14-db322b73e2e9
- pristine_commit_hash: 604984950189ec77e6d3e0907500b9a36193139a
- pristine_tree_hash: ac64da59d036426e6a5253061a7139a4a12fd118
+ generation_id: e656f374-a717-4315-90c0-6ee70ed0cf9c
+ pristine_commit_hash: 3d5b10a16d484690e232f230a59576340aa52303
+ pristine_tree_hash: f9fc6333f4a8952a56a6ca33eb92a50cc9b98d90
features:
python:
acceptHeaders: 3.0.0
@@ -244,6 +244,10 @@ trackedFiles:
id: f047a00a8826
last_write_checksum: sha1:7731c7cecebc8d0ea5d779a811809d4d570ed7c1
pristine_git_object: bd3e799f85c07638dff4daf50d361bc718c47b0f
+ docs/components/anthropiccachecreation.mdx:
+ id: 76d410a5e73e
+ last_write_checksum: sha1:3b9e3d49c378acbdada5129434dc5e469ff0137f
+ pristine_git_object: c9562a64e41c396aee705ef025650900df0b43e4
docs/components/anthropiccitationcharlocationparam.mdx:
id: c40e539e0fb1
last_write_checksum: sha1:bf7cb3fdf2b38b00e4b026e7c0304d9e308cbb75
@@ -2230,8 +2234,8 @@ trackedFiles:
pristine_git_object: cabf0cccfa7d7bee9faa823d66650bc395220966
docs/components/imagegenerationusage.mdx:
id: 0f8faafc5148
- last_write_checksum: sha1:be2ebcd80f3299ec6e38bf8c580ac5e28ba67d85
- pristine_git_object: be9fe8ffa3ea8829bf61cbbdcfd5f1a17aad439d
+ last_write_checksum: sha1:7662a98019e0fb829b124d14f938ee07f5ef5519
+ pristine_git_object: cb01cf31c16ba5f1caea0be6b376e83ee0d82b59
docs/components/imagegenerationusagecompletiontokensdetails.mdx:
id: 71ecb25e164d
last_write_checksum: sha1:f0843acffd7d7540b07bb384f299557e7309950d
@@ -6662,8 +6666,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:422b5cabaf16017ad5a03653f1cebc804d1b084d
- pristine_git_object: feee6a6c23e707d2c4e75602176b723657b31a41
+ last_write_checksum: sha1:04c19e27f55c549187e8134f7ff3696cd428f3df
+ pristine_git_object: 38e011e2029916eabc14394ca864b6516da19017
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -6690,8 +6694,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:492ccf71ca935892090ce4ccb5391ff14fa90596
- pristine_git_object: d00a5fa67b4b8b39352d9b6491b1854749529f2f
+ last_write_checksum: sha1:fd94190abbfad4aff1ecc18a06a3b466ddd7c2b8
+ pristine_git_object: fb15497c9ae07185c9379f5151156e976ce297f5
src/openrouter/analytics.py:
id: cb406b5aaabb
last_write_checksum: sha1:9e709b71dd0611056dc0cec6150b578defe32841
@@ -6730,8 +6734,8 @@ trackedFiles:
pristine_git_object: ad3d247954547814054c01989a2dff3d12b3e4e1
src/openrouter/components/__init__.py:
id: 81754e97b3f4
- last_write_checksum: sha1:5208f1af2c3420c74d0a23810dcf68807b95a130
- pristine_git_object: 92d0e11add040db79f1848e7f697605a0b2e129c
+ last_write_checksum: sha1:84999e85717da3612e618f3115f0cf56ea91b268
+ pristine_git_object: bf5e3e9d282db9aefb6629dbe70240294aadd3d8
src/openrouter/components/aabenchmarkentry.py:
id: e2e0f0b48c82
last_write_checksum: sha1:fab4d9a24d2cea937bb749d46c5f83941e99d65c
@@ -6796,6 +6800,10 @@ trackedFiles:
id: 2ec3e3546afe
last_write_checksum: sha1:338e193bd6929eb6ed69da9bdb4e608e5db6121b
pristine_git_object: 05a105c6e4f6c9037f953e4620576a8494645865
+ src/openrouter/components/anthropiccachecreation.py:
+ id: 10d4a3bde2d9
+ last_write_checksum: sha1:5e3b33cda7e69aeb2e683374815796ca76ee2368
+ pristine_git_object: b08b10ce6b317954ebf7f12d09157d5cc4a19f26
src/openrouter/components/anthropiccitationcharlocationparam.py:
id: 6f6f0732b22f
last_write_checksum: sha1:f06cdcdd405abb4222450f027fd38f29b05efbec
@@ -7714,8 +7722,8 @@ trackedFiles:
pristine_git_object: eb59bfd0d4b89dde72504f8aa57533c689474ced
src/openrouter/components/imagegenerationusage.py:
id: f51151e8dbfa
- last_write_checksum: sha1:810fd7e3dd1808d3c846fa4791ce3ba728dc32d6
- pristine_git_object: 83ae9b1bc1e7624550cf432b440c20ebe6eb16f5
+ last_write_checksum: sha1:7f3f93e29e3b5018e8bf218dc167665794cf1d65
+ pristine_git_object: 089d12ed821830575a14bf6b279a750f9737c1a4
src/openrouter/components/imagegenpartialimageevent.py:
id: f88cea0c67fc
last_write_checksum: sha1:2ee76cbb50b60ebe624bdfe0769a7bbdce047cd0
@@ -11137,3 +11145,6 @@ examples:
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
examplesVersion: 1.0.2
+releaseNotes: |
+ ## Python SDK Changes:
+ * `open_router.images.generate()`: `response` **Changed**
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 9530cc2..f6d28fd 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 0.11.27
+ version: 0.11.28
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 8ba1dfe..cfa4187 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -9933,6 +9933,8 @@ components:
prompt_tokens: 0
total_tokens: 4175
properties:
+ cache_creation:
+ $ref: '#/components/schemas/AnthropicCacheCreation'
completion_tokens:
description: The tokens generated
type: integer
@@ -11882,6 +11884,8 @@ components:
type: string
usage:
properties:
+ cache_creation:
+ $ref: '#/components/schemas/AnthropicCacheCreation'
cache_creation_input_tokens:
nullable: true
type: integer
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 3dc3983..05cc9df 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:6bb42dab7b8c3a170da9cf40c9b52e39be0e93776f2ea0aaa6d806562290594c
- sourceBlobDigest: sha256:e2a84cbdb9e0e9e83a48aa80f44d1ae9ad3ef37d469ee705e9409017c065aaa5
+ sourceRevisionDigest: sha256:edca79a14bbe673bb4bb252f55acbe2d94ac37355ff7dace80c025796f462cec
+ sourceBlobDigest: sha256:0d80dbc0f8174d90dd172c8c20c8c2aa51e915a33a0bdef18806f2bc5f215ba4
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:6bb42dab7b8c3a170da9cf40c9b52e39be0e93776f2ea0aaa6d806562290594c
- sourceBlobDigest: sha256:e2a84cbdb9e0e9e83a48aa80f44d1ae9ad3ef37d469ee705e9409017c065aaa5
+ sourceRevisionDigest: sha256:edca79a14bbe673bb4bb252f55acbe2d94ac37355ff7dace80c025796f462cec
+ sourceBlobDigest: sha256:0d80dbc0f8174d90dd172c8c20c8c2aa51e915a33a0bdef18806f2bc5f215ba4
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:620d78e3bc22a91a122ed5516d1800440ee7551693a8bc91d3dcaeefec334c50
+ codeSamplesRevisionDigest: sha256:2f083adce0aad1ea67dd838546080b632140c054b28495cc56c4f449cfc35f2e
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 260f7c0..efcceda 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -378,4 +378,14 @@ Based on:
### Generated
- [python v0.11.27] .
### Releases
-- [PyPI v0.11.27] https://pypi.org/project/openrouter/0.11.27 - .
\ No newline at end of file
+- [PyPI v0.11.27] https://pypi.org/project/openrouter/0.11.27 - .
+
+## 2026-07-14 05:35:17
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v0.11.28] .
+### Releases
+- [PyPI v0.11.28] https://pypi.org/project/openrouter/0.11.28 - .
\ No newline at end of file
diff --git a/docs/components/anthropiccachecreation.mdx b/docs/components/anthropiccachecreation.mdx
new file mode 100644
index 0000000..c9562a6
--- /dev/null
+++ b/docs/components/anthropiccachecreation.mdx
@@ -0,0 +1,10 @@
+---
+title: "AnthropicCacheCreation"
+---
+
+## Fields
+
+| Field | Type | Required | Description |
+| --------------------------- | --------------------------- | --------------------------- | --------------------------- |
+| `ephemeral_1h_input_tokens` | *int* | :heavy_check_mark: | N/A |
+| `ephemeral_5m_input_tokens` | *int* | :heavy_check_mark: | N/A |
\ No newline at end of file
diff --git a/docs/components/imagegenerationusage.mdx b/docs/components/imagegenerationusage.mdx
index be9fe8f..cb01cf3 100644
--- a/docs/components/imagegenerationusage.mdx
+++ b/docs/components/imagegenerationusage.mdx
@@ -9,6 +9,7 @@ Token and cost usage for the image generation request, when available
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| `cache_creation` | [OptionalNullable[components.AnthropicCacheCreation]](../components/anthropiccachecreation.mdx) | :heavy_minus_sign: | N/A | \{
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 100
} |
| `completion_tokens` | *int* | :heavy_check_mark: | The tokens generated | |
| `completion_tokens_details` | [OptionalNullable[components.ImageGenerationUsageCompletionTokensDetails]](../components/imagegenerationusagecompletiontokensdetails.mdx) | :heavy_minus_sign: | N/A | |
| `cost` | *OptionalNullable[float]* | :heavy_minus_sign: | Cost of the completion | |
diff --git a/pyproject.toml b/pyproject.toml
index feee6a6..38e011e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "0.11.27"
+version = "0.11.28"
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 d00a5fa..fb15497 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "0.11.27"
+__version__: str = "0.11.28"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 0.11.27 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 0.11.28 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/components/__init__.py b/src/openrouter/components/__init__.py
index 92d0e11..bf5e3e9 100644
--- a/src/openrouter/components/__init__.py
+++ b/src/openrouter/components/__init__.py
@@ -80,6 +80,10 @@
AnthropicCacheControlDirectiveTypedDict,
)
from .anthropiccachecontrolttl import AnthropicCacheControlTTL
+ from .anthropiccachecreation import (
+ AnthropicCacheCreation,
+ AnthropicCacheCreationTypedDict,
+ )
from .anthropiccitationcharlocationparam import (
AnthropicCitationCharLocationParam,
AnthropicCitationCharLocationParamType,
@@ -2895,6 +2899,8 @@
"AnthropicCacheControlDirectiveType",
"AnthropicCacheControlDirectiveTypedDict",
"AnthropicCacheControlTTL",
+ "AnthropicCacheCreation",
+ "AnthropicCacheCreationTypedDict",
"AnthropicCitationCharLocationParam",
"AnthropicCitationCharLocationParamType",
"AnthropicCitationCharLocationParamTypedDict",
@@ -4960,6 +4966,8 @@
"AnthropicCacheControlDirectiveType": ".anthropiccachecontroldirective",
"AnthropicCacheControlDirectiveTypedDict": ".anthropiccachecontroldirective",
"AnthropicCacheControlTTL": ".anthropiccachecontrolttl",
+ "AnthropicCacheCreation": ".anthropiccachecreation",
+ "AnthropicCacheCreationTypedDict": ".anthropiccachecreation",
"AnthropicCitationCharLocationParam": ".anthropiccitationcharlocationparam",
"AnthropicCitationCharLocationParamType": ".anthropiccitationcharlocationparam",
"AnthropicCitationCharLocationParamTypedDict": ".anthropiccitationcharlocationparam",
diff --git a/src/openrouter/components/anthropiccachecreation.py b/src/openrouter/components/anthropiccachecreation.py
new file mode 100644
index 0000000..b08b10c
--- /dev/null
+++ b/src/openrouter/components/anthropiccachecreation.py
@@ -0,0 +1,16 @@
+"""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 AnthropicCacheCreationTypedDict(TypedDict):
+ ephemeral_1h_input_tokens: int
+ ephemeral_5m_input_tokens: int
+
+
+class AnthropicCacheCreation(BaseModel):
+ ephemeral_1h_input_tokens: int
+
+ ephemeral_5m_input_tokens: int
diff --git a/src/openrouter/components/imagegenerationusage.py b/src/openrouter/components/imagegenerationusage.py
index 83ae9b1..089d12e 100644
--- a/src/openrouter/components/imagegenerationusage.py
+++ b/src/openrouter/components/imagegenerationusage.py
@@ -1,6 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
+from .anthropiccachecreation import (
+ AnthropicCacheCreation,
+ AnthropicCacheCreationTypedDict,
+)
from .anthropicspeed import AnthropicSpeed
from .anthropicusageiteration import (
AnthropicUsageIteration,
@@ -201,6 +205,7 @@ class ImageGenerationUsageTypedDict(TypedDict):
r"""Including images, input audio, and tools if any"""
total_tokens: int
r"""Sum of the above two fields"""
+ cache_creation: NotRequired[Nullable[AnthropicCacheCreationTypedDict]]
completion_tokens_details: NotRequired[
Nullable[ImageGenerationUsageCompletionTokensDetailsTypedDict]
]
@@ -234,6 +239,8 @@ class ImageGenerationUsage(BaseModel):
total_tokens: int
r"""Sum of the above two fields"""
+ cache_creation: OptionalNullable[AnthropicCacheCreation] = UNSET
+
completion_tokens_details: OptionalNullable[
ImageGenerationUsageCompletionTokensDetails
] = UNSET
@@ -266,6 +273,7 @@ class ImageGenerationUsage(BaseModel):
def serialize_model(self, handler):
optional_fields = set(
[
+ "cache_creation",
"completion_tokens_details",
"cost",
"cost_details",
@@ -279,6 +287,7 @@ def serialize_model(self, handler):
)
nullable_fields = set(
[
+ "cache_creation",
"completion_tokens_details",
"cost",
"cost_details",
diff --git a/uv.lock b/uv.lock
index b0cfa15..0c59b75 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "0.11.27"
+version = "0.11.28"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },