Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 92 additions & 39 deletions .speakeasy/gen.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .speakeasy/gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
version: 0.11.16
version: 0.11.17
additionalDependencies:
dev: {}
main: {}
Expand Down
142 changes: 139 additions & 3 deletions .speakeasy/out.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4047,7 +4047,7 @@ components:
- recraft
- reka
- relace
- sakana-ai
- sakana
- sambanova
- seed
- siliconflow
Expand Down Expand Up @@ -18440,7 +18440,7 @@ components:
additionalProperties:
nullable: true
type: object
sakana-ai:
sakana:
additionalProperties:
nullable: true
type: object
Expand Down Expand Up @@ -21121,6 +21121,59 @@ components:
$ref: '#/components/schemas/SubagentNestedTool'
type: array
type: object
SubmitGenerationFeedbackRequest:
description: Structured feedback about a specific generation
example:
category: incorrect_response
comment: The model repeated the same paragraph three times.
generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
properties:
category:
description: The category of feedback being reported
enum:
- latency
- incoherence
- incorrect_response
- formatting
- billing
- api_error
- other
example: incorrect_response
type: string
x-speakeasy-unknown-values: allow
comment:
description: An optional free-text comment describing the feedback
example: The model repeated the same paragraph three times.
maxLength: 1000
type: string
generation_id:
description: The generation to submit feedback on
example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
minLength: 1
type: string
required:
- generation_id
- category
type: object
SubmitGenerationFeedbackResponse:
description: Confirmation that the feedback was recorded
example:
data:
success: true
properties:
data:
properties:
success:
const: true
description: Whether the feedback was recorded
example: true
type: boolean
required:
- success
type: object
required:
- data
type: object
SupportedParameters:
additionalProperties:
$ref: '#/components/schemas/CapabilityDescriptor'
Expand Down Expand Up @@ -24710,7 +24763,7 @@ paths:
- recraft
- reka
- relace
- sakana-ai
- sakana
- sambanova
- seed
- siliconflow
Expand Down Expand Up @@ -27262,6 +27315,89 @@ paths:
- $ref: "#/components/parameters/AppIdentifier"
- $ref: "#/components/parameters/AppDisplayName"
- $ref: "#/components/parameters/AppCategories"
/generation/feedback:
post:
description: >-
Submit structured feedback on a generation the authenticated user made. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: submitGenerationFeedback
requestBody:
content:
application/json:
example:
category: incorrect_response
comment: The model repeated the same paragraph three times.
generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
schema:
$ref: '#/components/schemas/SubmitGenerationFeedbackRequest'
required: true
responses:
'200':
content:
application/json:
example:
data:
success: true
schema:
$ref: '#/components/schemas/SubmitGenerationFeedbackResponse'
description: Feedback recorded successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Submit feedback for a generation
tags:
- Generations
x-speakeasy-name-override: submitFeedback
parameters:
- $ref: "#/components/parameters/AppIdentifier"
- $ref: "#/components/parameters/AppDisplayName"
- $ref: "#/components/parameters/AppCategories"
/guardrails:
get:
description: >-
Expand Down
10 changes: 5 additions & 5 deletions .speakeasy/workflow.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ speakeasyVersion: 1.787.0
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:daca20db09d6cfb4b50c5e6bf7d8f5cbadae39021bd5cb9c856d71b4e6f9c192
sourceBlobDigest: sha256:0834507d142ac7906f4ca76b874a2b49bd5709b782a420377f3cf4349552a445
sourceRevisionDigest: sha256:99649ad73bd44656a11c0f47bf5b52ff056911ce5543fdd487b1c7d835d4d01e
sourceBlobDigest: sha256:fb03e6ac1679e81970afc16a019748cc195bb2881a09f0e5dc0ae18934621701
tags:
- latest
- 1.0.0
targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:daca20db09d6cfb4b50c5e6bf7d8f5cbadae39021bd5cb9c856d71b4e6f9c192
sourceBlobDigest: sha256:0834507d142ac7906f4ca76b874a2b49bd5709b782a420377f3cf4349552a445
sourceRevisionDigest: sha256:99649ad73bd44656a11c0f47bf5b52ff056911ce5543fdd487b1c7d835d4d01e
sourceBlobDigest: sha256:fb03e6ac1679e81970afc16a019748cc195bb2881a09f0e5dc0ae18934621701
codeSamplesNamespace: open-router-python-code-samples
codeSamplesRevisionDigest: sha256:d7c4a0cd51e67e5c63e2540958b5a5df3406fbbe723c58338a51e48feb9ddae2
codeSamplesRevisionDigest: sha256:a6459b61a352d9d8512b16c634606461a35e4275e373904dec9cd85e245db64b
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
Expand Down
12 changes: 11 additions & 1 deletion RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,4 +268,14 @@ Based on:
### Generated
- [python v0.11.16] .
### Releases
- [PyPI v0.11.16] https://pypi.org/project/openrouter/0.11.16 - .
- [PyPI v0.11.16] https://pypi.org/project/openrouter/0.11.16 - .

## 2026-07-09 21:34:56
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [python v0.11.17] .
### Releases
- [PyPI v0.11.17] https://pypi.org/project/openrouter/0.11.17 - .
2 changes: 1 addition & 1 deletion docs/components/byokproviderslug.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ This is an open enum. Unrecognized values will not fail type checks.
- `"recraft"`
- `"reka"`
- `"relace"`
- `"sakana-ai"`
- `"sakana"`
- `"sambanova"`
- `"seed"`
- `"siliconflow"`
Expand Down
27 changes: 27 additions & 0 deletions docs/components/category.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: "Category"
---

The category of feedback being reported

## Example Usage

```python
from openrouter.components import Category

# Open enum: unrecognized values are captured as UnrecognizedStr
value: Category = "latency"
```


## Values

This is an open enum. Unrecognized values will not fail type checks.

- `"latency"`
- `"incoherence"`
- `"incorrect_response"`
- `"formatting"`
- `"billing"`
- `"api_error"`
- `"other"`
2 changes: 1 addition & 1 deletion docs/components/imagegenerationrequestoptions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Provider-specific options keyed by provider slug. Only options for the matched p
| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
Expand Down
2 changes: 1 addition & 1 deletion docs/components/provideroptions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Provider-specific options keyed by provider slug. Only options for the matched p
| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
Expand Down
14 changes: 14 additions & 0 deletions docs/components/submitgenerationfeedbackrequest.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: "SubmitGenerationFeedbackRequest"
---

Structured feedback about a specific generation


## Fields

| Field | Type | Required | Description | Example |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `category` | [components.Category](../components/category.mdx) | :heavy_check_mark: | The category of feedback being reported | incorrect_response |
| `comment` | *Optional[str]* | :heavy_minus_sign: | An optional free-text comment describing the feedback | The model repeated the same paragraph three times. |
| `generation_id` | *str* | :heavy_check_mark: | The generation to submit feedback on | gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG |
12 changes: 12 additions & 0 deletions docs/components/submitgenerationfeedbackresponse.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: "SubmitGenerationFeedbackResponse"
---

Confirmation that the feedback was recorded


## Fields

| Field | Type | Required | Description |
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `data` | [components.SubmitGenerationFeedbackResponseData](../components/submitgenerationfeedbackresponsedata.mdx) | :heavy_check_mark: | N/A |
9 changes: 9 additions & 0 deletions docs/components/submitgenerationfeedbackresponsedata.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "SubmitGenerationFeedbackResponseData"
---

## Fields

| Field | Type | Required | Description | Example |
| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- |
| `success` | *Literal[True]* | :heavy_check_mark: | Whether the feedback was recorded | true |
2 changes: 1 addition & 1 deletion docs/components/videogenerationrequestoptions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Provider-specific options keyed by provider slug. Only options for the matched p
| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sakana` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A |
Expand Down
2 changes: 1 addition & 1 deletion docs/operations/provider.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ This is an open enum. Unrecognized values will not fail type checks.
- `"recraft"`
- `"reka"`
- `"relace"`
- `"sakana-ai"`
- `"sakana"`
- `"sambanova"`
- `"seed"`
- `"siliconflow"`
Expand Down
11 changes: 11 additions & 0 deletions docs/operations/submitgenerationfeedbackglobals.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: "SubmitGenerationFeedbackGlobals"
---

## Fields

| Field | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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.<br/>This is used to track API usage per application.<br/> |
| `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.<br/> |
| `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.<br/> |
Loading
Loading