From d28d1bac4924b4004162d2bcd85e27a7530a8a24 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Tue, 3 Nov 2026 17:27:04 +0000 Subject: [PATCH 1/2] ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.803.2 --- .speakeasy/gen.lock | 56 +++++++++---------- .speakeasy/gen.yaml | 2 +- .speakeasy/out.openapi.yaml | 7 ++- .speakeasy/workflow.lock | 10 ++-- RELEASES.md | 12 +++- docs/components/decisionsboxquestion.mdx | 11 ++-- .../decisionsboxquestioninstructions.mdx | 2 +- docs/components/decisionsrequest.mdx | 20 +++---- docs/sdks/decisions/README.mdx | 32 +++++------ docs/sdks/systemone/README.mdx | 28 +++++----- pyproject.toml | 2 +- src/openrouter/_version.py | 4 +- .../components/decisionsboxquestion.py | 12 ++-- src/openrouter/components/decisionsrequest.py | 4 +- src/openrouter/decisions.py | 8 +-- src/openrouter/systemone.py | 4 +- uv.lock | 2 +- 17 files changed, 117 insertions(+), 99 deletions(-) diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index f1e0c90c..a4e5baea 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: a8933bcde648907382ef0ce09e2a7c2f + docChecksum: 75d2176b967cf7c8ef51265001f82905 docVersion: 1.0.0 speakeasyVersion: 1.803.2 generationVersion: 2.950.13 - releaseVersion: 1.3.107 - configChecksum: 535cc49f91d6296774b46803641ee82e + releaseVersion: 1.3.108 + configChecksum: 1255ea613c81e43e0b647f6f3164540c repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: 20f410ec-e380-4136-b499-fb0ca5e63162 - pristine_commit_hash: 744c6ff658fb43a36dce4713fb02707355f844f1 - pristine_tree_hash: b9394b510a5a41fe583e310b16f1284104131808 + generation_id: 26908807-a572-4057-bc56-1421dd809c29 + pristine_commit_hash: e6864bd23f73281a2bb40fea50855f4c944170ef + pristine_tree_hash: 3ff7066030dd4c6387079cd59f874a957d2898a7 features: python: acceptHeaders: 3.0.0 @@ -2884,12 +2884,12 @@ trackedFiles: pristine_git_object: f8ee5fe37dd3f38add083239af2ad81d55b72609 docs/components/decisionsboxquestion.mdx: id: 9f587817bba9 - last_write_checksum: sha1:e9c77bb8afd91aa5e3b5d0c7e2af78b3c6d7e87b - pristine_git_object: f87bc2cf12a3100cd0e7a1d0c9da9e42c96fbb1c + last_write_checksum: sha1:e5d57f9c8b0e692d7bdd5f1141a73edf9bc35224 + pristine_git_object: ecad8f532521a3009c603cdfae4f4803b34c3533 docs/components/decisionsboxquestioninstructions.mdx: id: 0bcad7c550b9 - last_write_checksum: sha1:4e5d7bafce0a322a279b3c00d11c02429ef37fee - pristine_git_object: 378399c6c5316c2e35d1519476b74a155080ad01 + last_write_checksum: sha1:92b7b3aba8ddafba28f82620c2c0e74de6181975 + pristine_git_object: 6f831ed7438d3d707332df08f5a459862274683f docs/components/decisionsboxquestiontype.mdx: id: d298c864bb79 last_write_checksum: sha1:cdbcc2a7397404f51a7a9cbf25f2029db19bd2fd @@ -2952,8 +2952,8 @@ trackedFiles: pristine_git_object: 66d2e59cbdc4c920b5be4970c130b11a737d53cd docs/components/decisionsrequest.mdx: id: "910490840961" - last_write_checksum: sha1:796b6a29e54a45596ab89e446b7354edca0f7c3f - pristine_git_object: 66c77147a8e3e171803119890707e8a6c82c1874 + last_write_checksum: sha1:b28a14b1e588f2ad987f21cf4fc966554e4622fc + pristine_git_object: c0deb3a1bbf5d2d4347993ccf40cbcb38e85a734 docs/components/decisionsresponse.mdx: id: 5c77b727e5dc last_write_checksum: sha1:018dc1dfbaefe2589a3f89b0baf65e9946ec29e7 @@ -10644,8 +10644,8 @@ trackedFiles: pristine_git_object: d7053e23a20783c645d8db2835a7e62683352290 docs/sdks/decisions/README.mdx: id: a52a116ee1f3 - last_write_checksum: sha1:7422788326ce9e4e80f4beb1050d8c98eda4c94a - pristine_git_object: 100ec2f4aa6f4ebbddae19683f9f117170157d44 + last_write_checksum: sha1:c1188a34e4a1b99f0874805dd94b2cd9fe718133 + pristine_git_object: 50e4e3a83477e3cafbb38ee7d5865185baf4e459 docs/sdks/embeddings/README.mdx: id: cd71581df291 last_write_checksum: sha1:67640eac4a149bf213063aae2252b66ead195452 @@ -10728,8 +10728,8 @@ trackedFiles: pristine_git_object: 5ed45eda77a20a236f1e6dfe4ab39fde2579e320 docs/sdks/systemone/README.mdx: id: 55c317c71f3d - last_write_checksum: sha1:270257aacce3efd612ac3a52233335221ea833cb - pristine_git_object: 97af3d6149b3c54521433ea3363e2c74002977f1 + last_write_checksum: sha1:b2c7fa64183a73b951c0c05ca68156bee092c2b4 + pristine_git_object: 14711da31a9bc1102656ad4c6bce65ed96c1378c docs/sdks/tools/README.mdx: id: 32d2a83beeba last_write_checksum: sha1:841daaf792e80b73be4f93c572bc835d0cea5af7 @@ -10756,8 +10756,8 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:6fd39ef03c3c2b2cfd84134d7fa68d34956d9900 - pristine_git_object: 41d21188deaca9a5820c1656f327f02dbbb7f633 + last_write_checksum: sha1:0edb95a4d7484f44c760060b52daf70b43430da5 + pristine_git_object: a11b23d547dce611245ed7e44e3e69c1ac3b3aaf scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -10784,8 +10784,8 @@ trackedFiles: pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:672e2d2e3f823ba1f1cfe62178e36edfc3039895 - pristine_git_object: 92dfe45d661d44093e8758fc084a5e289fc612c7 + last_write_checksum: sha1:ab5828d0603ad2ebe37cb0de54f1f8d2d814344b + pristine_git_object: 80b53b81819816feb1a8cb6211cdd9ce366b13bb src/openrouter/alpha.py: id: 306c4d93308d last_write_checksum: sha1:80cc0f39649445431cc2247ed0e0765438467766 @@ -12044,8 +12044,8 @@ trackedFiles: pristine_git_object: 033cb3533e3fc0f1dfdd5ec25ac9fc50f811a0df src/openrouter/components/decisionsboxquestion.py: id: 1fa3ffdda918 - last_write_checksum: sha1:ada2c9d8a20f8e0177aa00639c18922766171ad0 - pristine_git_object: d667828ec2477ea91730faeab47c38d88f1d4ed4 + last_write_checksum: sha1:d9aefc06d036cd5b86a6d9ca1c1c88f3ee4da35e + pristine_git_object: 8d80b13c353c834938d892c90a349860e9b3babc src/openrouter/components/decisionschoiceanswer.py: id: 53a9e8cdf870 last_write_checksum: sha1:16380c24282a8d275d96bed268bf5d6410b56f43 @@ -12068,8 +12068,8 @@ trackedFiles: pristine_git_object: d6b2551a31bc9c7d8e2ed96913c097dc127c8311 src/openrouter/components/decisionsrequest.py: id: 5df43fede21b - last_write_checksum: sha1:46b8167bf44beea9de6909897d22f2d6249f7855 - pristine_git_object: 1a44020b9512f2bcbc275bc0cd73cbbb7f90de40 + last_write_checksum: sha1:93d08cdb310264d400123ee9924f27b4502a6f30 + pristine_git_object: c3f32b631b40f5eca0a0b3c71c2fd543058cf52a src/openrouter/components/decisionsresponse.py: id: b91b81c2cf95 last_write_checksum: sha1:66617d3c417a5de7674773ffda05044d373f1580 @@ -14400,8 +14400,8 @@ trackedFiles: pristine_git_object: 0532cef994643793368c4484b8af0d247be2692e src/openrouter/decisions.py: id: 811fe0f48b6e - last_write_checksum: sha1:85ca5402449084675009afe9296f902221357377 - pristine_git_object: 6ab33a4b9921c8ead43b8efda7af042e346fcd42 + last_write_checksum: sha1:594ed5008eb5723d7bd48a880c0c1b96496bc32e + pristine_git_object: e88ffd29986fd89819b728eecc17e028877da883 src/openrouter/embeddings.py: id: 0374ace39067 last_write_checksum: sha1:3c45cacab1080f90f0a01e4923fd3bc5c8e9c281 @@ -15208,8 +15208,8 @@ trackedFiles: pristine_git_object: 9787a43efe6fbf7233ffcc14a340a29663e61a01 src/openrouter/systemone.py: id: 7e0a0e237bb1 - last_write_checksum: sha1:aa94b96b038c5c44bb9867260b3adfc587e131c5 - pristine_git_object: 04719c694c972bd3c36b3870832badc7eca71cc8 + last_write_checksum: sha1:550af693684424feec5e4f8e044f8243b74daeb0 + pristine_git_object: 50a3d74c55123938b2a6f6f788759637d578f58a src/openrouter/tools.py: id: acb8a24e2c5b last_write_checksum: sha1:7a06c5fa2d5b142bf137818db076c01e3c177e18 diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 678e067a..1068aabe 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -37,7 +37,7 @@ generation: documentation: mintlify preApplyUnionDiscriminators: true python: - version: 1.3.107 + version: 1.3.108 additionalDependencies: dev: pytest: '>=8.3' diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 195970b8..6e5ba1d8 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -11059,6 +11059,7 @@ components: - 'box' type: 'object' DecisionsBoxQuestion: + description: 'Finds one target in an image in `state` and answers with one bounding box (`top`, `bottom`, `left`, `right` as fractions of the image). Served by TypeSafe Jev endpoints only; every other provider rejects a box question with `400` before anything is sent upstream.' properties: instructions: anyOf: @@ -11067,7 +11068,7 @@ components: type: 'object' - items: {} type: 'array' - description: 'A plain string, or a JSON object or array of structured guidance.' + description: 'A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`.' type: enum: - 'box' @@ -11207,7 +11208,7 @@ components: assets: additionalProperties: $ref: '#/components/schemas/DecisionsImageAsset' - description: 'Images keyed by reference string, as in TypeSafe''s API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text.' + description: 'Images keyed by reference string, as in TypeSafe''s API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request.' type: 'object' model: type: 'string' @@ -36764,7 +36765,7 @@ paths: - $ref: "#/components/parameters/AppCategories" /api/alpha/decisions: post: - description: 'Submits a Decisions request to the Decisions router' + description: 'Asks a Decisions model typed questions (`noul`, `choice`, `score`, `box`) about the content in `state` and returns one typed answer per question with its probabilities. Images, audio and video go in `state` as `image_url`, `input_audio` and `video_url` parts; PNG and JPEG images can instead go once in `assets` and be referenced by key. Which question types, media parts and asset references an endpoint accepts depends on the provider; a request an endpoint cannot serve fails with `400` before anything is sent upstream. See the [Multimodal Decisions guide](/docs/guides/community/multimodal-decisions) for the per-provider table. Alpha: the shape may change.' operationId: 'createApiAlphaDecisions' requestBody: content: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index ac0fe42a..1b6df5c7 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.803.2 sources: OpenRouter API: sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:f393788df75404da673ee77363cc800f039e6baa79f92daf67725ed0d4de3347 - sourceBlobDigest: sha256:a5d21635dad5ed9fbd31e4b931a61535abc54fd4d804b58fcc671f5733963b5d + sourceRevisionDigest: sha256:e31e32973cbe7f00bfb41ae6f350d08e98f033c47156ff72d5708a44a5e7a59f + sourceBlobDigest: sha256:374afbb38e1b6cf3ea1ec32581585b39442976d6afb38ecbf2c465e64dd4f6c0 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:f393788df75404da673ee77363cc800f039e6baa79f92daf67725ed0d4de3347 - sourceBlobDigest: sha256:a5d21635dad5ed9fbd31e4b931a61535abc54fd4d804b58fcc671f5733963b5d + sourceRevisionDigest: sha256:e31e32973cbe7f00bfb41ae6f350d08e98f033c47156ff72d5708a44a5e7a59f + sourceBlobDigest: sha256:374afbb38e1b6cf3ea1ec32581585b39442976d6afb38ecbf2c465e64dd4f6c0 codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:718f57f56d4b9bda735d469c14e4c9f628c005ef3277ec69b7c07c17485711ff + codeSamplesRevisionDigest: sha256:3fa5cbfae98cb5646204c42dd5b6a1aeb812070636d85d36d8f6cde63b5f9cf4 workflow: workflowVersion: 1.0.0 speakeasyVersion: 1.803.2 diff --git a/RELEASES.md b/RELEASES.md index 2c9cfdc1..0783049c 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -3839,4 +3839,14 @@ Based on: ### Generated - [python v1.3.107] . ### Releases -- [PyPI v1.3.107] https://pypi.org/project/openrouter/1.3.107 - . \ No newline at end of file +- [PyPI v1.3.107] https://pypi.org/project/openrouter/1.3.107 - . + +## 2026-11-03 17:23:56 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.803.2 (2.950.13) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.3.108] . +### Releases +- [PyPI v1.3.108] https://pypi.org/project/openrouter/1.3.108 - . \ No newline at end of file diff --git a/docs/components/decisionsboxquestion.mdx b/docs/components/decisionsboxquestion.mdx index f87bc2cf..ecad8f53 100644 --- a/docs/components/decisionsboxquestion.mdx +++ b/docs/components/decisionsboxquestion.mdx @@ -2,9 +2,12 @@ title: "DecisionsBoxQuestion" --- +Finds one target in an image in `state` and answers with one bounding box (`top`, `bottom`, `left`, `right` as fractions of the image). Served by TypeSafe Jev endpoints only; every other provider rejects a box question with `400` before anything is sent upstream. + + ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `instructions` | [components.DecisionsBoxQuestionInstructions](../components/decisionsboxquestioninstructions.mdx) | ✔️ | A plain string, or a JSON object or array of structured guidance. | -| `type` | [components.DecisionsBoxQuestionType](../components/decisionsboxquestiontype.mdx) | ✔️ | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `instructions` | [components.DecisionsBoxQuestionInstructions](../components/decisionsboxquestioninstructions.mdx) | ✔️ | A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`. | +| `type` | [components.DecisionsBoxQuestionType](../components/decisionsboxquestiontype.mdx) | ✔️ | N/A | \ No newline at end of file diff --git a/docs/components/decisionsboxquestioninstructions.mdx b/docs/components/decisionsboxquestioninstructions.mdx index 378399c6..6f831ed7 100644 --- a/docs/components/decisionsboxquestioninstructions.mdx +++ b/docs/components/decisionsboxquestioninstructions.mdx @@ -2,7 +2,7 @@ title: "DecisionsBoxQuestionInstructions" --- -A plain string, or a JSON object or array of structured guidance. +A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`. ## Supported Types diff --git a/docs/components/decisionsrequest.mdx b/docs/components/decisionsrequest.mdx index 66c77147..c0deb3a1 100644 --- a/docs/components/decisionsrequest.mdx +++ b/docs/components/decisionsrequest.mdx @@ -4,13 +4,13 @@ title: "DecisionsRequest" ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `assets` | Dict[str, [components.DecisionsImageAsset](../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. | | -| `model` | *str* | ✔️ | N/A | | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | -| `questions` | Dict[str, [components.Questions](../components/questions.mdx)] | ✔️ | N/A | | -| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | -| `state` | [components.State](../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | -| `trace` | [Optional[components.TraceConfig]](../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | -| `user` | *Optional[str]* | ➖ | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `assets` | Dict[str, [components.DecisionsImageAsset](../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. | | +| `model` | *str* | ✔️ | N/A | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | +| `questions` | Dict[str, [components.Questions](../components/questions.mdx)] | ✔️ | N/A | | +| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | +| `state` | [components.State](../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | +| `trace` | [Optional[components.TraceConfig]](../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | ➖ | N/A | | \ No newline at end of file diff --git a/docs/sdks/decisions/README.mdx b/docs/sdks/decisions/README.mdx index 100ec2f4..50e4e3a8 100644 --- a/docs/sdks/decisions/README.mdx +++ b/docs/sdks/decisions/README.mdx @@ -13,7 +13,7 @@ Alpha feature endpoints for Decisions requests ## create -Submits a Decisions request to the Decisions router +Asks a Decisions model typed questions (`noul`, `choice`, `score`, `box`) about the content in `state` and returns one typed answer per question with its probabilities. Images, audio and video go in `state` as `image_url`, `input_audio` and `video_url` parts; PNG and JPEG images can instead go once in `assets` and be referenced by key. Which question types, media parts and asset references an endpoint accepts depends on the provider; a request an endpoint cannot serve fails with `400` before anything is sent upstream. See the [Multimodal Decisions guide](/docs/guides/community/multimodal-decisions) for the per-provider table. Alpha: the shape may change. ### Example Usage @@ -68,21 +68,21 @@ with OpenRouter( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | *str* | ✔️ | N/A | | -| `questions` | Dict[str, [components.Questions](../../components/questions.mdx)] | ✔️ | N/A | | -| `state` | [components.State](../../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | -| `http_referer` | *Optional[str]* | ➖ | 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]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | -| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `assets` | Dict[str, [components.DecisionsImageAsset](../../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. | | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | -| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | -| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | -| `user` | *Optional[str]* | ➖ | N/A | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | ➖ | Configuration to override the default retry behavior of the client. | | -| `server_url` | *Optional[str]* | ➖ | An optional server URL to use. | http://localhost:8080 | +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | *str* | ✔️ | N/A | | +| `questions` | Dict[str, [components.Questions](../../components/questions.mdx)] | ✔️ | N/A | | +| `state` | [components.State](../../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | +| `http_referer` | *Optional[str]* | ➖ | 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]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `assets` | Dict[str, [components.DecisionsImageAsset](../../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | +| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | ➖ | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | ➖ | Configuration to override the default retry behavior of the client. | | +| `server_url` | *Optional[str]* | ➖ | An optional server URL to use. | http://localhost:8080 | ### Response diff --git a/docs/sdks/systemone/README.mdx b/docs/sdks/systemone/README.mdx index 97af3d61..14711da3 100644 --- a/docs/sdks/systemone/README.mdx +++ b/docs/sdks/systemone/README.mdx @@ -68,20 +68,20 @@ with OpenRouter( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | *str* | ✔️ | N/A | | -| `questions` | Dict[str, [components.Questions](../../components/questions.mdx)] | ✔️ | N/A | | -| `state` | [components.State](../../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | -| `http_referer` | *Optional[str]* | ➖ | 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]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | -| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `assets` | Dict[str, [components.DecisionsImageAsset](../../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. | | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | -| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | -| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | -| `user` | *Optional[str]* | ➖ | N/A | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | ➖ | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | *str* | ✔️ | N/A | | +| `questions` | Dict[str, [components.Questions](../../components/questions.mdx)] | ✔️ | N/A | | +| `state` | [components.State](../../components/state.mdx) | ✔️ | The content to evaluate: a plain string, or a JSON object or array of related context. | | +| `http_referer` | *Optional[str]* | ➖ | 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]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `assets` | Dict[str, [components.DecisionsImageAsset](../../components/decisionsimageasset.mdx)] | ➖ | Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | ➖ | N/A | \{
"allow_fallbacks": true
} | +| `session_id` | *Optional[str]* | ➖ | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | session-1234 | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | ➖ | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | ➖ | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | ➖ | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/pyproject.toml b/pyproject.toml index 41d21188..a11b23d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrouter" -version = "1.3.107" +version = "1.3.108" 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 92dfe45d..80b53b81 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.107" +__version__: str = "1.3.108" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.950.13" -__user_agent__: str = "speakeasy-sdk/python 1.3.107 2.950.13 1.0.0 openrouter" +__user_agent__: str = "speakeasy-sdk/python 1.3.108 2.950.13 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/components/decisionsboxquestion.py b/src/openrouter/components/decisionsboxquestion.py index d667828e..8d80b13c 100644 --- a/src/openrouter/components/decisionsboxquestion.py +++ b/src/openrouter/components/decisionsboxquestion.py @@ -9,26 +9,30 @@ DecisionsBoxQuestionInstructionsTypedDict = TypeAliasType( "DecisionsBoxQuestionInstructionsTypedDict", Union[str, Dict[str, Any], List[Any]] ) -r"""A plain string, or a JSON object or array of structured guidance.""" +r"""A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`.""" DecisionsBoxQuestionInstructions = TypeAliasType( "DecisionsBoxQuestionInstructions", Union[str, Dict[str, Any], List[Any]] ) -r"""A plain string, or a JSON object or array of structured guidance.""" +r"""A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`.""" DecisionsBoxQuestionType = Literal["box",] class DecisionsBoxQuestionTypedDict(TypedDict): + r"""Finds one target in an image in `state` and answers with one bounding box (`top`, `bottom`, `left`, `right` as fractions of the image). Served by TypeSafe Jev endpoints only; every other provider rejects a box question with `400` before anything is sent upstream.""" + instructions: DecisionsBoxQuestionInstructionsTypedDict - r"""A plain string, or a JSON object or array of structured guidance.""" + r"""A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`.""" type: DecisionsBoxQuestionType class DecisionsBoxQuestion(BaseModel): + r"""Finds one target in an image in `state` and answers with one bounding box (`top`, `bottom`, `left`, `right` as fractions of the image). Served by TypeSafe Jev endpoints only; every other provider rejects a box question with `400` before anything is sent upstream.""" + instructions: DecisionsBoxQuestionInstructions - r"""A plain string, or a JSON object or array of structured guidance.""" + r"""A description of the target to find, naming the image in `state` it is in; not a command, and no `criteria`.""" type: DecisionsBoxQuestionType diff --git a/src/openrouter/components/decisionsrequest.py b/src/openrouter/components/decisionsrequest.py index 1a44020b..c3f32b63 100644 --- a/src/openrouter/components/decisionsrequest.py +++ b/src/openrouter/components/decisionsrequest.py @@ -65,7 +65,7 @@ class DecisionsRequestTypedDict(TypedDict): state: StateTypedDict r"""The content to evaluate: a plain string, or a JSON object or array of related context.""" assets: NotRequired[Dict[str, DecisionsImageAssetTypedDict]] - r"""Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text.""" + r"""Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request.""" provider: NotRequired[Nullable[ProviderPreferencesTypedDict]] session_id: NotRequired[str] r"""A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters.""" @@ -83,7 +83,7 @@ class DecisionsRequest(BaseModel): r"""The content to evaluate: a plain string, or a JSON object or array of related context.""" assets: Optional[Dict[str, DecisionsImageAsset]] = None - r"""Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text.""" + r"""Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request.""" provider: OptionalNullable[ProviderPreferences] = UNSET diff --git a/src/openrouter/decisions.py b/src/openrouter/decisions.py index 6ab33a4b..e88ffd29 100644 --- a/src/openrouter/decisions.py +++ b/src/openrouter/decisions.py @@ -47,7 +47,7 @@ def create( ) -> components.DecisionsResponse: r"""Submit a Decisions request - Submits a Decisions request to the Decisions router + Asks a Decisions model typed questions (`noul`, `choice`, `score`, `box`) about the content in `state` and returns one typed answer per question with its probabilities. Images, audio and video go in `state` as `image_url`, `input_audio` and `video_url` parts; PNG and JPEG images can instead go once in `assets` and be referenced by key. Which question types, media parts and asset references an endpoint accepts depends on the provider; a request an endpoint cannot serve fails with `400` before anything is sent upstream. See the [Multimodal Decisions guide](/docs/guides/community/multimodal-decisions) for the per-provider table. Alpha: the shape may change. :param model: :param questions: @@ -59,7 +59,7 @@ def create( :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. - :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. + :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. :param provider: :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. @@ -270,7 +270,7 @@ async def create_async( ) -> components.DecisionsResponse: r"""Submit a Decisions request - Submits a Decisions request to the Decisions router + Asks a Decisions model typed questions (`noul`, `choice`, `score`, `box`) about the content in `state` and returns one typed answer per question with its probabilities. Images, audio and video go in `state` as `image_url`, `input_audio` and `video_url` parts; PNG and JPEG images can instead go once in `assets` and be referenced by key. Which question types, media parts and asset references an endpoint accepts depends on the provider; a request an endpoint cannot serve fails with `400` before anything is sent upstream. See the [Multimodal Decisions guide](/docs/guides/community/multimodal-decisions) for the per-provider table. Alpha: the shape may change. :param model: :param questions: @@ -282,7 +282,7 @@ async def create_async( :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. - :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. + :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. :param provider: :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. diff --git a/src/openrouter/systemone.py b/src/openrouter/systemone.py index 04719c69..50a3d74c 100644 --- a/src/openrouter/systemone.py +++ b/src/openrouter/systemone.py @@ -59,7 +59,7 @@ def create( :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. - :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. + :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. :param provider: :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. @@ -282,7 +282,7 @@ async def create_async( :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. - :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once. Jev reads a reference as a whole string value or inside longer text. Other Decisions models read a whole-string reference wherever they read an `image_url` part and reject a reference inside longer text. + :param assets: Images keyed by reference string, as in TypeSafe's API. Write a reference wherever the image belongs in `state`, `instructions`, or `criteria`; every asset must be referenced at least once, or the request fails with `400` naming the unused key. TypeSafe Jev endpoints receive `assets` as written and read a reference as a whole string value or inside longer text. Every other provider has each whole-string reference resolved to an `image_url` part before the request is sent, so it is accepted only where that provider reads `image_url` parts (top-level `state` items), and a reference inside longer text fails with `400`. `image_url` parts and `assets` can be mixed in one request. :param provider: :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. diff --git a/uv.lock b/uv.lock index 17d78d1d..08dc54c7 100644 --- a/uv.lock +++ b/uv.lock @@ -231,7 +231,7 @@ wheels = [ [[package]] name = "openrouter" -version = "1.3.107" +version = "1.3.108" source = { editable = "." } dependencies = [ { name = "httpcore" }, From b909a05fa1f08aec0d51d5231555f3cd0785fa3a Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 17:27:16 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow