Files
openrouter-python-sdk-retry…/.speakeasy/out.openapi.yaml
T
2025-12-04 10:46:19 -05:00

8442 lines
263 KiB
YAML

openapi: 3.1.0
info:
title: OpenRouter API
version: 1.0.0
description: OpenAI-compatible Chat Completions and Completions API with additional OpenRouter features
contact:
name: OpenRouter Support
url: https://openrouter.ai/docs
email: support@openrouter.ai
license:
name: MIT
url: https://opensource.org/licenses/MIT
components:
schemas:
OpenAIResponsesResponseStatus:
type: string
enum:
- completed
- incomplete
- in_progress
- failed
- cancelled
- queued
x-speakeasy-unknown-values: allow
FileCitation:
type: object
properties:
type:
type: string
enum:
- file_citation
file_id:
type: string
filename:
type: string
index:
type: number
required:
- type
- file_id
- filename
- index
example:
type: file_citation
file_id: file-abc123
filename: research_paper.pdf
index: 0
URLCitation:
type: object
properties:
type:
type: string
enum:
- url_citation
url:
type: string
title:
type: string
start_index:
type: number
end_index:
type: number
required:
- type
- url
- title
- start_index
- end_index
example:
type: url_citation
start_index: 0
end_index: 42
title: OpenRouter Documentation
url: https://openrouter.ai/docs
FilePath:
type: object
properties:
type:
type: string
enum:
- file_path
file_id:
type: string
index:
type: number
required:
- type
- file_id
- index
example:
type: file_path
file_id: file-xyz789
index: 0
OpenAIResponsesAnnotation:
anyOf:
- $ref: '#/components/schemas/FileCitation'
- $ref: '#/components/schemas/URLCitation'
- $ref: '#/components/schemas/FilePath'
ResponseOutputText:
type: object
properties:
type:
type: string
enum:
- output_text
text:
type: string
annotations:
type: array
items:
$ref: '#/components/schemas/OpenAIResponsesAnnotation'
required:
- type
- text
example:
type: output_text
text: The capital of France is Paris.
annotations:
- type: url_citation
start_index: 0
end_index: 42
title: Paris - Wikipedia
url: https://en.wikipedia.org/wiki/Paris
OpenAIResponsesRefusalContent:
type: object
properties:
type:
type: string
enum:
- refusal
refusal:
type: string
required:
- type
- refusal
example:
type: refusal
refusal: I'm sorry, I cannot assist with that request
OutputMessage:
type: object
properties:
id:
type: string
role:
type: string
enum:
- assistant
type:
type: string
enum:
- message
status:
anyOf:
- type: string
enum:
- completed
- type: string
enum:
- incomplete
- type: string
enum:
- in_progress
content:
type: array
items:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
required:
- id
- role
- type
- content
example:
id: msg-abc123
role: assistant
type: message
status: completed
content:
- type: output_text
text: Hello! How can I help you today?
ResponsesOutputMessage:
allOf:
- $ref: '#/components/schemas/OutputMessage'
- type: object
properties: {}
example:
id: msg-123
type: message
role: assistant
status: completed
content:
- type: output_text
text: Hello! How can I help you?
annotations: []
description: An output message item
ReasoningTextContent:
type: object
properties:
type:
type: string
enum:
- reasoning_text
text:
type: string
required:
- type
- text
example:
type: reasoning_text
text: Let me think step by step about this problem...
ReasoningSummaryText:
type: object
properties:
type:
type: string
enum:
- summary_text
text:
type: string
required:
- type
- text
example:
type: summary_text
text: Analyzed the problem using first principles
OutputItemReasoning:
type: object
properties:
type:
type: string
enum:
- reasoning
id:
type: string
content:
type: array
items:
$ref: '#/components/schemas/ReasoningTextContent'
summary:
type: array
items:
$ref: '#/components/schemas/ReasoningSummaryText'
encrypted_content:
type: string
nullable: true
status:
anyOf:
- type: string
enum:
- completed
- type: string
enum:
- incomplete
- type: string
enum:
- in_progress
required:
- type
- id
- summary
example:
type: reasoning
id: reasoning-abc123
summary:
- type: summary_text
text: Analyzed the problem using first principles
ResponsesOutputItemReasoning:
allOf:
- $ref: '#/components/schemas/OutputItemReasoning'
- type: object
properties: {}
example:
id: reasoning-123
type: reasoning
status: completed
summary:
- type: summary_text
text: Analyzed the problem and found the optimal solution.
content:
- type: reasoning_text
text: First, we analyze the problem...
description: An output item containing reasoning
OutputItemFunctionCall:
type: object
properties:
type:
type: string
enum:
- function_call
id:
type: string
name:
type: string
arguments:
type: string
call_id:
type: string
status:
anyOf:
- type: string
enum:
- completed
- type: string
enum:
- incomplete
- type: string
enum:
- in_progress
required:
- type
- name
- arguments
- call_id
example:
type: function_call
id: call-abc123
name: get_weather
arguments: '{"location":"San Francisco","unit":"celsius"}'
call_id: call-abc123
ResponsesOutputItemFunctionCall:
allOf:
- $ref: '#/components/schemas/OutputItemFunctionCall'
- type: object
properties: {}
example:
type: function_call
id: call-abc123
name: get_weather
arguments: '{"location":"San Francisco","unit":"celsius"}'
call_id: call-abc123
WebSearchStatus:
type: string
enum:
- completed
- searching
- in_progress
- failed
example: completed
x-speakeasy-unknown-values: allow
OutputItemWebSearchCall:
type: object
properties:
type:
type: string
enum:
- web_search_call
id:
type: string
status:
$ref: '#/components/schemas/WebSearchStatus'
required:
- type
- id
- status
example:
type: web_search_call
id: search-abc123
status: completed
ResponsesWebSearchCallOutput:
allOf:
- $ref: '#/components/schemas/OutputItemWebSearchCall'
- type: object
properties: {}
example:
type: web_search_call
id: search-abc123
status: completed
OutputItemFileSearchCall:
type: object
properties:
type:
type: string
enum:
- file_search_call
id:
type: string
queries:
type: array
items:
type: string
status:
$ref: '#/components/schemas/WebSearchStatus'
required:
- type
- id
- queries
- status
example:
type: file_search_call
id: filesearch-abc123
queries:
- machine learning algorithms
- neural networks
status: completed
ResponsesOutputItemFileSearchCall:
allOf:
- $ref: '#/components/schemas/OutputItemFileSearchCall'
- type: object
properties: {}
example:
type: file_search_call
id: filesearch-abc123
queries:
- machine learning algorithms
- neural networks
status: completed
ImageGenerationStatus:
type: string
enum:
- in_progress
- completed
- generating
- failed
example: completed
x-speakeasy-unknown-values: allow
OutputItemImageGenerationCall:
type: object
properties:
type:
type: string
enum:
- image_generation_call
id:
type: string
result:
type: string
nullable: true
default: null
status:
$ref: '#/components/schemas/ImageGenerationStatus'
required:
- type
- id
- status
example:
type: image_generation_call
id: imagegen-abc123
result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
status: completed
ResponsesImageGenerationCall:
allOf:
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
- type: object
properties: {}
example:
type: image_generation_call
id: imagegen-abc123
result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
status: completed
ResponsesOutputItem:
anyOf:
- $ref: '#/components/schemas/ResponsesOutputMessage'
- $ref: '#/components/schemas/ResponsesOutputItemReasoning'
- $ref: '#/components/schemas/ResponsesOutputItemFunctionCall'
- $ref: '#/components/schemas/ResponsesWebSearchCallOutput'
- $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall'
- $ref: '#/components/schemas/ResponsesImageGenerationCall'
description: An output item from the response
example:
id: msg-abc123
role: assistant
type: message
status: completed
content:
- type: output_text
text: Hello! How can I help you today?
ResponsesErrorField:
type: object
nullable: true
properties:
code:
type: string
enum:
- server_error
- rate_limit_exceeded
- invalid_prompt
- vector_store_timeout
- invalid_image
- invalid_image_format
- invalid_base64_image
- invalid_image_url
- image_too_large
- image_too_small
- image_parse_error
- image_content_policy_violation
- invalid_image_mode
- image_file_too_large
- unsupported_image_media_type
- empty_image_file
- failed_to_download_image
- image_file_not_found
x-speakeasy-unknown-values: allow
message:
type: string
required:
- code
- message
description: Error information returned from the API
example:
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
OpenAIResponsesIncompleteDetails:
type: object
nullable: true
properties:
reason:
type: string
enum:
- max_output_tokens
- content_filter
x-speakeasy-unknown-values: allow
OpenAIResponsesUsage:
type: object
properties:
input_tokens:
type: number
input_tokens_details:
type: object
properties:
cached_tokens:
type: number
required:
- cached_tokens
output_tokens:
type: number
output_tokens_details:
type: object
properties:
reasoning_tokens:
type: number
required:
- reasoning_tokens
total_tokens:
type: number
required:
- input_tokens
- input_tokens_details
- output_tokens
- output_tokens_details
- total_tokens
OpenResponsesUsage:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesUsage'
- type: object
properties:
cost:
type: number
nullable: true
description: Cost of the completion
is_byok:
type: boolean
description: Whether a request was made using a Bring Your Own Key configuration
cost_details:
type: object
properties:
upstream_inference_cost:
type: number
nullable: true
upstream_inference_input_cost:
type: number
upstream_inference_output_cost:
type: number
required:
- upstream_inference_input_cost
- upstream_inference_output_cost
description: Token usage information for the response
example:
input_tokens: 10
output_tokens: 25
total_tokens: 35
input_tokens_details:
cached_tokens: 0
output_tokens_details:
reasoning_tokens: 0
cost: 0.0012
cost_details:
upstream_inference_cost: null
upstream_inference_input_cost: 0.0008
upstream_inference_output_cost: 0.0004
ResponseInputText:
type: object
properties:
type:
type: string
enum:
- input_text
text:
type: string
required:
- type
- text
description: Text input content item
example:
type: input_text
text: Hello, how can I help you?
ResponseInputImage:
type: object
properties:
type:
type: string
enum:
- input_image
detail:
type: string
enum:
- auto
- high
- low
x-speakeasy-unknown-values: allow
image_url:
type: string
nullable: true
required:
- type
- detail
description: Image input content item
example:
type: input_image
detail: auto
image_url: https://example.com/image.jpg
ResponseInputFile:
type: object
properties:
type:
type: string
enum:
- input_file
file_id:
type: string
nullable: true
file_data:
type: string
filename:
type: string
file_url:
type: string
required:
- type
description: File input content item
example:
type: input_file
file_id: file-abc123
filename: document.pdf
ResponseInputAudio:
type: object
properties:
type:
type: string
enum:
- input_audio
input_audio:
type: object
properties:
data:
type: string
format:
type: string
enum:
- mp3
- wav
x-speakeasy-unknown-values: allow
required:
- data
- format
required:
- type
- input_audio
description: Audio input content item
example:
type: input_audio
input_audio:
data: SGVsbG8gV29ybGQ=
format: mp3
ToolCallStatus:
type: string
nullable: true
enum:
- in_progress
- completed
- incomplete
example: completed
x-speakeasy-unknown-values: allow
OpenAIResponsesInput:
anyOf:
- type: string
- type: array
items:
anyOf:
- type: object
properties:
type:
type: string
enum:
- message
role:
anyOf:
- type: string
enum:
- user
- type: string
enum:
- system
- type: string
enum:
- assistant
- type: string
enum:
- developer
content:
anyOf:
- type: array
items:
oneOf:
- $ref: '#/components/schemas/ResponseInputText'
- $ref: '#/components/schemas/ResponseInputImage'
- $ref: '#/components/schemas/ResponseInputFile'
- $ref: '#/components/schemas/ResponseInputAudio'
discriminator:
propertyName: type
mapping:
input_text: '#/components/schemas/ResponseInputText'
input_image: '#/components/schemas/ResponseInputImage'
input_file: '#/components/schemas/ResponseInputFile'
input_audio: '#/components/schemas/ResponseInputAudio'
- type: string
required:
- role
- content
- type: object
properties:
id:
type: string
type:
type: string
enum:
- message
role:
anyOf:
- type: string
enum:
- user
- type: string
enum:
- system
- type: string
enum:
- developer
content:
type: array
items:
oneOf:
- $ref: '#/components/schemas/ResponseInputText'
- $ref: '#/components/schemas/ResponseInputImage'
- $ref: '#/components/schemas/ResponseInputFile'
- $ref: '#/components/schemas/ResponseInputAudio'
discriminator:
propertyName: type
mapping:
input_text: '#/components/schemas/ResponseInputText'
input_image: '#/components/schemas/ResponseInputImage'
input_file: '#/components/schemas/ResponseInputFile'
input_audio: '#/components/schemas/ResponseInputAudio'
required:
- id
- role
- content
- type: object
properties:
type:
type: string
enum:
- function_call_output
id:
type: string
nullable: true
call_id:
type: string
output:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
required:
- type
- call_id
- output
- type: object
properties:
type:
type: string
enum:
- function_call
call_id:
type: string
name:
type: string
arguments:
type: string
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
required:
- type
- call_id
- name
- arguments
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
- $ref: '#/components/schemas/OutputMessage'
- nullable: true
OpenResponsesRequestMetadata:
type: object
nullable: true
additionalProperties:
type: string
maxLength: 512
description: >-
Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed.
example:
user_id: '123'
session_id: abc-def-ghi
OpenResponsesFunctionTool:
type: object
properties:
type:
type: string
enum:
- function
name:
type: string
description:
type: string
nullable: true
strict:
type: boolean
nullable: true
parameters:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- type
- name
- parameters
description: Function tool definition
example:
type: function
name: get_weather
description: Get the current weather in a location
parameters:
type: object
properties:
location:
type: string
description: The city and state
unit:
type: string
enum:
- celsius
- fahrenheit
x-speakeasy-unknown-values: allow
required:
- location
ResponsesSearchContextSize:
type: string
enum:
- low
- medium
- high
description: Size of the search context for web search tools
example: medium
x-speakeasy-unknown-values: allow
WebSearchPreviewToolUserLocation:
type: object
nullable: true
properties:
type:
type: string
enum:
- approximate
city:
type: string
nullable: true
country:
type: string
nullable: true
region:
type: string
nullable: true
timezone:
type: string
nullable: true
required:
- type
OpenResponsesWebSearchPreviewTool:
type: object
properties:
type:
type: string
enum:
- web_search_preview
search_context_size:
$ref: '#/components/schemas/ResponsesSearchContextSize'
user_location:
$ref: '#/components/schemas/WebSearchPreviewToolUserLocation'
required:
- type
description: Web search preview tool configuration
example:
type: web_search_preview
OpenResponsesWebSearchPreview20250311Tool:
type: object
properties:
type:
type: string
enum:
- web_search_preview_2025_03_11
search_context_size:
$ref: '#/components/schemas/ResponsesSearchContextSize'
user_location:
$ref: '#/components/schemas/WebSearchPreviewToolUserLocation'
required:
- type
description: Web search preview tool configuration (2025-03-11 version)
example:
type: web_search_preview_2025_03_11
ResponsesWebSearchUserLocation:
type: object
nullable: true
properties:
type:
type: string
enum:
- approximate
city:
type: string
nullable: true
country:
type: string
nullable: true
region:
type: string
nullable: true
timezone:
type: string
nullable: true
description: User location information for web search
example:
type: approximate
city: San Francisco
country: USA
region: California
timezone: America/Los_Angeles
OpenResponsesWebSearchTool:
type: object
properties:
type:
type: string
enum:
- web_search
filters:
type: object
nullable: true
properties:
allowed_domains:
type: array
nullable: true
items:
type: string
search_context_size:
$ref: '#/components/schemas/ResponsesSearchContextSize'
user_location:
$ref: '#/components/schemas/ResponsesWebSearchUserLocation'
required:
- type
description: Web search tool configuration
example:
type: web_search
filters:
allowed_domains:
- example.com
OpenResponsesWebSearch20250826Tool:
type: object
properties:
type:
type: string
enum:
- web_search_2025_08_26
filters:
type: object
nullable: true
properties:
allowed_domains:
type: array
nullable: true
items:
type: string
search_context_size:
$ref: '#/components/schemas/ResponsesSearchContextSize'
user_location:
$ref: '#/components/schemas/ResponsesWebSearchUserLocation'
required:
- type
description: Web search tool configuration (2025-08-26 version)
example:
type: web_search_2025_08_26
filters:
allowed_domains:
- example.com
OpenAIResponsesToolChoice:
anyOf:
- type: string
enum:
- auto
- type: string
enum:
- none
- type: string
enum:
- required
- type: object
properties:
type:
type: string
enum:
- function
name:
type: string
required:
- type
- name
- type: object
properties:
type:
anyOf:
- type: string
enum:
- web_search_preview_2025_03_11
- type: string
enum:
- web_search_preview
required:
- type
OpenAIResponsesPrompt:
type: object
nullable: true
properties:
id:
type: string
variables:
type: object
nullable: true
additionalProperties:
anyOf:
- type: string
- $ref: '#/components/schemas/ResponseInputText'
- $ref: '#/components/schemas/ResponseInputImage'
- $ref: '#/components/schemas/ResponseInputFile'
required:
- id
OpenAIResponsesReasoningEffort:
type: string
nullable: true
enum:
- high
- medium
- low
- minimal
- none
x-speakeasy-unknown-values: allow
ReasoningSummaryVerbosity:
type: string
enum:
- auto
- concise
- detailed
x-speakeasy-unknown-values: allow
OpenAIResponsesReasoningConfig:
type: object
nullable: true
properties:
effort:
$ref: '#/components/schemas/OpenAIResponsesReasoningEffort'
summary:
$ref: '#/components/schemas/ReasoningSummaryVerbosity'
OpenAIResponsesServiceTier:
type: string
nullable: true
enum:
- auto
- default
- flex
- priority
- scale
x-speakeasy-unknown-values: allow
OpenAIResponsesTruncation:
type: string
nullable: true
enum:
- auto
- disabled
x-speakeasy-unknown-values: allow
ResponsesFormatText:
type: object
properties:
type:
type: string
enum:
- text
required:
- type
description: Plain text response format
example:
type: text
ResponsesFormatJSONObject:
type: object
properties:
type:
type: string
enum:
- json_object
required:
- type
description: JSON object response format
example:
type: json_object
ResponsesFormatTextJSONSchemaConfig:
type: object
properties:
type:
type: string
enum:
- json_schema
name:
type: string
description:
type: string
strict:
type: boolean
nullable: true
schema:
type: object
additionalProperties:
nullable: true
required:
- type
- name
- schema
description: JSON schema constrained response format
example:
type: json_schema
name: user_info
description: User information schema
schema:
type: object
properties:
name:
type: string
age:
type: number
required:
- name
ResponseFormatTextConfig:
anyOf:
- $ref: '#/components/schemas/ResponsesFormatText'
- $ref: '#/components/schemas/ResponsesFormatJSONObject'
- $ref: '#/components/schemas/ResponsesFormatTextJSONSchemaConfig'
description: Text response format configuration
example:
type: text
ResponseTextConfig:
type: object
properties:
format:
$ref: '#/components/schemas/ResponseFormatTextConfig'
verbosity:
type: string
nullable: true
enum:
- high
- low
- medium
x-speakeasy-unknown-values: allow
description: Text output configuration including format and verbosity
example:
format:
type: text
verbosity: medium
OpenAIResponsesNonStreamingResponse:
type: object
properties:
id:
type: string
object:
type: string
enum:
- response
created_at:
type: number
model:
type: string
status:
$ref: '#/components/schemas/OpenAIResponsesResponseStatus'
output:
type: array
items:
oneOf:
- $ref: '#/components/schemas/OutputMessage'
- $ref: '#/components/schemas/OutputItemReasoning'
- $ref: '#/components/schemas/OutputItemFunctionCall'
- $ref: '#/components/schemas/OutputItemWebSearchCall'
- $ref: '#/components/schemas/OutputItemFileSearchCall'
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
discriminator:
propertyName: type
mapping:
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
function_call: '#/components/schemas/OutputItemFunctionCall'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
user:
type: string
nullable: true
output_text:
type: string
prompt_cache_key:
type: string
nullable: true
safety_identifier:
type: string
nullable: true
error:
$ref: '#/components/schemas/ResponsesErrorField'
incomplete_details:
$ref: '#/components/schemas/OpenAIResponsesIncompleteDetails'
usage:
$ref: '#/components/schemas/OpenAIResponsesUsage'
max_tool_calls:
type: number
nullable: true
top_logprobs:
type: number
max_output_tokens:
type: number
nullable: true
temperature:
type: number
nullable: true
top_p:
type: number
nullable: true
instructions:
$ref: '#/components/schemas/OpenAIResponsesInput'
metadata:
$ref: '#/components/schemas/OpenResponsesRequestMetadata'
tools:
type: array
items:
oneOf:
- allOf:
- $ref: '#/components/schemas/OpenResponsesFunctionTool'
- type: object
properties: {}
description: Function tool definition
example:
type: function
name: get_weather
description: Get the current weather in a location
parameters:
type: object
properties:
location:
type: string
description: The city and state
unit:
type: string
enum:
- celsius
- fahrenheit
x-speakeasy-unknown-values: allow
required:
- location
- $ref: '#/components/schemas/OpenResponsesWebSearchPreviewTool'
- $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool'
- $ref: '#/components/schemas/OpenResponsesWebSearchTool'
- $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool'
tool_choice:
$ref: '#/components/schemas/OpenAIResponsesToolChoice'
parallel_tool_calls:
type: boolean
prompt:
$ref: '#/components/schemas/OpenAIResponsesPrompt'
background:
type: boolean
nullable: true
previous_response_id:
type: string
nullable: true
reasoning:
$ref: '#/components/schemas/OpenAIResponsesReasoningConfig'
service_tier:
$ref: '#/components/schemas/OpenAIResponsesServiceTier'
store:
type: boolean
truncation:
$ref: '#/components/schemas/OpenAIResponsesTruncation'
text:
$ref: '#/components/schemas/ResponseTextConfig'
required:
- id
- object
- created_at
- model
- output
- error
- incomplete_details
- temperature
- top_p
- instructions
- metadata
- tools
- tool_choice
- parallel_tool_calls
OpenResponsesNonStreamingResponse:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
- type: object
properties:
output:
type: array
items:
$ref: '#/components/schemas/ResponsesOutputItem'
usage:
$ref: '#/components/schemas/OpenResponsesUsage'
description: Complete non-streaming response from the Responses API
example:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: completed
output:
- type: message
id: msg-abc123
status: completed
role: assistant
content:
- type: output_text
text: Hello! How can I help you today?
annotations: []
usage:
input_tokens: 10
output_tokens: 25
total_tokens: 35
input_tokens_details:
cached_tokens: 0
output_tokens_details:
reasoning_tokens: 0
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
temperature: null
top_p: null
max_output_tokens: null
metadata: null
instructions: null
OpenResponsesCreatedEvent:
type: object
properties:
type:
type: string
enum:
- response.created
response:
$ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
sequence_number:
type: number
required:
- type
- response
- sequence_number
description: Event emitted when a response is created
example:
type: response.created
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: in_progress
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 0
OpenResponsesInProgressEvent:
type: object
properties:
type:
type: string
enum:
- response.in_progress
response:
$ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
sequence_number:
type: number
required:
- type
- response
- sequence_number
description: Event emitted when a response is in progress
example:
type: response.in_progress
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: in_progress
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 1
OpenResponsesCompletedEvent:
type: object
properties:
type:
type: string
enum:
- response.completed
response:
$ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
sequence_number:
type: number
required:
- type
- response
- sequence_number
description: Event emitted when a response has completed successfully
example:
type: response.completed
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: completed
output:
- id: item-1
type: message
status: completed
role: assistant
content:
- type: output_text
text: Hello! How can I help you?
annotations: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 10
OpenResponsesIncompleteEvent:
type: object
properties:
type:
type: string
enum:
- response.incomplete
response:
$ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
sequence_number:
type: number
required:
- type
- response
- sequence_number
description: Event emitted when a response is incomplete
example:
type: response.incomplete
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: incomplete
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 5
OpenResponsesFailedEvent:
type: object
properties:
type:
type: string
enum:
- response.failed
response:
$ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
sequence_number:
type: number
required:
- type
- response
- sequence_number
description: Event emitted when a response has failed
example:
type: response.failed
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: failed
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 3
OpenAIResponsesErrorEvent:
type: object
properties:
type:
type: string
enum:
- error
code:
type: string
nullable: true
message:
type: string
param:
type: string
nullable: true
sequence_number:
type: number
required:
- type
- code
- message
- param
- sequence_number
description: Event emitted when an error occurs during streaming
example:
type: error
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
param: null
sequence_number: 2
OpenResponsesErrorEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesErrorEvent'
- type: object
properties: {}
description: Event emitted when an error occurs during streaming
example:
type: error
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
param: null
sequence_number: 2
OpenResponsesOutputItemAddedEvent:
type: object
properties:
type:
type: string
enum:
- response.output_item.added
output_index:
type: number
item:
oneOf:
- $ref: '#/components/schemas/OutputMessage'
- $ref: '#/components/schemas/OutputItemReasoning'
- $ref: '#/components/schemas/OutputItemFunctionCall'
- $ref: '#/components/schemas/OutputItemWebSearchCall'
- $ref: '#/components/schemas/OutputItemFileSearchCall'
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
discriminator:
propertyName: type
mapping:
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
function_call: '#/components/schemas/OutputItemFunctionCall'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
sequence_number:
type: number
required:
- type
- output_index
- item
- sequence_number
description: Event emitted when a new output item is added to the response
example:
type: response.output_item.added
output_index: 0
item:
id: item-1
type: message
status: in_progress
role: assistant
content: []
sequence_number: 2
OpenResponsesOutputItemDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.output_item.done
output_index:
type: number
item:
oneOf:
- $ref: '#/components/schemas/OutputMessage'
- $ref: '#/components/schemas/OutputItemReasoning'
- $ref: '#/components/schemas/OutputItemFunctionCall'
- $ref: '#/components/schemas/OutputItemWebSearchCall'
- $ref: '#/components/schemas/OutputItemFileSearchCall'
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
discriminator:
propertyName: type
mapping:
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
function_call: '#/components/schemas/OutputItemFunctionCall'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
sequence_number:
type: number
required:
- type
- output_index
- item
- sequence_number
description: Event emitted when an output item is complete
example:
type: response.output_item.done
output_index: 0
item:
id: item-1
type: message
status: completed
role: assistant
content:
- type: output_text
text: Hello! How can I help you?
annotations: []
sequence_number: 8
OpenResponsesContentPartAddedEvent:
type: object
properties:
type:
type: string
enum:
- response.content_part.added
output_index:
type: number
item_id:
type: string
content_index:
type: number
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- part
- sequence_number
description: Event emitted when a new content part is added to an output item
example:
type: response.content_part.added
output_index: 0
item_id: item-1
content_index: 0
part:
type: output_text
text: ''
annotations: []
sequence_number: 3
OpenResponsesContentPartDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.content_part.done
output_index:
type: number
item_id:
type: string
content_index:
type: number
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- part
- sequence_number
description: Event emitted when a content part is complete
example:
type: response.content_part.done
output_index: 0
item_id: item-1
content_index: 0
part:
type: output_text
text: Hello! How can I help you?
annotations: []
sequence_number: 7
OpenResponsesTopLogprobs:
type: object
properties:
token:
type: string
logprob:
type: number
description: Alternative token with its log probability
example:
token: hello
logprob: -0.5
OpenResponsesLogProbs:
type: object
properties:
logprob:
type: number
token:
type: string
top_logprobs:
type: array
items:
$ref: '#/components/schemas/OpenResponsesTopLogprobs'
required:
- logprob
- token
description: Log probability information for a token
example:
logprob: -0.1
token: world
top_logprobs:
- token: hello
logprob: -0.5
OpenResponsesTextDeltaEvent:
type: object
properties:
type:
type: string
enum:
- response.output_text.delta
logprobs:
type: array
items:
$ref: '#/components/schemas/OpenResponsesLogProbs'
output_index:
type: number
item_id:
type: string
content_index:
type: number
delta:
type: string
sequence_number:
type: number
required:
- type
- logprobs
- output_index
- item_id
- content_index
- delta
- sequence_number
description: Event emitted when a text delta is streamed
example:
type: response.output_text.delta
logprobs: []
output_index: 0
item_id: item-1
content_index: 0
delta: Hello
sequence_number: 4
OpenResponsesTextDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.output_text.done
output_index:
type: number
item_id:
type: string
content_index:
type: number
text:
type: string
sequence_number:
type: number
logprobs:
type: array
items:
$ref: '#/components/schemas/OpenResponsesLogProbs'
required:
- type
- output_index
- item_id
- content_index
- text
- sequence_number
- logprobs
description: Event emitted when text streaming is complete
example:
type: response.output_text.done
output_index: 0
item_id: item-1
content_index: 0
text: Hello! How can I help you?
sequence_number: 6
logprobs: []
OpenResponsesRefusalDeltaEvent:
type: object
properties:
type:
type: string
enum:
- response.refusal.delta
output_index:
type: number
item_id:
type: string
content_index:
type: number
delta:
type: string
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- delta
- sequence_number
description: Event emitted when a refusal delta is streamed
example:
type: response.refusal.delta
output_index: 0
item_id: item-1
content_index: 0
delta: I'm sorry
sequence_number: 4
OpenResponsesRefusalDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.refusal.done
output_index:
type: number
item_id:
type: string
content_index:
type: number
refusal:
type: string
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- refusal
- sequence_number
description: Event emitted when refusal streaming is complete
example:
type: response.refusal.done
output_index: 0
item_id: item-1
content_index: 0
refusal: I'm sorry, but I can't assist with that request.
sequence_number: 6
OpenResponsesOutputTextAnnotationAddedEvent:
type: object
properties:
type:
type: string
enum:
- response.output_text.annotation.added
output_index:
type: number
item_id:
type: string
content_index:
type: number
sequence_number:
type: number
annotation_index:
type: number
annotation:
$ref: '#/components/schemas/OpenAIResponsesAnnotation'
required:
- type
- output_index
- item_id
- content_index
- sequence_number
- annotation_index
- annotation
description: Event emitted when a text annotation is added to output
example:
type: response.output_text.annotation.added
output_index: 0
item_id: item-1
content_index: 0
sequence_number: 5
annotation_index: 0
annotation:
type: url_citation
url: https://example.com
title: Example
start_index: 0
end_index: 7
OpenResponsesFunctionCallArgumentsDeltaEvent:
type: object
properties:
type:
type: string
enum:
- response.function_call_arguments.delta
item_id:
type: string
output_index:
type: number
delta:
type: string
sequence_number:
type: number
required:
- type
- item_id
- output_index
- delta
- sequence_number
description: Event emitted when function call arguments are being streamed
example:
type: response.function_call_arguments.delta
item_id: item-1
output_index: 0
delta: '{"city": "San'
sequence_number: 4
OpenResponsesFunctionCallArgumentsDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.function_call_arguments.done
item_id:
type: string
output_index:
type: number
name:
type: string
arguments:
type: string
sequence_number:
type: number
required:
- type
- item_id
- output_index
- name
- arguments
- sequence_number
description: Event emitted when function call arguments streaming is complete
example:
type: response.function_call_arguments.done
item_id: item-1
output_index: 0
name: get_weather
arguments: '{"city": "San Francisco", "units": "celsius"}'
sequence_number: 6
OpenAIResponsesReasoningDeltaEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_text.delta
output_index:
type: number
item_id:
type: string
content_index:
type: number
delta:
type: string
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- delta
- sequence_number
description: Event emitted when reasoning text delta is streamed
example:
type: response.reasoning_text.delta
output_index: 0
item_id: item-1
content_index: 0
delta: First, we need
sequence_number: 4
OpenResponsesReasoningDeltaEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningDeltaEvent'
- type: object
properties: {}
description: Event emitted when reasoning text delta is streamed
example:
type: response.reasoning_text.delta
output_index: 0
item_id: item-1
content_index: 0
delta: First, we need
sequence_number: 4
OpenAIResponsesReasoningDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_text.done
output_index:
type: number
item_id:
type: string
content_index:
type: number
text:
type: string
sequence_number:
type: number
required:
- type
- output_index
- item_id
- content_index
- text
- sequence_number
description: Event emitted when reasoning text streaming is complete
example:
type: response.reasoning_text.done
output_index: 0
item_id: item-1
content_index: 0
text: First, we need to identify the key components and then combine them logically.
sequence_number: 6
OpenResponsesReasoningDoneEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningDoneEvent'
- type: object
properties: {}
description: Event emitted when reasoning text streaming is complete
example:
type: response.reasoning_text.done
output_index: 0
item_id: item-1
content_index: 0
text: First, we need to identify the key components and then combine them logically.
sequence_number: 6
OpenAIResponsesReasoningSummaryPartAddedEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_summary_part.added
output_index:
type: number
item_id:
type: string
summary_index:
type: number
part:
$ref: '#/components/schemas/ReasoningSummaryText'
sequence_number:
type: number
required:
- type
- output_index
- item_id
- summary_index
- part
- sequence_number
description: Event emitted when a reasoning summary part is added
example:
type: response.reasoning_summary_part.added
output_index: 0
item_id: item-1
summary_index: 0
part:
type: summary_text
text: ''
sequence_number: 3
OpenResponsesReasoningSummaryPartAddedEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryPartAddedEvent'
- type: object
properties: {}
description: Event emitted when a reasoning summary part is added
example:
type: response.reasoning_summary_part.added
output_index: 0
item_id: item-1
summary_index: 0
part:
type: summary_text
text: ''
sequence_number: 3
OpenResponsesReasoningSummaryPartDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_summary_part.done
output_index:
type: number
item_id:
type: string
summary_index:
type: number
part:
$ref: '#/components/schemas/ReasoningSummaryText'
sequence_number:
type: number
required:
- type
- output_index
- item_id
- summary_index
- part
- sequence_number
description: Event emitted when a reasoning summary part is complete
example:
type: response.reasoning_summary_part.done
output_index: 0
item_id: item-1
summary_index: 0
part:
type: summary_text
text: Analyzing the problem step by step to find the optimal solution.
sequence_number: 7
OpenAIResponsesReasoningSummaryTextDeltaEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_summary_text.delta
item_id:
type: string
output_index:
type: number
summary_index:
type: number
delta:
type: string
sequence_number:
type: number
required:
- type
- item_id
- output_index
- summary_index
- delta
- sequence_number
description: Event emitted when reasoning summary text delta is streamed
example:
type: response.reasoning_summary_text.delta
item_id: item-1
output_index: 0
summary_index: 0
delta: Analyzing
sequence_number: 4
OpenResponsesReasoningSummaryTextDeltaEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDeltaEvent'
- type: object
properties: {}
description: Event emitted when reasoning summary text delta is streamed
example:
type: response.reasoning_summary_text.delta
item_id: item-1
output_index: 0
summary_index: 0
delta: Analyzing
sequence_number: 4
OpenAIResponsesReasoningSummaryTextDoneEvent:
type: object
properties:
type:
type: string
enum:
- response.reasoning_summary_text.done
item_id:
type: string
output_index:
type: number
summary_index:
type: number
text:
type: string
sequence_number:
type: number
required:
- type
- item_id
- output_index
- summary_index
- text
- sequence_number
description: Event emitted when reasoning summary text streaming is complete
example:
type: response.reasoning_summary_text.done
item_id: item-1
output_index: 0
summary_index: 0
text: Analyzing the problem step by step to find the optimal solution.
sequence_number: 6
OpenResponsesReasoningSummaryTextDoneEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDoneEvent'
- type: object
properties: {}
description: Event emitted when reasoning summary text streaming is complete
example:
type: response.reasoning_summary_text.done
item_id: item-1
output_index: 0
summary_index: 0
text: Analyzing the problem step by step to find the optimal solution.
sequence_number: 6
OpenAIResponsesImageGenCallInProgress:
type: object
properties:
type:
type: string
enum:
- response.image_generation_call.in_progress
item_id:
type: string
output_index:
type: number
sequence_number:
type: number
required:
- type
- item_id
- output_index
- sequence_number
OpenResponsesImageGenCallInProgress:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress'
- type: object
properties: {}
description: Image generation call in progress
example:
type: response.image_generation_call.in_progress
output_index: 0
sequence_number: 1
item_id: call-123
OpenAIResponsesImageGenCallGenerating:
type: object
properties:
type:
type: string
enum:
- response.image_generation_call.generating
item_id:
type: string
output_index:
type: number
sequence_number:
type: number
required:
- type
- item_id
- output_index
- sequence_number
OpenResponsesImageGenCallGenerating:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating'
- type: object
properties: {}
description: Image generation call is generating
example:
type: response.image_generation_call.generating
output_index: 0
sequence_number: 2
item_id: call-123
OpenAIResponsesImageGenCallPartialImage:
type: object
properties:
type:
type: string
enum:
- response.image_generation_call.partial_image
item_id:
type: string
output_index:
type: number
sequence_number:
type: number
partial_image_b64:
type: string
partial_image_index:
type: number
required:
- type
- item_id
- output_index
- sequence_number
- partial_image_b64
- partial_image_index
OpenResponsesImageGenCallPartialImage:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage'
- type: object
properties: {}
description: Image generation call with partial image
example:
type: response.image_generation_call.partial_image
output_index: 0
sequence_number: 3
item_id: call-123
partial_image_b64: base64encodedimage...
partial_image_index: 0
OpenAIResponsesImageGenCallCompleted:
type: object
properties:
type:
type: string
enum:
- response.image_generation_call.completed
item_id:
type: string
output_index:
type: number
sequence_number:
type: number
required:
- type
- item_id
- output_index
- sequence_number
OpenResponsesImageGenCallCompleted:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted'
- type: object
properties: {}
description: Image generation call completed
example:
type: response.image_generation_call.completed
output_index: 0
sequence_number: 4
item_id: call-123
OpenResponsesStreamEvent:
oneOf:
- allOf:
- $ref: '#/components/schemas/OpenResponsesCreatedEvent'
- type: object
properties:
response:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
description: Event emitted when a response is created
example:
type: response.created
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: in_progress
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 0
- allOf:
- $ref: '#/components/schemas/OpenResponsesInProgressEvent'
- type: object
properties:
response:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
description: Event emitted when a response is in progress
example:
type: response.in_progress
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: in_progress
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 1
- allOf:
- $ref: '#/components/schemas/OpenResponsesCompletedEvent'
- type: object
properties:
response:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
description: Event emitted when a response has completed successfully
example:
type: response.completed
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: completed
output:
- id: item-1
type: message
status: completed
role: assistant
content:
- type: output_text
text: Hello! How can I help you?
annotations: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 10
- allOf:
- $ref: '#/components/schemas/OpenResponsesIncompleteEvent'
- type: object
properties:
response:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
description: Event emitted when a response is incomplete
example:
type: response.incomplete
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: incomplete
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 5
- allOf:
- $ref: '#/components/schemas/OpenResponsesFailedEvent'
- type: object
properties:
response:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
description: Event emitted when a response has failed
example:
type: response.failed
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: failed
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 3
- $ref: '#/components/schemas/OpenResponsesErrorEvent'
- allOf:
- $ref: '#/components/schemas/OpenResponsesOutputItemAddedEvent'
- type: object
properties:
item:
$ref: '#/components/schemas/ResponsesOutputItem'
description: Event emitted when a new output item is added to the response
example:
type: response.output_item.added
output_index: 0
item:
id: item-1
type: message
status: in_progress
role: assistant
content: []
sequence_number: 2
- allOf:
- $ref: '#/components/schemas/OpenResponsesOutputItemDoneEvent'
- type: object
properties:
item:
$ref: '#/components/schemas/ResponsesOutputItem'
description: Event emitted when an output item is complete
example:
type: response.output_item.done
output_index: 0
item:
id: item-1
type: message
status: completed
role: assistant
content:
- type: output_text
text: Hello! How can I help you?
annotations: []
sequence_number: 8
- allOf:
- $ref: '#/components/schemas/OpenResponsesContentPartAddedEvent'
- type: object
properties:
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/ReasoningTextContent'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
description: Event emitted when a new content part is added to an output item
example:
type: response.content_part.added
output_index: 0
item_id: item-1
content_index: 0
part:
type: output_text
text: ''
annotations: []
sequence_number: 3
- allOf:
- $ref: '#/components/schemas/OpenResponsesContentPartDoneEvent'
- type: object
properties:
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/ReasoningTextContent'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
description: Event emitted when a content part is complete
example:
type: response.content_part.done
output_index: 0
item_id: item-1
content_index: 0
part:
type: output_text
text: Hello! How can I help you?
annotations: []
sequence_number: 7
- allOf:
- $ref: '#/components/schemas/OpenResponsesTextDeltaEvent'
- type: object
properties: {}
description: Event emitted when a text delta is streamed
example:
type: response.output_text.delta
logprobs: []
output_index: 0
item_id: item-1
content_index: 0
delta: Hello
sequence_number: 4
- allOf:
- $ref: '#/components/schemas/OpenResponsesTextDoneEvent'
- type: object
properties: {}
description: Event emitted when text streaming is complete
example:
type: response.output_text.done
output_index: 0
item_id: item-1
content_index: 0
text: Hello! How can I help you?
sequence_number: 6
logprobs: []
- allOf:
- $ref: '#/components/schemas/OpenResponsesRefusalDeltaEvent'
- type: object
properties: {}
description: Event emitted when a refusal delta is streamed
example:
type: response.refusal.delta
output_index: 0
item_id: item-1
content_index: 0
delta: I'm sorry
sequence_number: 4
- allOf:
- $ref: '#/components/schemas/OpenResponsesRefusalDoneEvent'
- type: object
properties: {}
description: Event emitted when refusal streaming is complete
example:
type: response.refusal.done
output_index: 0
item_id: item-1
content_index: 0
refusal: I'm sorry, but I can't assist with that request.
sequence_number: 6
- allOf:
- $ref: '#/components/schemas/OpenResponsesOutputTextAnnotationAddedEvent'
- type: object
properties: {}
description: Event emitted when a text annotation is added to output
example:
type: response.output_text.annotation.added
output_index: 0
item_id: item-1
content_index: 0
sequence_number: 5
annotation_index: 0
annotation:
type: url_citation
url: https://example.com
title: Example
start_index: 0
end_index: 7
- allOf:
- $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDeltaEvent'
- type: object
properties: {}
description: Event emitted when function call arguments are being streamed
example:
type: response.function_call_arguments.delta
item_id: item-1
output_index: 0
delta: '{"city": "San'
sequence_number: 4
- allOf:
- $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDoneEvent'
- type: object
properties: {}
description: Event emitted when function call arguments streaming is complete
example:
type: response.function_call_arguments.done
item_id: item-1
output_index: 0
name: get_weather
arguments: '{"city": "San Francisco", "units": "celsius"}'
sequence_number: 6
- $ref: '#/components/schemas/OpenResponsesReasoningDeltaEvent'
- $ref: '#/components/schemas/OpenResponsesReasoningDoneEvent'
- $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartAddedEvent'
- allOf:
- $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartDoneEvent'
- type: object
properties: {}
description: Event emitted when a reasoning summary part is complete
example:
type: response.reasoning_summary_part.done
output_index: 0
item_id: item-1
summary_index: 0
part:
type: summary_text
text: Analyzing the problem step by step to find the optimal solution.
sequence_number: 7
- $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDeltaEvent'
- $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDoneEvent'
- $ref: '#/components/schemas/OpenResponsesImageGenCallInProgress'
- $ref: '#/components/schemas/OpenResponsesImageGenCallGenerating'
- $ref: '#/components/schemas/OpenResponsesImageGenCallPartialImage'
- $ref: '#/components/schemas/OpenResponsesImageGenCallCompleted'
description: Union of all possible event types emitted during response streaming
example:
type: response.created
response:
id: resp-abc123
object: response
created_at: 1704067200
model: gpt-4
status: in_progress
output: []
tools: []
tool_choice: auto
parallel_tool_calls: true
error: null
incomplete_details: null
metadata: null
instructions: null
temperature: null
top_p: null
max_output_tokens: null
sequence_number: 0
BadRequestResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for BadRequestResponse
example:
code: 400
message: Invalid request parameters
BadRequestResponse:
type: object
properties:
error:
$ref: '#/components/schemas/BadRequestResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Bad Request - Invalid request parameters or malformed input
example:
error:
code: 400
message: Invalid request parameters
UnauthorizedResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for UnauthorizedResponse
example:
code: 401
message: Missing Authentication header
UnauthorizedResponse:
type: object
properties:
error:
$ref: '#/components/schemas/UnauthorizedResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Unauthorized - Authentication required or invalid credentials
example:
error:
code: 401
message: Missing Authentication header
PaymentRequiredResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for PaymentRequiredResponse
example:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
PaymentRequiredResponse:
type: object
properties:
error:
$ref: '#/components/schemas/PaymentRequiredResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Payment Required - Insufficient credits or quota to complete request
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
NotFoundResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for NotFoundResponse
example:
code: 404
message: Resource not found
NotFoundResponse:
type: object
properties:
error:
$ref: '#/components/schemas/NotFoundResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Not Found - Resource does not exist
example:
error:
code: 404
message: Resource not found
RequestTimeoutResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for RequestTimeoutResponse
example:
code: 408
message: Operation timed out. Please try again later.
RequestTimeoutResponse:
type: object
properties:
error:
$ref: '#/components/schemas/RequestTimeoutResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Request Timeout - Operation exceeded time limit
example:
error:
code: 408
message: Operation timed out. Please try again later.
PayloadTooLargeResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for PayloadTooLargeResponse
example:
code: 413
message: Request payload too large
PayloadTooLargeResponse:
type: object
properties:
error:
$ref: '#/components/schemas/PayloadTooLargeResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Payload Too Large - Request payload exceeds size limits
example:
error:
code: 413
message: Request payload too large
UnprocessableEntityResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for UnprocessableEntityResponse
example:
code: 422
message: Invalid argument
UnprocessableEntityResponse:
type: object
properties:
error:
$ref: '#/components/schemas/UnprocessableEntityResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Unprocessable Entity - Semantic validation failure
example:
error:
code: 422
message: Invalid argument
TooManyRequestsResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for TooManyRequestsResponse
example:
code: 429
message: Rate limit exceeded
TooManyRequestsResponse:
type: object
properties:
error:
$ref: '#/components/schemas/TooManyRequestsResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Too Many Requests - Rate limit exceeded
example:
error:
code: 429
message: Rate limit exceeded
InternalServerResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for InternalServerResponse
example:
code: 500
message: Internal Server Error
InternalServerResponse:
type: object
properties:
error:
$ref: '#/components/schemas/InternalServerResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Internal Server Error - Unexpected server error
example:
error:
code: 500
message: Internal Server Error
BadGatewayResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for BadGatewayResponse
example:
code: 502
message: Provider returned error
BadGatewayResponse:
type: object
properties:
error:
$ref: '#/components/schemas/BadGatewayResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Bad Gateway - Provider/upstream API failure
example:
error:
code: 502
message: Provider returned error
ServiceUnavailableResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for ServiceUnavailableResponse
example:
code: 503
message: Service temporarily unavailable
ServiceUnavailableResponse:
type: object
properties:
error:
$ref: '#/components/schemas/ServiceUnavailableResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Service Unavailable - Service temporarily unavailable
example:
error:
code: 503
message: Service temporarily unavailable
EdgeNetworkTimeoutResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for EdgeNetworkTimeoutResponse
example:
code: 524
message: Request timed out. Please try again later.
EdgeNetworkTimeoutResponse:
type: object
properties:
error:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Infrastructure Timeout - Provider request timed out at edge network
example:
error:
code: 524
message: Request timed out. Please try again later.
ProviderOverloadedResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for ProviderOverloadedResponse
example:
code: 529
message: Provider returned error
ProviderOverloadedResponse:
type: object
properties:
error:
$ref: '#/components/schemas/ProviderOverloadedResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Provider Overloaded - Provider is temporarily overloaded
example:
error:
code: 529
message: Provider returned error
OpenResponsesReasoning:
allOf:
- $ref: '#/components/schemas/OutputItemReasoning'
- type: object
properties:
signature:
type: string
nullable: true
format:
type: string
nullable: true
enum:
- unknown
- openai-responses-v1
- xai-responses-v1
- anthropic-claude-v1
- google-gemini-v1
x-speakeasy-unknown-values: allow
example:
type: reasoning
id: reasoning-abc123
summary:
- type: summary_text
text: Step by step analysis
description: Reasoning output item with signature and format extensions
OpenResponsesEasyInputMessage:
type: object
properties:
type:
type: string
enum:
- message
role:
anyOf:
- type: string
enum:
- user
- type: string
enum:
- system
- type: string
enum:
- assistant
- type: string
enum:
- developer
content:
anyOf:
- type: array
items:
oneOf:
- $ref: '#/components/schemas/ResponseInputText'
- $ref: '#/components/schemas/ResponseInputImage'
- $ref: '#/components/schemas/ResponseInputFile'
- $ref: '#/components/schemas/ResponseInputAudio'
discriminator:
propertyName: type
mapping:
input_text: '#/components/schemas/ResponseInputText'
input_image: '#/components/schemas/ResponseInputImage'
input_file: '#/components/schemas/ResponseInputFile'
input_audio: '#/components/schemas/ResponseInputAudio'
- type: string
required:
- role
- content
OpenResponsesInputMessageItem:
type: object
properties:
id:
type: string
type:
type: string
enum:
- message
role:
anyOf:
- type: string
enum:
- user
- type: string
enum:
- system
- type: string
enum:
- developer
content:
type: array
items:
oneOf:
- $ref: '#/components/schemas/ResponseInputText'
- $ref: '#/components/schemas/ResponseInputImage'
- $ref: '#/components/schemas/ResponseInputFile'
- $ref: '#/components/schemas/ResponseInputAudio'
discriminator:
propertyName: type
mapping:
input_text: '#/components/schemas/ResponseInputText'
input_image: '#/components/schemas/ResponseInputImage'
input_file: '#/components/schemas/ResponseInputFile'
input_audio: '#/components/schemas/ResponseInputAudio'
required:
- role
- content
OpenResponsesFunctionToolCall:
type: object
properties:
type:
type: string
enum:
- function_call
call_id:
type: string
name:
type: string
arguments:
type: string
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
required:
- type
- call_id
- name
- arguments
- id
description: A function call initiated by the model
example:
id: call-abc123
type: function_call
call_id: call-abc123
name: get_weather
arguments: '{"location":"San Francisco"}'
status: completed
OpenResponsesFunctionCallOutput:
type: object
properties:
type:
type: string
enum:
- function_call_output
id:
type: string
nullable: true
call_id:
type: string
output:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
required:
- type
- call_id
- output
description: The output from a function call execution
example:
type: function_call_output
id: output-abc123
call_id: call-abc123
output: '{"temperature":72,"conditions":"sunny"}'
status: completed
OpenResponsesInput:
anyOf:
- type: string
- type: array
items:
anyOf:
- $ref: '#/components/schemas/OpenResponsesReasoning'
- $ref: '#/components/schemas/OpenResponsesEasyInputMessage'
- $ref: '#/components/schemas/OpenResponsesInputMessageItem'
- $ref: '#/components/schemas/OpenResponsesFunctionToolCall'
- $ref: '#/components/schemas/OpenResponsesFunctionCallOutput'
- $ref: '#/components/schemas/ResponsesOutputMessage'
- $ref: '#/components/schemas/ResponsesOutputItemReasoning'
- $ref: '#/components/schemas/ResponsesOutputItemFunctionCall'
- $ref: '#/components/schemas/ResponsesWebSearchCallOutput'
- $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall'
- $ref: '#/components/schemas/ResponsesImageGenerationCall'
description: Input for a response request - can be a string or array of items
example:
- role: user
content: What is the weather today?
OpenResponsesResponseText:
allOf:
- $ref: '#/components/schemas/ResponseTextConfig'
- type: object
properties: {}
description: Text output configuration including format and verbosity
example:
format:
type: text
verbosity: medium
OpenResponsesReasoningConfig:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesReasoningConfig'
- type: object
nullable: true
properties:
max_tokens:
type: number
nullable: true
enabled:
type: boolean
nullable: true
description: Configuration for reasoning mode in the response
example:
summary: auto
enabled: true
OpenAIResponsesIncludable:
type: string
enum:
- file_search_call.results
- message.input_image.image_url
- computer_call_output.output.image_url
- reasoning.encrypted_content
- code_interpreter_call.outputs
x-speakeasy-unknown-values: allow
DataCollection:
type: string
nullable: true
enum:
- deny
- allow
description: >-
Data collection setting. If no available model provider meets the requirement, your request will return an error.
- allow: (default) allow providers which store user data non-transiently and may train on it
- deny: use only providers which do not collect user data.
example: allow
x-speakeasy-unknown-values: allow
ProviderName:
type: string
enum:
- AI21
- AionLabs
- Alibaba
- Amazon Bedrock
- Amazon Nova
- Anthropic
- Arcee AI
- AtlasCloud
- Avian
- Azure
- BaseTen
- BytePlus
- Black Forest Labs
- Cerebras
- Chutes
- Cirrascale
- Clarifai
- Cloudflare
- Cohere
- Crusoe
- DeepInfra
- DeepSeek
- Featherless
- Fireworks
- Friendli
- GMICloud
- GoPomelo
- Google
- Google AI Studio
- Groq
- Hyperbolic
- Inception
- InferenceNet
- Infermatic
- Inflection
- Liquid
- Mancer 2
- Minimax
- ModelRun
- Mistral
- Modular
- Moonshot AI
- Morph
- NCompass
- Nebius
- NextBit
- Novita
- Nvidia
- OpenAI
- OpenInference
- Parasail
- Perplexity
- Phala
- Relace
- SambaNova
- SiliconFlow
- Stealth
- StreamLake
- Switchpoint
- Targon
- Together
- Venice
- WandB
- xAI
- Z.AI
- FakeProvider
example: OpenAI
x-speakeasy-unknown-values: allow
Quantization:
type: string
enum:
- int4
- int8
- fp4
- fp6
- fp8
- fp16
- bf16
- fp32
- unknown
example: fp16
x-speakeasy-unknown-values: allow
ProviderSort:
type: string
nullable: true
enum:
- price
- throughput
- latency
description: >-
The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed.
example: price
x-speakeasy-unknown-values: allow
BigNumberUnion:
anyOf:
- type: number
- type: string
- type: number
example: 1000
description: A value in string or number format that is a large number
example: 1000
OpenResponsesRequest:
type: object
properties:
input:
$ref: '#/components/schemas/OpenResponsesInput'
instructions:
type: string
nullable: true
metadata:
$ref: '#/components/schemas/OpenResponsesRequestMetadata'
tools:
type: array
items:
oneOf:
- allOf:
- $ref: '#/components/schemas/OpenResponsesFunctionTool'
- type: object
properties: {}
description: Function tool definition
example:
type: function
name: get_weather
description: Get the current weather in a location
parameters:
type: object
properties:
location:
type: string
description: The city and state
unit:
type: string
enum:
- celsius
- fahrenheit
x-speakeasy-unknown-values: allow
required:
- location
- $ref: '#/components/schemas/OpenResponsesWebSearchPreviewTool'
- $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool'
- $ref: '#/components/schemas/OpenResponsesWebSearchTool'
- $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool'
tool_choice:
$ref: '#/components/schemas/OpenAIResponsesToolChoice'
parallel_tool_calls:
type: boolean
nullable: true
model:
type: string
models:
type: array
items:
type: string
text:
$ref: '#/components/schemas/OpenResponsesResponseText'
reasoning:
$ref: '#/components/schemas/OpenResponsesReasoningConfig'
max_output_tokens:
type: number
nullable: true
temperature:
type: number
nullable: true
minimum: 0
maximum: 2
top_p:
type: number
nullable: true
minimum: 0
top_k:
type: number
prompt_cache_key:
type: string
nullable: true
previous_response_id:
type: string
nullable: true
prompt:
$ref: '#/components/schemas/OpenAIResponsesPrompt'
include:
type: array
nullable: true
items:
$ref: '#/components/schemas/OpenAIResponsesIncludable'
background:
type: boolean
nullable: true
safety_identifier:
type: string
nullable: true
store:
type: boolean
const: false
default: false
service_tier:
type: string
enum:
- auto
default: auto
truncation:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesTruncation'
- example: auto
stream:
type: boolean
default: false
provider:
type: object
nullable: true
properties:
allow_fallbacks:
type: boolean
nullable: true
description: >
Whether to allow backup providers to serve requests
- true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the next best provider.
- false: use only the primary/custom provider, and return the upstream error if it's unavailable.
require_parameters:
type: boolean
nullable: true
description: >-
Whether to filter providers to only those that support the parameters you've provided. If this setting is omitted or set to false, then providers will receive only the parameters they support, and ignore the rest.
data_collection:
$ref: '#/components/schemas/DataCollection'
zdr:
type: boolean
nullable: true
description: >-
Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do not retain prompts will be used.
example: true
enforce_distillable_text:
type: boolean
nullable: true
description: >-
Whether to restrict routing to only models that allow text distillation. When true, only models where the author has allowed distillation will be used.
example: true
order:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message.
only:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request.
ignore:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request.
quantizations:
type: array
nullable: true
items:
$ref: '#/components/schemas/Quantization'
description: A list of quantization levels to filter the provider by.
sort:
$ref: '#/components/schemas/ProviderSort'
max_price:
type: object
properties:
prompt:
$ref: '#/components/schemas/BigNumberUnion'
completion:
$ref: '#/components/schemas/BigNumberUnion'
image:
$ref: '#/components/schemas/BigNumberUnion'
audio:
$ref: '#/components/schemas/BigNumberUnion'
request:
$ref: '#/components/schemas/BigNumberUnion'
additionalProperties: false
description: >-
The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion.
additionalProperties: false
description: When multiple model providers are available, optionally indicate your routing preference.
plugins:
type: array
items:
oneOf:
- type: object
properties:
id:
type: string
enum:
- moderation
required:
- id
- type: object
properties:
id:
type: string
enum:
- web
max_results:
type: number
search_prompt:
type: string
engine:
type: string
enum:
- native
- exa
x-speakeasy-unknown-values: allow
required:
- id
- type: object
properties:
id:
type: string
enum:
- file-parser
max_files:
type: number
pdf:
type: object
properties:
engine:
type: string
enum:
- mistral-ocr
- pdf-text
- native
x-speakeasy-unknown-values: allow
required:
- id
- type: object
properties:
id:
type: string
enum:
- response-healing
required:
- id
description: Plugins you want to enable for this request, including their settings.
user:
type: string
maxLength: 128
description: >-
A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 128 characters.
description: Request schema for Responses endpoint
example:
model: anthropic/claude-4.5-sonnet-20250929
input:
- type: message
content: Hello, how are you?
role: user
temperature: 0.7
top_p: 0.9
tools:
- type: function
name: get_current_weather
description: Get the current weather in a given location
parameters:
type: object
properties:
location:
type: string
ActivityItem:
type: object
properties:
date:
type: string
description: Date of the activity (YYYY-MM-DD format)
example: '2025-08-24'
model:
type: string
description: Model slug (e.g., "openai/gpt-4.1")
example: openai/gpt-4.1
model_permaslug:
type: string
description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14")
example: openai/gpt-4.1-2025-04-14
endpoint_id:
type: string
description: Unique identifier for the endpoint
example: 550e8400-e29b-41d4-a716-446655440000
provider_name:
type: string
description: Name of the provider serving this endpoint
example: OpenAI
usage:
type: number
description: Total cost in USD (OpenRouter credits spent)
example: 0.015
byok_usage_inference:
type: number
description: BYOK inference cost in USD (external credits spent)
example: 0.012
requests:
type: number
description: Number of requests made
example: 5
prompt_tokens:
type: number
description: Total prompt tokens used
example: 50
completion_tokens:
type: number
description: Total completion tokens generated
example: 125
reasoning_tokens:
type: number
description: Total reasoning tokens used
example: 25
required:
- date
- model
- model_permaslug
- endpoint_id
- provider_name
- usage
- byok_usage_inference
- requests
- prompt_tokens
- completion_tokens
- reasoning_tokens
example:
date: '2025-08-24'
model: openai/gpt-4.1
model_permaslug: openai/gpt-4.1-2025-04-14
endpoint_id: 550e8400-e29b-41d4-a716-446655440000
provider_name: OpenAI
usage: 0.015
byok_usage_inference: 0.012
requests: 5
prompt_tokens: 50
completion_tokens: 125
reasoning_tokens: 25
ForbiddenResponseErrorData:
type: object
properties:
code:
type: integer
message:
type: string
metadata:
type: object
nullable: true
additionalProperties:
nullable: true
required:
- code
- message
description: Error data for ForbiddenResponse
example:
code: 403
message: Only provisioning keys can perform this operation
ForbiddenResponse:
type: object
properties:
error:
$ref: '#/components/schemas/ForbiddenResponseErrorData'
user_id:
type: string
nullable: true
required:
- error
description: Forbidden - Authentication successful but insufficient permissions
example:
error:
code: 403
message: Only provisioning keys can perform this operation
CreateChargeRequest:
type: object
properties:
amount:
type: number
sender:
type: string
chain_id:
type: integer
enum:
- 1
- 137
- 8453
x-speakeasy-unknown-values: allow
required:
- amount
- sender
- chain_id
description: Create a Coinbase charge for crypto payment
example:
amount: 100
sender: '0x1234567890123456789012345678901234567890'
chain_id: 1
PublicPricing:
type: object
properties:
prompt:
$ref: '#/components/schemas/BigNumberUnion'
completion:
$ref: '#/components/schemas/BigNumberUnion'
request:
$ref: '#/components/schemas/BigNumberUnion'
image:
$ref: '#/components/schemas/BigNumberUnion'
image_token:
$ref: '#/components/schemas/BigNumberUnion'
image_output:
$ref: '#/components/schemas/BigNumberUnion'
audio:
$ref: '#/components/schemas/BigNumberUnion'
input_audio_cache:
$ref: '#/components/schemas/BigNumberUnion'
web_search:
$ref: '#/components/schemas/BigNumberUnion'
internal_reasoning:
$ref: '#/components/schemas/BigNumberUnion'
input_cache_read:
$ref: '#/components/schemas/BigNumberUnion'
input_cache_write:
$ref: '#/components/schemas/BigNumberUnion'
discount:
type: number
required:
- prompt
- completion
additionalProperties: false
description: Pricing information for the model
example:
prompt: '0.00003'
completion: '0.00006'
request: '0'
image: '0'
ModelGroup:
type: string
enum:
- Router
- Media
- Other
- GPT
- Claude
- Gemini
- Grok
- Cohere
- Nova
- Qwen
- Yi
- DeepSeek
- Mistral
- Llama2
- Llama3
- Llama4
- PaLM
- RWKV
- Qwen3
example: GPT
description: Tokenizer type used by the model
x-speakeasy-unknown-values: allow
InputModality:
type: string
enum:
- text
- image
- file
- audio
- video
example: text
x-speakeasy-unknown-values: allow
OutputModality:
type: string
enum:
- text
- image
- embeddings
example: text
x-speakeasy-unknown-values: allow
ModelArchitecture:
type: object
properties:
tokenizer:
$ref: '#/components/schemas/ModelGroup'
instruct_type:
type: string
nullable: true
enum:
- none
- airoboros
- alpaca
- alpaca-modif
- chatml
- claude
- code-llama
- gemma
- llama2
- llama3
- mistral
- nemotron
- neural
- openchat
- phi3
- rwkv
- vicuna
- zephyr
- deepseek-r1
- deepseek-v3.1
- qwq
- qwen3
example: chatml
description: Instruction format type
x-speakeasy-unknown-values: allow
modality:
type: string
nullable: true
description: Primary modality of the model
example: text->text
input_modalities:
type: array
items:
$ref: '#/components/schemas/InputModality'
description: Supported input modalities
output_modalities:
type: array
items:
$ref: '#/components/schemas/OutputModality'
description: Supported output modalities
required:
- modality
- input_modalities
- output_modalities
description: Model architecture information
example:
tokenizer: GPT
instruct_type: chatml
modality: text->text
input_modalities:
- text
output_modalities:
- text
TopProviderInfo:
type: object
properties:
context_length:
type: number
nullable: true
description: Context length from the top provider
example: 8192
max_completion_tokens:
type: number
nullable: true
description: Maximum completion tokens from the top provider
example: 4096
is_moderated:
type: boolean
description: Whether the top provider moderates content
example: true
required:
- is_moderated
description: Information about the top provider for this model
example:
context_length: 8192
max_completion_tokens: 4096
is_moderated: true
PerRequestLimits:
type: object
nullable: true
properties:
prompt_tokens:
type: number
example: 1000
description: Maximum prompt tokens per request
completion_tokens:
type: number
example: 1000
description: Maximum completion tokens per request
required:
- prompt_tokens
- completion_tokens
description: Per-request token limits
example:
prompt_tokens: 1000
completion_tokens: 1000
Parameter:
type: string
enum:
- temperature
- top_p
- top_k
- min_p
- top_a
- frequency_penalty
- presence_penalty
- repetition_penalty
- max_tokens
- logit_bias
- logprobs
- top_logprobs
- seed
- response_format
- structured_outputs
- stop
- tools
- tool_choice
- parallel_tool_calls
- include_reasoning
- reasoning
- web_search_options
- verbosity
example: temperature
x-speakeasy-unknown-values: allow
DefaultParameters:
type: object
nullable: true
properties:
temperature:
type: number
nullable: true
minimum: 0
maximum: 2
top_p:
type: number
nullable: true
minimum: 0
maximum: 1
frequency_penalty:
type: number
nullable: true
minimum: -2
maximum: 2
additionalProperties: false
description: Default parameters for this model
example:
temperature: 0.7
top_p: 0.9
frequency_penalty: 0
Model:
type: object
properties:
id:
type: string
description: Unique identifier for the model
example: openai/gpt-4
canonical_slug:
type: string
description: Canonical slug for the model
example: openai/gpt-4
hugging_face_id:
type: string
nullable: true
description: Hugging Face model identifier, if applicable
example: microsoft/DialoGPT-medium
name:
type: string
description: Display name of the model
example: GPT-4
created:
type: number
description: Unix timestamp of when the model was created
example: 1692901234
description:
type: string
description: Description of the model
example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
pricing:
$ref: '#/components/schemas/PublicPricing'
context_length:
type: number
nullable: true
description: Maximum context length in tokens
example: 8192
architecture:
$ref: '#/components/schemas/ModelArchitecture'
top_provider:
$ref: '#/components/schemas/TopProviderInfo'
per_request_limits:
$ref: '#/components/schemas/PerRequestLimits'
supported_parameters:
type: array
items:
$ref: '#/components/schemas/Parameter'
description: List of supported parameters for this model
default_parameters:
$ref: '#/components/schemas/DefaultParameters'
required:
- id
- canonical_slug
- name
- created
- pricing
- context_length
- architecture
- top_provider
- per_request_limits
- supported_parameters
- default_parameters
description: Information about an AI model available on OpenRouter
example:
id: openai/gpt-4
canonical_slug: openai/gpt-4
name: GPT-4
created: 1692901234
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
pricing:
prompt: '0.00003'
completion: '0.00006'
request: '0'
image: '0'
context_length: 8192
architecture:
tokenizer: GPT
instruct_type: chatml
modality: text->text
input_modalities:
- text
output_modalities:
- text
top_provider:
context_length: 8192
max_completion_tokens: 4096
is_moderated: true
per_request_limits: null
supported_parameters:
- temperature
- top_p
- max_tokens
default_parameters: null
ModelsListResponseData:
type: array
items:
$ref: '#/components/schemas/Model'
description: List of available models
ModelsListResponse:
type: object
properties:
data:
$ref: '#/components/schemas/ModelsListResponseData'
required:
- data
description: List of available models
example:
data:
- id: openai/gpt-4
canonical_slug: openai/gpt-4
name: GPT-4
created: 1692901234
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
pricing:
prompt: '0.00003'
completion: '0.00006'
request: '0'
image: '0'
context_length: 8192
architecture:
tokenizer: GPT
instruct_type: chatml
modality: text->text
input_modalities:
- text
output_modalities:
- text
top_provider:
context_length: 8192
max_completion_tokens: 4096
is_moderated: true
per_request_limits: null
supported_parameters:
- temperature
- top_p
- max_tokens
- frequency_penalty
- presence_penalty
default_parameters: null
ModelsCountResponse:
type: object
properties:
data:
type: object
properties:
count:
type: number
description: Total number of available models
example: 150
required:
- count
description: Model count data
example:
count: 150
required:
- data
description: Model count data
example:
data:
count: 150
InstructType:
type: string
nullable: true
enum:
- none
- airoboros
- alpaca
- alpaca-modif
- chatml
- claude
- code-llama
- gemma
- llama2
- llama3
- mistral
- nemotron
- neural
- openchat
- phi3
- rwkv
- vicuna
- zephyr
- deepseek-r1
- deepseek-v3.1
- qwq
- qwen3
description: Instruction format type
x-speakeasy-unknown-values: allow
EndpointStatus:
type: integer
enum:
- 0
- -1
- -2
- -3
- -5
- -10
example: 0
x-speakeasy-unknown-values: allow
PublicEndpoint:
type: object
properties:
name:
type: string
model_name:
type: string
context_length:
type: number
pricing:
type: object
properties:
prompt:
$ref: '#/components/schemas/BigNumberUnion'
completion:
$ref: '#/components/schemas/BigNumberUnion'
request:
$ref: '#/components/schemas/BigNumberUnion'
image:
$ref: '#/components/schemas/BigNumberUnion'
image_token:
$ref: '#/components/schemas/BigNumberUnion'
image_output:
$ref: '#/components/schemas/BigNumberUnion'
audio:
$ref: '#/components/schemas/BigNumberUnion'
input_audio_cache:
$ref: '#/components/schemas/BigNumberUnion'
web_search:
$ref: '#/components/schemas/BigNumberUnion'
internal_reasoning:
$ref: '#/components/schemas/BigNumberUnion'
input_cache_read:
$ref: '#/components/schemas/BigNumberUnion'
input_cache_write:
$ref: '#/components/schemas/BigNumberUnion'
discount:
type: number
required:
- prompt
- completion
additionalProperties: false
provider_name:
$ref: '#/components/schemas/ProviderName'
tag:
type: string
quantization:
allOf:
- $ref: '#/components/schemas/Quantization'
- nullable: true
max_completion_tokens:
type: number
nullable: true
max_prompt_tokens:
type: number
nullable: true
supported_parameters:
type: array
items:
$ref: '#/components/schemas/Parameter'
status:
$ref: '#/components/schemas/EndpointStatus'
uptime_last_30m:
type: number
nullable: true
supports_implicit_caching:
type: boolean
required:
- name
- model_name
- context_length
- pricing
- provider_name
- tag
- quantization
- max_completion_tokens
- max_prompt_tokens
- supported_parameters
- uptime_last_30m
- supports_implicit_caching
description: Information about a specific model endpoint
example:
name: 'OpenAI: GPT-4'
model_name: GPT-4
context_length: 8192
pricing:
prompt: '0.00003'
completion: '0.00006'
request: '0'
image: '0'
provider_name: OpenAI
tag: openai
quantization: fp16
max_completion_tokens: 4096
max_prompt_tokens: 8192
supported_parameters:
- temperature
- top_p
- max_tokens
status: 0
uptime_last_30m: 99.5
supports_implicit_caching: true
ListEndpointsResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the model
example: openai/gpt-4
name:
type: string
description: Display name of the model
example: GPT-4
created:
type: number
description: Unix timestamp of when the model was created
example: 1692901234
description:
type: string
description: Description of the model
example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
architecture:
allOf:
- $ref: '#/components/schemas/ModelArchitecture'
- properties:
tokenizer:
allOf:
- $ref: '#/components/schemas/ModelGroup'
- nullable: true
instruct_type:
$ref: '#/components/schemas/InstructType'
modality:
type: string
nullable: true
description: Primary modality of the model
example: text
input_modalities:
type: array
items:
$ref: '#/components/schemas/InputModality'
description: Supported input modalities
output_modalities:
type: array
items:
$ref: '#/components/schemas/OutputModality'
description: Supported output modalities
required:
- tokenizer
- instruct_type
- modality
- input_modalities
- output_modalities
example:
tokenizer: GPT
instruct_type: chatml
modality: text
endpoints:
type: array
items:
$ref: '#/components/schemas/PublicEndpoint'
description: List of available endpoints for this model
required:
- id
- name
- created
- description
- architecture
- endpoints
description: List of available endpoints for a model
example:
id: openai/gpt-4
name: GPT-4
created: 1692901234
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
architecture:
tokenizer: GPT
instruct_type: chatml
modality: text->text
input_modalities:
- text
output_modalities:
- text
endpoints:
- name: 'OpenAI: GPT-4'
model_name: GPT-4
context_length: 8192
pricing:
prompt: '0.00003'
completion: '0.00006'
request: '0'
image: '0'
provider_name: OpenAI
tag: openai
quantization: fp16
max_completion_tokens: 4096
max_prompt_tokens: 8192
supported_parameters:
- temperature
- top_p
- max_tokens
- frequency_penalty
- presence_penalty
status: default
uptime_last_30m: 99.5
supports_implicit_caching: true
__schema0:
anyOf:
- $ref: '#/components/schemas/ChatCompletionFinishReason'
- type: 'null'
ModelName:
type: string
ChatMessageContentItemText:
type: object
properties:
type:
type: string
const: text
text:
type: string
cache_control:
$ref: '#/components/schemas/ChatMessageContentItemCacheControl'
required:
- type
- text
ChatMessageContentItemImage:
type: object
properties:
type:
type: string
const: image_url
image_url:
type: object
properties:
url:
type: string
detail:
type: string
enum:
- auto
- low
- high
x-speakeasy-unknown-values: allow
required:
- url
required:
- type
- image_url
ChatMessageContentItemAudio:
type: object
properties:
type:
type: string
const: input_audio
input_audio:
type: object
properties:
data:
type: string
format:
type: string
required:
- data
- format
required:
- type
- input_audio
ChatMessageContentItemVideo:
oneOf:
- type: object
properties:
type:
type: string
const: input_video
video_url:
type: object
properties:
url:
type: string
required:
- url
required:
- type
- video_url
- type: object
properties:
type:
type: string
const: video_url
video_url:
type: object
properties:
url:
type: string
required:
- url
required:
- type
- video_url
type: object
ChatMessageContentItem:
oneOf:
- $ref: '#/components/schemas/ChatMessageContentItemText'
- $ref: '#/components/schemas/ChatMessageContentItemImage'
- $ref: '#/components/schemas/ChatMessageContentItemAudio'
- $ref: '#/components/schemas/ChatMessageContentItemVideo'
type: object
discriminator:
propertyName: type
mapping:
text: '#/components/schemas/ChatMessageContentItemText'
image_url: '#/components/schemas/ChatMessageContentItemImage'
input_audio: '#/components/schemas/ChatMessageContentItemAudio'
input_video: '#/components/schemas/ChatMessageContentItemVideo'
video_url: '#/components/schemas/ChatMessageContentItemVideo'
ChatMessageToolCall:
type: object
properties:
id:
type: string
type:
type: string
const: function
function:
type: object
properties:
name:
type: string
arguments:
type: string
required:
- name
- arguments
required:
- id
- type
- function
ChatMessageTokenLogprob:
type: object
properties:
token:
type: string
logprob:
type: number
bytes:
anyOf:
- type: array
items:
type: number
- type: 'null'
top_logprobs:
type: array
items:
type: object
properties:
token:
type: string
logprob:
type: number
bytes:
anyOf:
- type: array
items:
type: number
- type: 'null'
required:
- token
- logprob
- bytes
required:
- token
- logprob
- bytes
- top_logprobs
ChatMessageTokenLogprobs:
type: object
properties:
content:
anyOf:
- type: array
items:
$ref: '#/components/schemas/ChatMessageTokenLogprob'
- type: 'null'
refusal:
anyOf:
- type: array
items:
$ref: '#/components/schemas/ChatMessageTokenLogprob'
- type: 'null'
required:
- content
- refusal
ChatGenerationTokenUsage:
type: object
properties:
completion_tokens:
type: number
prompt_tokens:
type: number
total_tokens:
type: number
completion_tokens_details:
anyOf:
- type: object
properties:
reasoning_tokens:
anyOf:
- type: number
- type: 'null'
audio_tokens:
anyOf:
- type: number
- type: 'null'
accepted_prediction_tokens:
anyOf:
- type: number
- type: 'null'
rejected_prediction_tokens:
anyOf:
- type: number
- type: 'null'
- type: 'null'
prompt_tokens_details:
anyOf:
- type: object
properties:
cached_tokens:
type: number
audio_tokens:
type: number
video_tokens:
type: number
- type: 'null'
required:
- completion_tokens
- prompt_tokens
- total_tokens
ChatCompletionFinishReason:
type: string
enum:
- tool_calls
- stop
- length
- content_filter
- error
x-speakeasy-unknown-values: allow
JSONSchemaConfig:
type: object
properties:
name:
type: string
maxLength: 64
description:
type: string
schema:
type: object
propertyNames:
type: string
additionalProperties: {}
strict:
anyOf:
- type: boolean
- type: 'null'
required:
- name
ResponseFormatJSONSchema:
type: object
properties:
type:
type: string
const: json_schema
json_schema:
$ref: '#/components/schemas/JSONSchemaConfig'
required:
- type
- json_schema
ResponseFormatTextGrammar:
type: object
properties:
type:
type: string
const: grammar
grammar:
type: string
required:
- type
- grammar
ChatMessageContentItemCacheControl:
type: object
properties:
type:
type: string
const: ephemeral
ttl:
type: string
enum:
- 5m
- 1h
x-speakeasy-unknown-values: allow
required:
- type
SystemMessage:
type: object
properties:
role:
type: string
const: system
content:
anyOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/ChatMessageContentItemText'
name:
type: string
required:
- role
- content
UserMessage:
type: object
properties:
role:
type: string
const: user
content:
anyOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/ChatMessageContentItem'
name:
type: string
required:
- role
- content
AssistantMessage:
type: object
properties:
role:
type: string
const: assistant
content:
anyOf:
- anyOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/ChatMessageContentItem'
- type: 'null'
name:
type: string
tool_calls:
type: array
items:
$ref: '#/components/schemas/ChatMessageToolCall'
refusal:
anyOf:
- type: string
- type: 'null'
reasoning:
anyOf:
- type: string
- type: 'null'
required:
- role
ToolResponseMessage:
type: object
properties:
role:
type: string
const: tool
content:
anyOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/ChatMessageContentItem'
tool_call_id:
type: string
required:
- role
- content
- tool_call_id
Message:
oneOf:
- $ref: '#/components/schemas/SystemMessage'
- $ref: '#/components/schemas/UserMessage'
- type: object
properties:
role:
type: string
const: developer
content:
anyOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/ChatMessageContentItemText'
name:
type: string
required:
- role
- content
- $ref: '#/components/schemas/AssistantMessage'
- $ref: '#/components/schemas/ToolResponseMessage'
type: object
ToolDefinitionJson:
type: object
properties:
type:
type: string
const: function
function:
type: object
properties:
name:
type: string
maxLength: 64
description:
type: string
parameters:
type: object
propertyNames:
type: string
additionalProperties: {}
strict:
anyOf:
- type: boolean
- type: 'null'
required:
- name
required:
- type
- function
NamedToolChoice:
type: object
properties:
type:
type: string
const: function
function:
type: object
properties:
name:
type: string
required:
- name
required:
- type
- function
ToolChoiceOption:
anyOf:
- type: string
const: none
- type: string
const: auto
- type: string
const: required
- $ref: '#/components/schemas/NamedToolChoice'
ChatStreamOptions:
type: object
properties:
include_usage:
type: boolean
ChatGenerationParams:
type: object
properties:
messages:
minItems: 1
type: array
items:
$ref: '#/components/schemas/Message'
model:
$ref: '#/components/schemas/ModelName'
models:
type: array
items:
$ref: '#/components/schemas/ModelName'
frequency_penalty:
anyOf:
- type: number
minimum: -2
maximum: 2
- type: 'null'
logit_bias:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties:
type: number
- type: 'null'
logprobs:
anyOf:
- type: boolean
- type: 'null'
top_logprobs:
anyOf:
- type: number
minimum: 0
maximum: 20
- type: 'null'
max_completion_tokens:
anyOf:
- type: number
minimum: 1
- type: 'null'
max_tokens:
anyOf:
- type: number
minimum: 1
- type: 'null'
metadata:
type: object
propertyNames:
type: string
additionalProperties:
type: string
presence_penalty:
anyOf:
- type: number
minimum: -2
maximum: 2
- type: 'null'
reasoning:
type: object
properties:
effort:
anyOf:
- type: string
enum:
- none
- minimal
- low
- medium
- high
x-speakeasy-unknown-values: allow
- type: 'null'
summary:
anyOf:
- $ref: '#/components/schemas/ReasoningSummaryVerbosity'
- type: 'null'
response_format:
oneOf:
- type: object
properties:
type:
type: string
const: text
required:
- type
- type: object
properties:
type:
type: string
const: json_object
required:
- type
- $ref: '#/components/schemas/ResponseFormatJSONSchema'
- $ref: '#/components/schemas/ResponseFormatTextGrammar'
- type: object
properties:
type:
type: string
const: python
required:
- type
type: object
seed:
anyOf:
- type: integer
minimum: -9007199254740991
maximum: 9007199254740991
- type: 'null'
stop:
anyOf:
- anyOf:
- type: string
- maxItems: 4
type: array
items:
type: string
- type: 'null'
stream:
default: false
type: boolean
stream_options:
anyOf:
- $ref: '#/components/schemas/ChatStreamOptions'
- type: 'null'
temperature:
default: 1
anyOf:
- type: number
minimum: 0
maximum: 2
- type: 'null'
tool_choice:
$ref: '#/components/schemas/ToolChoiceOption'
tools:
type: array
items:
$ref: '#/components/schemas/ToolDefinitionJson'
top_p:
default: 1
anyOf:
- type: number
minimum: 0
maximum: 1
- type: 'null'
user:
type: string
debug:
type: object
properties:
echo_upstream_body:
type: boolean
required:
- messages
ChatResponseChoice:
type: object
properties:
finish_reason:
$ref: '#/components/schemas/__schema0'
index:
type: number
message:
$ref: '#/components/schemas/AssistantMessage'
logprobs:
anyOf:
- $ref: '#/components/schemas/ChatMessageTokenLogprobs'
- type: 'null'
required:
- finish_reason
- index
- message
ChatStreamingMessageToolCall:
type: object
properties:
index:
type: number
id:
type: string
type:
type: string
const: function
function:
type: object
properties:
name:
type: string
arguments:
type: string
required:
- index
ChatStreamingMessageChunk:
type: object
properties:
role:
type: string
enum:
- assistant
content:
anyOf:
- type: string
- type: 'null'
reasoning:
anyOf:
- type: string
- type: 'null'
refusal:
anyOf:
- type: string
- type: 'null'
tool_calls:
type: array
items:
$ref: '#/components/schemas/ChatStreamingMessageToolCall'
ChatStreamingChoice:
type: object
properties:
delta:
$ref: '#/components/schemas/ChatStreamingMessageChunk'
finish_reason:
$ref: '#/components/schemas/__schema0'
index:
type: number
logprobs:
anyOf:
- $ref: '#/components/schemas/ChatMessageTokenLogprobs'
- type: 'null'
required:
- delta
- finish_reason
- index
ChatError:
type: object
properties:
error:
type: object
properties:
code:
anyOf:
- anyOf:
- type: string
- type: number
- type: 'null'
message:
type: string
param:
anyOf:
- type: string
- type: 'null'
type:
anyOf:
- type: string
- type: 'null'
required:
- code
- message
additionalProperties: false
required:
- error
additionalProperties: false
ChatResponse:
type: object
properties:
id:
type: string
choices:
type: array
items:
$ref: '#/components/schemas/ChatResponseChoice'
created:
type: number
model:
type: string
object:
type: string
const: chat.completion
system_fingerprint:
anyOf:
- type: string
- type: 'null'
usage:
$ref: '#/components/schemas/ChatGenerationTokenUsage'
required:
- id
- choices
- created
- model
- object
additionalProperties: false
ChatStreamingResponseChunk:
type: object
properties:
data:
type: object
properties:
id:
type: string
choices:
type: array
items:
$ref: '#/components/schemas/ChatStreamingChoice'
created:
type: number
model:
type: string
object:
type: string
const: chat.completion.chunk
system_fingerprint:
anyOf:
- type: string
- type: 'null'
error:
type: object
properties:
message:
type: string
code:
type: number
required:
- message
- code
additionalProperties: false
usage:
$ref: '#/components/schemas/ChatGenerationTokenUsage'
required:
- id
- choices
- created
- model
- object
additionalProperties: false
required:
- data
additionalProperties: false
CompletionFinishReason:
anyOf:
- type: string
enum:
- stop
- length
- content_filter
x-speakeasy-unknown-values: allow
- type: 'null'
CompletionLogprobs:
type: object
properties:
tokens:
type: array
items:
type: string
token_logprobs:
type: array
items:
type: number
top_logprobs:
anyOf:
- type: array
items:
type: object
propertyNames:
type: string
additionalProperties:
type: number
- type: 'null'
text_offset:
type: array
items:
type: number
required:
- tokens
- token_logprobs
- top_logprobs
- text_offset
CompletionUsage:
type: object
properties:
prompt_tokens:
type: number
completion_tokens:
type: number
total_tokens:
type: number
required:
- prompt_tokens
- completion_tokens
- total_tokens
CompletionCreateParams:
type: object
properties:
model:
$ref: '#/components/schemas/ModelName'
models:
type: array
items:
$ref: '#/components/schemas/ModelName'
prompt:
anyOf:
- type: string
- type: array
items:
type: string
- type: array
items:
type: number
- type: array
items:
type: array
items:
type: number
best_of:
anyOf:
- type: integer
minimum: 1
maximum: 20
- type: 'null'
echo:
anyOf:
- type: boolean
- type: 'null'
frequency_penalty:
anyOf:
- type: number
minimum: -2
maximum: 2
- type: 'null'
logit_bias:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties:
type: number
- type: 'null'
logprobs:
anyOf:
- type: integer
minimum: 0
maximum: 5
- type: 'null'
max_tokens:
anyOf:
- type: integer
minimum: 1
maximum: 9007199254740991
- type: 'null'
'n':
anyOf:
- type: integer
minimum: 1
maximum: 128
- type: 'null'
presence_penalty:
anyOf:
- type: number
minimum: -2
maximum: 2
- type: 'null'
seed:
anyOf:
- type: integer
minimum: -9007199254740991
maximum: 9007199254740991
- type: 'null'
stop:
anyOf:
- anyOf:
- type: string
- type: array
items:
type: string
- type: 'null'
stream:
default: false
type: boolean
stream_options:
anyOf:
- type: object
properties:
include_usage:
anyOf:
- type: boolean
- type: 'null'
- type: 'null'
suffix:
anyOf:
- type: string
- type: 'null'
temperature:
anyOf:
- type: number
minimum: 0
maximum: 2
- type: 'null'
top_p:
anyOf:
- type: number
minimum: 0
maximum: 1
- type: 'null'
user:
type: string
metadata:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties:
type: string
- type: 'null'
response_format:
anyOf:
- oneOf:
- type: object
properties:
type:
type: string
const: text
required:
- type
- type: object
properties:
type:
type: string
const: json_object
required:
- type
- $ref: '#/components/schemas/ResponseFormatJSONSchema'
- $ref: '#/components/schemas/ResponseFormatTextGrammar'
- type: object
properties:
type:
type: string
const: python
required:
- type
type: object
- type: 'null'
required:
- prompt
CompletionChoice:
type: object
properties:
text:
type: string
index:
type: number
logprobs:
anyOf:
- $ref: '#/components/schemas/CompletionLogprobs'
- type: 'null'
finish_reason:
$ref: '#/components/schemas/CompletionFinishReason'
native_finish_reason:
type: string
reasoning:
anyOf:
- type: string
- type: 'null'
required:
- text
- index
- logprobs
- finish_reason
CompletionResponse:
type: object
properties:
id:
type: string
object:
type: string
const: text_completion
created:
type: number
model:
type: string
provider:
type: string
system_fingerprint:
type: string
choices:
type: array
items:
$ref: '#/components/schemas/CompletionChoice'
usage:
$ref: '#/components/schemas/CompletionUsage'
required:
- id
- object
- created
- model
- choices
additionalProperties: false
parameters: {AppIdentifier: {name: HTTP-Referer, in: header, schema: {type: string}, description: "The app identifier should be your app's URL and is used as the primary identifier for rankings.\nThis is used to track API usage per application.\n"}, AppDisplayName: {name: X-Title, in: header, schema: {type: string}, description: "The app display name allows you to customize how your app appears in OpenRouter's dashboard.\n"}}
securitySchemes:
apiKey:
type: http
scheme: bearer
description: API key as bearer token in Authorization header
bearer:
type: http
scheme: bearer
description: API key as bearer token in Authorization header
paths:
/responses:
post:
x-speakeasy-name-override: send
x-speakeasy-stream-request-field: stream
tags:
- beta.responses
summary: Create a response
description: Creates a streaming or non-streaming response using OpenResponses API format
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OpenResponsesRequest'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
text/event-stream:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OpenResponsesStreamEvent'
required:
- data
x-speakeasy-sse-sentinel: '[DONE]'
'400':
description: Bad Request - Invalid request parameters or malformed input
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'402':
description: Payment Required - Insufficient credits or quota to complete request
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
'404':
description: Not Found - Resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'408':
description: Request Timeout - Operation exceeded time limit
content:
application/json:
schema:
$ref: '#/components/schemas/RequestTimeoutResponse'
'413':
description: Payload Too Large - Request payload exceeds size limits
content:
application/json:
schema:
$ref: '#/components/schemas/PayloadTooLargeResponse'
'422':
description: Unprocessable Entity - Semantic validation failure
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
'502':
description: Bad Gateway - Provider/upstream API failure
content:
application/json:
schema:
$ref: '#/components/schemas/BadGatewayResponse'
'503':
description: Service Unavailable - Service temporarily unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
'524':
description: Infrastructure Timeout - Request timed out at our edge network
content:
application/json:
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
'529':
description: Provider Overloaded - Provider is temporarily overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
operationId: createResponses
/activity:
get:
tags:
- Analytics
operationId: getUserActivity
summary: Get user activity grouped by endpoint
description: Returns user activity data grouped by endpoint for the last 30 (completed) UTC days
parameters:
- schema:
type: string
description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
example: '2025-08-24'
required: false
description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
name: date
in: query
responses:
'200':
description: Returns user activity data grouped by endpoint
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ActivityItem'
description: List of activity items
required:
- data
example:
data:
- date: '2025-08-24'
model: openai/gpt-4.1
model_permaslug: openai/gpt-4.1-2025-04-14
endpoint_id: 550e8400-e29b-41d4-a716-446655440000
provider_name: OpenAI
usage: 0.015
byok_usage_inference: 0.012
requests: 5
prompt_tokens: 50
completion_tokens: 125
reasoning_tokens: 25
'400':
description: Bad Request - Invalid date format or date range
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden - Only provisioning keys can fetch activity
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/credits:
get:
x-speakeasy-name-override: getCredits
tags:
- Credits
summary: Get remaining credits
operationId: getCredits
description: Get total credits purchased and used for the authenticated user
responses:
'200':
description: Returns the total credits purchased and used
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
total_credits:
type: number
description: Total credits purchased
example: 100.5
total_usage:
type: number
description: Total credits used
example: 25.75
required:
- total_credits
- total_usage
example:
total_credits: 100.5
total_usage: 25.75
required:
- data
description: Total credits purchased and used
example:
data:
total_credits: 100.5
total_usage: 25.75
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden - Only provisioning keys can fetch credits
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/credits/coinbase:
post:
security:
- bearer: []
x-speakeasy-name-override: createCoinbaseCharge
tags:
- Credits
summary: Create a Coinbase charge for crypto payment
operationId: createCoinbaseCharge
description: Create a Coinbase charge for crypto payment
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChargeRequest'
required: true
responses:
'200':
description: Returns the calldata to fulfill the transaction
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
created_at:
type: string
expires_at:
type: string
web3_data:
type: object
properties:
transfer_intent:
type: object
properties:
call_data:
type: object
properties:
deadline:
type: string
fee_amount:
type: string
id:
type: string
operator:
type: string
prefix:
type: string
recipient:
type: string
recipient_amount:
type: string
recipient_currency:
type: string
refund_destination:
type: string
signature:
type: string
required:
- deadline
- fee_amount
- id
- operator
- prefix
- recipient
- recipient_amount
- recipient_currency
- refund_destination
- signature
metadata:
type: object
properties:
chain_id:
type: number
contract_address:
type: string
sender:
type: string
required:
- chain_id
- contract_address
- sender
required:
- call_data
- metadata
required:
- transfer_intent
required:
- id
- created_at
- expires_at
- web3_data
required:
- data
'400':
description: Bad Request - Invalid credit amount or request body
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/embeddings:
post:
x-speakeasy-name-override: generate
tags:
- Embeddings
summary: Submit an embedding request
description: Submits an embedding request to the embeddings router
requestBody:
content:
application/json:
schema:
type: object
properties:
input:
anyOf:
- type: string
- type: array
items:
type: string
- type: array
items:
type: number
- type: array
items:
type: array
items:
type: number
- type: array
items:
type: object
properties:
content:
type: array
items:
oneOf:
- type: object
properties:
type:
type: string
enum:
- text
text:
type: string
required:
- type
- text
- type: object
properties:
type:
type: string
enum:
- image_url
image_url:
type: object
properties:
url:
type: string
required:
- url
required:
- type
- image_url
required:
- content
model:
type: string
encoding_format:
type: string
enum:
- float
- base64
x-speakeasy-unknown-values: allow
dimensions:
type: integer
minimum: 0
exclusiveMinimum: true
user:
type: string
provider:
type: object
properties:
allow_fallbacks:
type: boolean
nullable: true
description: >
Whether to allow backup providers to serve requests
- true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the next best provider.
- false: use only the primary/custom provider, and return the upstream error if it's unavailable.
require_parameters:
type: boolean
nullable: true
description: >-
Whether to filter providers to only those that support the parameters you've provided. If this setting is omitted or set to false, then providers will receive only the parameters they support, and ignore the rest.
data_collection:
$ref: '#/components/schemas/DataCollection'
zdr:
type: boolean
nullable: true
description: >-
Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do not retain prompts will be used.
example: true
enforce_distillable_text:
type: boolean
nullable: true
description: >-
Whether to restrict routing to only models that allow text distillation. When true, only models where the author has allowed distillation will be used.
example: true
order:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message.
only:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request.
ignore:
type: array
nullable: true
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
description: >-
List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request.
quantizations:
type: array
nullable: true
items:
$ref: '#/components/schemas/Quantization'
description: A list of quantization levels to filter the provider by.
sort:
$ref: '#/components/schemas/ProviderSort'
max_price:
type: object
properties:
prompt:
$ref: '#/components/schemas/BigNumberUnion'
completion:
$ref: '#/components/schemas/BigNumberUnion'
image:
$ref: '#/components/schemas/BigNumberUnion'
audio:
$ref: '#/components/schemas/BigNumberUnion'
request:
$ref: '#/components/schemas/BigNumberUnion'
additionalProperties: false
description: >-
The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion.
input_type:
type: string
required:
- input
- model
required: true
responses:
'200':
description: Embedding response
content:
application/json:
schema:
type: object
properties:
id:
type: string
object:
type: string
enum:
- list
data:
type: array
items:
type: object
properties:
object:
type: string
enum:
- embedding
embedding:
anyOf:
- type: array
items:
type: number
- type: string
index:
type: number
required:
- object
- embedding
model:
type: string
usage:
type: object
properties:
prompt_tokens:
type: number
total_tokens:
type: number
cost:
type: number
required:
- prompt_tokens
- total_tokens
required:
- object
- data
- model
'400':
description: Bad Request - Invalid request parameters or malformed input
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'402':
description: Payment Required - Insufficient credits or quota to complete request
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
'404':
description: Not Found - Resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
'502':
description: Bad Gateway - Provider/upstream API failure
content:
application/json:
schema:
$ref: '#/components/schemas/BadGatewayResponse'
'503':
description: Service Unavailable - Service temporarily unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
'524':
description: Cloudflare Timeout - Provider request timed out at CDN edge
content:
application/json:
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
'529':
description: Provider Overloaded - Provider is temporarily overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
operationId: createEmbeddings
/embeddings/models:
get:
tags:
- Embeddings
x-speakeasy-name-override: listModels
summary: List all embeddings models
description: Returns a list of all available embeddings models and their properties
responses:
'200':
description: Returns a list of embeddings models
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsListResponse'
'400':
description: Bad Request - Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: listEmbeddingsModels
/generation:
get:
tags:
- Generations
summary: Get request & usage metadata for a generation
parameters:
- schema:
type: string
minLength: 1
required: true
name: id
in: query
responses:
'200':
description: Returns the request metadata for this generation
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique identifier for the generation
example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
upstream_id:
type: string
nullable: true
description: Upstream provider's identifier for this generation
example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
total_cost:
type: number
description: Total cost of the generation in USD
example: 0.0015
cache_discount:
type: number
nullable: true
description: Discount applied due to caching
example: 0.0002
upstream_inference_cost:
type: number
nullable: true
description: Cost charged by the upstream provider
example: 0.0012
created_at:
type: string
description: ISO 8601 timestamp of when the generation was created
example: '2024-07-15T23:33:19.433273+00:00'
model:
type: string
description: Model used for the generation
example: sao10k/l3-stheno-8b
app_id:
type: number
nullable: true
description: ID of the app that made the request
example: 12345
streamed:
type: boolean
nullable: true
description: Whether the response was streamed
example: true
cancelled:
type: boolean
nullable: true
description: Whether the generation was cancelled
example: false
provider_name:
type: string
nullable: true
description: Name of the provider that served the request
example: Infermatic
latency:
type: number
nullable: true
description: Total latency in milliseconds
example: 1250
moderation_latency:
type: number
nullable: true
description: Moderation latency in milliseconds
example: 50
generation_time:
type: number
nullable: true
description: Time taken for generation in milliseconds
example: 1200
finish_reason:
type: string
nullable: true
description: Reason the generation finished
example: stop
tokens_prompt:
type: number
nullable: true
description: Number of tokens in the prompt
example: 10
tokens_completion:
type: number
nullable: true
description: Number of tokens in the completion
example: 25
native_tokens_prompt:
type: number
nullable: true
description: Native prompt tokens as reported by provider
example: 10
native_tokens_completion:
type: number
nullable: true
description: Native completion tokens as reported by provider
example: 25
native_tokens_completion_images:
type: number
nullable: true
description: Native completion image tokens as reported by provider
example: 0
native_tokens_reasoning:
type: number
nullable: true
description: Native reasoning tokens as reported by provider
example: 5
native_tokens_cached:
type: number
nullable: true
description: Native cached tokens as reported by provider
example: 3
num_media_prompt:
type: number
nullable: true
description: Number of media items in the prompt
example: 1
num_input_audio_prompt:
type: number
nullable: true
description: Number of audio inputs in the prompt
example: 0
num_media_completion:
type: number
nullable: true
description: Number of media items in the completion
example: 0
num_search_results:
type: number
nullable: true
description: Number of search results included
example: 5
origin:
type: string
description: Origin URL of the request
example: https://openrouter.ai/
usage:
type: number
description: Usage amount in USD
example: 0.0015
is_byok:
type: boolean
description: Whether this used bring-your-own-key
example: false
native_finish_reason:
type: string
nullable: true
description: Native finish reason as reported by provider
example: stop
external_user:
type: string
nullable: true
description: External user identifier
example: user-123
api_type:
type: string
nullable: true
enum:
- completions
- embeddings
description: Type of API used for the generation
x-speakeasy-unknown-values: allow
required:
- id
- upstream_id
- total_cost
- cache_discount
- upstream_inference_cost
- created_at
- model
- app_id
- streamed
- cancelled
- provider_name
- latency
- moderation_latency
- generation_time
- finish_reason
- tokens_prompt
- tokens_completion
- native_tokens_prompt
- native_tokens_completion
- native_tokens_completion_images
- native_tokens_reasoning
- native_tokens_cached
- num_media_prompt
- num_input_audio_prompt
- num_media_completion
- num_search_results
- origin
- usage
- is_byok
- native_finish_reason
- external_user
- api_type
description: Generation data
required:
- data
description: Generation response
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'402':
description: Payment Required - Insufficient credits or quota to complete request
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
'404':
description: Not Found - Generation not found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
'502':
description: Bad Gateway - Provider/upstream API failure
content:
application/json:
schema:
$ref: '#/components/schemas/BadGatewayResponse'
'524':
description: Infrastructure Timeout - Request timed out at our edge network
content:
application/json:
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
'529':
description: Provider Overloaded - Provider is temporarily overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
operationId: getGeneration
/models/count:
get:
tags:
- Models
x-speakeasy-name-override: count
summary: Get total count of available models
responses:
'200':
description: Returns the total count of available models
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsCountResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: listModelsCount
/models:
get:
tags:
- Models
x-speakeasy-name-override: list
summary: List all models and their properties
parameters:
- schema:
type: string
required: false
name: category
in: query
- schema:
type: string
required: false
name: supported_parameters
in: query
responses:
'200':
description: Returns a list of models or RSS feed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsListResponse'
'400':
description: Bad Request - Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: getModels
/models/user:
get:
tags:
- Models
x-speakeasy-name-override: listForUser
summary: List models filtered by user provider preferences
security:
- bearer: []
responses:
'200':
description: Returns a list of models filtered by user provider preferences
content:
application/json:
schema:
$ref: '#/components/schemas/ModelsListResponse'
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: listModelsUser
/models/{author}/{slug}/endpoints:
get:
tags:
- Endpoints
operationId: listEndpoints
x-speakeasy-name-override: list
summary: List all endpoints for a model
parameters:
- schema:
type: string
required: true
name: author
in: path
- schema:
type: string
required: true
name: slug
in: path
responses:
'200':
description: Returns a list of endpoints
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ListEndpointsResponse'
required:
- data
'404':
description: Not Found - Model does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/endpoints/zdr:
get:
tags:
- Endpoints
x-speakeasy-name-override: listZdrEndpoints
summary: Preview the impact of ZDR on the available endpoints
responses:
'200':
description: Returns a list of endpoints
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PublicEndpoint'
required:
- data
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: listEndpointsZdr
/parameters/{author}/{slug}:
get:
tags:
- Parameters
summary: Get a model's supported parameters and data about which are most popular
security:
- bearer: []
parameters:
- schema:
type: string
required: true
name: author
in: path
- schema:
type: string
required: true
name: slug
in: path
- schema:
type: string
enum:
- AI21
- AionLabs
- Alibaba
- Amazon Bedrock
- Amazon Nova
- Anthropic
- Arcee AI
- AtlasCloud
- Avian
- Azure
- BaseTen
- BytePlus
- Black Forest Labs
- Cerebras
- Chutes
- Cirrascale
- Clarifai
- Cloudflare
- Cohere
- Crusoe
- DeepInfra
- DeepSeek
- Featherless
- Fireworks
- Friendli
- GMICloud
- GoPomelo
- Google
- Google AI Studio
- Groq
- Hyperbolic
- Inception
- InferenceNet
- Infermatic
- Inflection
- Liquid
- Mancer 2
- Minimax
- ModelRun
- Mistral
- Modular
- Moonshot AI
- Morph
- NCompass
- Nebius
- NextBit
- Novita
- Nvidia
- OpenAI
- OpenInference
- Parasail
- Perplexity
- Phala
- Relace
- SambaNova
- SiliconFlow
- Stealth
- StreamLake
- Switchpoint
- Targon
- Together
- Venice
- WandB
- xAI
- Z.AI
- FakeProvider
x-speakeasy-unknown-values: allow
required: false
name: provider
in: query
responses:
'200':
description: Returns the parameters for the specified model
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
model:
type: string
description: Model identifier
example: openai/gpt-4
supported_parameters:
type: array
items:
type: string
enum:
- temperature
- top_p
- top_k
- min_p
- top_a
- frequency_penalty
- presence_penalty
- repetition_penalty
- max_tokens
- logit_bias
- logprobs
- top_logprobs
- seed
- response_format
- structured_outputs
- stop
- tools
- tool_choice
- parallel_tool_calls
- include_reasoning
- reasoning
- web_search_options
- verbosity
x-speakeasy-unknown-values: allow
description: List of parameters supported by this model
example:
- temperature
- top_p
- max_tokens
required:
- model
- supported_parameters
example:
model: openai/gpt-4
supported_parameters:
- temperature
- top_p
- max_tokens
description: Parameter analytics data
required:
- data
example:
data:
model: openai/gpt-4
supported_parameters:
- temperature
- top_p
- max_tokens
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'404':
description: Not Found - Model or provider does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: getParameters
/providers:
get:
tags:
- Providers
x-speakeasy-name-override: list
summary: List all providers
operationId: listProviders
responses:
'200':
description: Returns a list of providers
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
name:
type: string
description: Display name of the provider
example: OpenAI
slug:
type: string
description: URL-friendly identifier for the provider
example: openai
privacy_policy_url:
type: string
nullable: true
description: URL to the provider's privacy policy
example: https://openai.com/privacy
terms_of_service_url:
type: string
nullable: true
description: URL to the provider's terms of service
example: https://openai.com/terms
status_page_url:
type: string
nullable: true
description: URL to the provider's status page
example: https://status.openai.com
required:
- name
- slug
- privacy_policy_url
example:
name: OpenAI
slug: openai
privacy_policy_url: https://openai.com/privacy
terms_of_service_url: https://openai.com/terms
status_page_url: https://status.openai.com
required:
- data
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/keys:
get:
operationId: list
x-speakeasy-name-override: list
tags:
- API Keys
summary: List API keys
parameters:
- schema:
type: string
description: Whether to include disabled API keys in the response
example: 'false'
required: false
description: Whether to include disabled API keys in the response
name: include_disabled
in: query
- schema:
type: string
description: Number of API keys to skip for pagination
example: '0'
required: false
description: Number of API keys to skip for pagination
name: offset
in: query
responses:
'200':
description: List of API keys
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
hash:
type: string
description: Unique hash identifier for the API key
example: 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
name:
type: string
description: Name of the API key
example: My Production Key
label:
type: string
description: Human-readable label for the API key
example: Production API Key
disabled:
type: boolean
description: Whether the API key is disabled
example: false
limit:
type: number
nullable: true
description: Spending limit for the API key in USD
example: 100
limit_remaining:
type: number
nullable: true
description: Remaining spending limit in USD
example: 74.5
limit_reset:
type: string
nullable: true
description: Type of limit reset for the API key
example: monthly
include_byok_in_limit:
type: boolean
description: Whether to include external BYOK usage in the credit limit
example: false
usage:
type: number
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
usage_daily:
type: number
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
usage_weekly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
usage_monthly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
byok_usage:
type: number
description: Total external BYOK usage (in USD) for the API key
example: 17.38
byok_usage_daily:
type: number
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
byok_usage_weekly:
type: number
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
byok_usage_monthly:
type: number
description: External BYOK usage (in USD) for current UTC month
example: 17.38
created_at:
type: string
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
updated_at:
type: string
nullable: true
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
expires_at:
type: string
nullable: true
format: date-time
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
required:
- hash
- name
- label
- disabled
- limit
- limit_remaining
- limit_reset
- include_byok_in_limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- created_at
- updated_at
example:
hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
description: List of API keys
required:
- data
example:
data:
- hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
post:
x-speakeasy-name-override: create
tags:
- API Keys
summary: Create a new API key
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
minLength: 1
description: Name for the new API key
example: My New API Key
limit:
type: number
nullable: true
description: Optional spending limit for the API key in USD
example: 50
limit_reset:
type: string
nullable: true
enum:
- daily
- weekly
- monthly
description: >-
Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday.
example: monthly
x-speakeasy-unknown-values: allow
include_byok_in_limit:
type: boolean
description: Whether to include BYOK usage in the limit
example: true
expires_at:
type: string
nullable: true
format: date-time
description: >-
Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected
example: '2027-12-31T23:59:59Z'
required:
- name
example:
name: My New API Key
limit: 50
limit_reset: monthly
include_byok_in_limit: true
expires_at: '2027-12-31T23:59:59Z'
required: true
responses:
'201':
description: API key created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
hash:
type: string
description: Unique hash identifier for the API key
example: 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
name:
type: string
description: Name of the API key
example: My Production Key
label:
type: string
description: Human-readable label for the API key
example: Production API Key
disabled:
type: boolean
description: Whether the API key is disabled
example: false
limit:
type: number
nullable: true
description: Spending limit for the API key in USD
example: 100
limit_remaining:
type: number
nullable: true
description: Remaining spending limit in USD
example: 74.5
limit_reset:
type: string
nullable: true
description: Type of limit reset for the API key
example: monthly
include_byok_in_limit:
type: boolean
description: Whether to include external BYOK usage in the credit limit
example: false
usage:
type: number
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
usage_daily:
type: number
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
usage_weekly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
usage_monthly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
byok_usage:
type: number
description: Total external BYOK usage (in USD) for the API key
example: 17.38
byok_usage_daily:
type: number
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
byok_usage_weekly:
type: number
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
byok_usage_monthly:
type: number
description: External BYOK usage (in USD) for current UTC month
example: 17.38
created_at:
type: string
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
updated_at:
type: string
nullable: true
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
expires_at:
type: string
nullable: true
format: date-time
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
required:
- hash
- name
- label
- disabled
- limit
- limit_remaining
- limit_reset
- include_byok_in_limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- created_at
- updated_at
example:
hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
description: The created API key information
key:
type: string
description: The actual API key string (only shown once)
example: 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
required:
- data
- key
example:
data:
hash: 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
name: My New API Key
label: My New API Key
disabled: false
limit: 50
limit_remaining: 50
limit_reset: monthly
include_byok_in_limit: true
usage: 0
usage_daily: 0
usage_weekly: 0
usage_monthly: 0
byok_usage: 0
byok_usage_daily: 0
byok_usage_weekly: 0
byok_usage_monthly: 0
created_at: '2025-08-24T10:30:00Z'
updated_at: null
expires_at: '2027-12-31T23:59:59Z'
key: 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
'400':
description: Bad Request - Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: createKeys
/keys/{hash}:
patch:
x-speakeasy-name-override: update
tags:
- API Keys
summary: Update an API key
parameters:
- schema:
type: string
description: The hash identifier of the API key to update
example: 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
required: true
description: The hash identifier of the API key to update
name: hash
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: New name for the API key
example: Updated API Key Name
disabled:
type: boolean
description: Whether to disable the API key
example: false
limit:
type: number
nullable: true
description: New spending limit for the API key in USD
example: 75
limit_reset:
type: string
nullable: true
enum:
- daily
- weekly
- monthly
description: >-
New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday.
example: daily
x-speakeasy-unknown-values: allow
include_byok_in_limit:
type: boolean
description: Whether to include BYOK usage in the limit
example: true
example:
name: Updated API Key Name
disabled: false
limit: 75
limit_reset: daily
include_byok_in_limit: true
required: true
responses:
'200':
description: API key updated successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
hash:
type: string
description: Unique hash identifier for the API key
example: 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
name:
type: string
description: Name of the API key
example: My Production Key
label:
type: string
description: Human-readable label for the API key
example: Production API Key
disabled:
type: boolean
description: Whether the API key is disabled
example: false
limit:
type: number
nullable: true
description: Spending limit for the API key in USD
example: 100
limit_remaining:
type: number
nullable: true
description: Remaining spending limit in USD
example: 74.5
limit_reset:
type: string
nullable: true
description: Type of limit reset for the API key
example: monthly
include_byok_in_limit:
type: boolean
description: Whether to include external BYOK usage in the credit limit
example: false
usage:
type: number
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
usage_daily:
type: number
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
usage_weekly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
usage_monthly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
byok_usage:
type: number
description: Total external BYOK usage (in USD) for the API key
example: 17.38
byok_usage_daily:
type: number
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
byok_usage_weekly:
type: number
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
byok_usage_monthly:
type: number
description: External BYOK usage (in USD) for current UTC month
example: 17.38
created_at:
type: string
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
updated_at:
type: string
nullable: true
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
expires_at:
type: string
nullable: true
format: date-time
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
required:
- hash
- name
- label
- disabled
- limit
- limit_remaining
- limit_reset
- include_byok_in_limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- created_at
- updated_at
example:
hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
description: The updated API key information
required:
- data
example:
data:
hash: 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
name: Updated API Key Name
label: Updated API Key Name
disabled: false
limit: 75
limit_remaining: 49.5
limit_reset: daily
include_byok_in_limit: true
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T16:00:00Z'
expires_at: null
'400':
description: Bad Request - Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'404':
description: Not Found - API key does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: updateKeys
delete:
x-speakeasy-name-override: delete
tags:
- API Keys
summary: Delete an API key
parameters:
- schema:
type: string
description: The hash identifier of the API key to delete
example: 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
required: true
description: The hash identifier of the API key to delete
name: hash
in: path
responses:
'200':
description: API key deleted successfully
content:
application/json:
schema:
type: object
properties:
deleted:
type: boolean
const: true
description: Confirmation that the API key was deleted
example: true
required:
- deleted
example:
deleted: true
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'404':
description: Not Found - API key does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: deleteKeys
get:
operationId: getKey
x-speakeasy-name-override: get
tags:
- API Keys
summary: Get a single API key
parameters:
- schema:
type: string
description: The hash identifier of the API key to retrieve
example: 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
required: true
description: The hash identifier of the API key to retrieve
name: hash
in: path
responses:
'200':
description: API key details
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
hash:
type: string
description: Unique hash identifier for the API key
example: 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
name:
type: string
description: Name of the API key
example: My Production Key
label:
type: string
description: Human-readable label for the API key
example: Production API Key
disabled:
type: boolean
description: Whether the API key is disabled
example: false
limit:
type: number
nullable: true
description: Spending limit for the API key in USD
example: 100
limit_remaining:
type: number
nullable: true
description: Remaining spending limit in USD
example: 74.5
limit_reset:
type: string
nullable: true
description: Type of limit reset for the API key
example: monthly
include_byok_in_limit:
type: boolean
description: Whether to include external BYOK usage in the credit limit
example: false
usage:
type: number
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
usage_daily:
type: number
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
usage_weekly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
usage_monthly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
byok_usage:
type: number
description: Total external BYOK usage (in USD) for the API key
example: 17.38
byok_usage_daily:
type: number
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
byok_usage_weekly:
type: number
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
byok_usage_monthly:
type: number
description: External BYOK usage (in USD) for current UTC month
example: 17.38
created_at:
type: string
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
updated_at:
type: string
nullable: true
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
expires_at:
type: string
nullable: true
format: date-time
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
required:
- hash
- name
- label
- disabled
- limit
- limit_remaining
- limit_reset
- include_byok_in_limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- created_at
- updated_at
example:
hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
description: The API key information
required:
- data
example:
data:
hash: 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
name: My Production Key
label: Production API Key
disabled: false
limit: 100
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
created_at: '2025-08-24T10:30:00Z'
updated_at: '2025-08-24T15:45:00Z'
expires_at: '2027-12-31T23:59:59Z'
'401':
description: Unauthorized - Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'404':
description: Not Found - API key does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
'429':
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/key:
get:
operationId: getCurrentKey
x-speakeasy-name-override: getCurrentKeyMetadata
tags:
- API Keys
summary: Get current API key
description: Get information on the API key associated with the current authentication session
responses:
'200':
description: API key details
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
label:
type: string
description: Human-readable label for the API key
example: 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
limit:
type: number
nullable: true
description: Spending limit for the API key in USD
example: 100
usage:
type: number
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
usage_daily:
type: number
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
usage_weekly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
usage_monthly:
type: number
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
byok_usage:
type: number
description: Total external BYOK usage (in USD) for the API key
example: 17.38
byok_usage_daily:
type: number
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
byok_usage_weekly:
type: number
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
byok_usage_monthly:
type: number
description: External BYOK usage (in USD) for current UTC month
example: 17.38
is_free_tier:
type: boolean
description: Whether this is a free tier API key
example: false
is_provisioning_key:
type: boolean
description: Whether this is a provisioning key
example: false
limit_remaining:
type: number
nullable: true
description: Remaining spending limit in USD
example: 74.5
limit_reset:
type: string
nullable: true
description: Type of limit reset for the API key
example: monthly
include_byok_in_limit:
type: boolean
description: Whether to include external BYOK usage in the credit limit
example: false
expires_at:
type: string
nullable: true
format: date-time
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
rate_limit:
type: object
properties:
requests:
type: number
description: Number of requests allowed per interval
example: 1000
interval:
type: string
description: Rate limit interval
example: 1h
note:
type: string
description: Note about the rate limit
example: This field is deprecated and safe to ignore.
required:
- requests
- interval
- note
description: Legacy rate limit information about a key. Will always return -1.
deprecated: true
example:
requests: 1000
interval: 1h
note: This field is deprecated and safe to ignore.
required:
- label
- limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- is_free_tier
- is_provisioning_key
- limit_remaining
- limit_reset
- include_byok_in_limit
- rate_limit
description: Current API key information
example:
label: sk-or-v1-au78b3456789012345678901234567890
limit: 100
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
is_free_tier: false
is_provisioning_key: false
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
expires_at: '2027-12-31T23:59:59Z'
rate_limit:
requests: 1000
interval: 1h
note: This field is deprecated and safe to ignore.
required:
- data
example:
data:
label: sk-or-v1-au78b3456789012345678901234567890
limit: 100
usage: 25.5
usage_daily: 25.5
usage_weekly: 25.5
usage_monthly: 25.5
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_weekly: 17.38
byok_usage_monthly: 17.38
is_free_tier: false
is_provisioning_key: false
limit_remaining: 74.5
limit_reset: monthly
include_byok_in_limit: false
expires_at: '2027-12-31T23:59:59Z'
rate_limit:
requests: 1000
interval: 1h
note: This field is deprecated and safe to ignore.
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/auth/keys:
post:
operationId: exchangeAuthCodeForAPIKey
tags:
- OAuth
summary: Exchange authorization code for API key
description: Exchange an authorization code from the PKCE flow for a user-controlled API key
requestBody:
content:
application/json:
schema:
type: object
properties:
code:
type: string
description: The authorization code received from the OAuth redirect
example: auth_code_abc123def456
code_verifier:
type: string
description: The code verifier if code_challenge was used in the authorization request
example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
code_challenge_method:
type: string
nullable: true
enum:
- S256
- plain
description: The method used to generate the code challenge
example: S256
x-speakeasy-unknown-values: allow
required:
- code
example:
code: auth_code_abc123def456
code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
code_challenge_method: S256
required: true
responses:
'200':
description: Successfully exchanged code for an API key
content:
application/json:
schema:
type: object
properties:
key:
type: string
description: The API key to use for OpenRouter requests
example: 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
user_id:
type: string
nullable: true
description: User ID associated with the API key
example: user_2yOPcMpKoQhcd4bVgSMlELRaIah
required:
- key
- user_id
example:
key: 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
user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
'400':
description: Bad Request - Invalid request parameters or malformed input
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'403':
description: Forbidden - Authentication successful but insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
/auth/keys/code:
post:
x-speakeasy-name-override: createAuthCode
tags:
- OAuth
summary: Create authorization code
description: Create an authorization code for the PKCE flow to generate a user-controlled API key
requestBody:
content:
application/json:
schema:
type: object
properties:
callback_url:
type: string
format: uri
description: >-
The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are allowed.
example: https://myapp.com/auth/callback
code_challenge:
type: string
description: PKCE code challenge for enhanced security
example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
code_challenge_method:
type: string
enum:
- S256
- plain
description: The method used to generate the code challenge
example: S256
x-speakeasy-unknown-values: allow
limit:
type: number
description: Credit limit for the API key to be created
example: 100
expires_at:
type: string
nullable: true
format: date-time
description: Optional expiration time for the API key to be created
required:
- callback_url
example:
callback_url: https://myapp.com/auth/callback
code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
code_challenge_method: S256
limit: 100
required: true
responses:
'200':
description: Successfully created authorization code
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: The authorization code ID to use in the exchange request
example: auth_code_xyz789
app_id:
type: number
description: The application ID associated with this auth code
example: 12345
created_at:
type: string
description: ISO 8601 timestamp of when the auth code was created
example: '2025-08-24T10:30:00Z'
required:
- id
- app_id
- created_at
description: Auth code data
example:
id: auth_code_xyz789
app_id: 12345
created_at: '2025-08-24T10:30:00Z'
required:
- data
'400':
description: Bad Request - Invalid request parameters or malformed input
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
'401':
description: Unauthorized - Authentication required or invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'500':
description: Internal Server Error - Unexpected server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerResponse'
operationId: createAuthKeysCode
/chat/completions:
post:
summary: Create a chat completion
operationId: sendChatCompletionRequest
x-speakeasy-group: chat
x-speakeasy-name-override: send
x-speakeasy-stream-request-field: stream
description: >-
Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
tags:
- Chat
requestBody:
required: true
description: Chat completion request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ChatGenerationParams'
responses:
'200':
description: Successful chat completion response
content:
application/json:
schema:
$ref: '#/components/schemas/ChatResponse'
description: Chat completion response
text/event-stream:
x-speakeasy-sse-sentinel: '[DONE]'
schema:
$ref: '#/components/schemas/ChatStreamingResponseChunk'
'400':
description: Bad request - invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'429':
description: Too many requests - rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
/completions:
post:
summary: Create a completion
x-speakeasy-group: completions
x-speakeasy-name-override: generate
x-speakeasy-stream-request-field: stream
description: Creates a completion for the provided prompt and parameters. Supports both streaming and non-streaming modes.
tags:
- Completions
requestBody:
required: true
description: Completion request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/CompletionCreateParams'
responses:
'200':
description: Successful completion response
content:
application/json:
schema:
$ref: '#/components/schemas/CompletionResponse'
description: Completion response
'400':
description: Bad request - invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'429':
description: Too many requests - rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ChatError'
operationId: createCompletions
servers:
- url: https://openrouter.ai/api/v1
description: Production server
x-speakeasy-server-id: production
security:
- apiKey: []
externalDocs:
description: OpenRouter Documentation
url: https://openrouter.ai/docs
tags:
- name: API Keys
description: API key management endpoints
- name: Analytics
description: Analytics and usage endpoints
- name: Chat
description: Chat completion endpoints
- name: Completions
description: Text completion endpoints
- name: Credits
description: Credit management endpoints
- name: Embeddings
description: Text embedding endpoints
- name: Endpoints
description: Endpoint information
- name: Generations
description: Generation history endpoints
- name: Models
description: Model information endpoints
- name: OAuth
description: OAuth authentication endpoints
- name: Parameters
description: Parameters endpoints
- name: Providers
description: Provider information endpoints
- name: beta.responses
description: beta.responses endpoints
x-fern-base-path: /
x-retry-strategy:
type: exponential
initialDelay: 500
maxDelay: 60000
maxAttempts: 3
x-speakeasy-globals:
parameters:
- $ref: "#/components/parameters/AppIdentifier"
- $ref: "#/components/parameters/AppDisplayName"
- $ref: "#/components/parameters/AppIdentifier"
- $ref: "#/components/parameters/AppDisplayName"