mirror of
https://github.com/wassname/openrouter-python-sdk-retry-errors.git
synced 2026-07-29 11:23:49 +08:00
8446 lines
262 KiB
YAML
8446 lines
262 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
required:
|
|
- location
|
|
ResponsesSearchContextSize:
|
|
type: string
|
|
enum:
|
|
- low
|
|
- medium
|
|
- high
|
|
description: Size of the search context for web search tools
|
|
example: medium
|
|
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
|
|
ReasoningSummaryVerbosity:
|
|
type: string
|
|
enum:
|
|
- auto
|
|
- concise
|
|
- detailed
|
|
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
|
|
OpenAIResponsesTruncation:
|
|
type: string
|
|
nullable: true
|
|
enum:
|
|
- auto
|
|
- disabled
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
- Sourceful
|
|
- Stealth
|
|
- StreamLake
|
|
- Switchpoint
|
|
- Targon
|
|
- Together
|
|
- Venice
|
|
- WandB
|
|
- xAI
|
|
- Z.AI
|
|
- FakeProvider
|
|
example: OpenAI
|
|
Quantization:
|
|
type: string
|
|
enum:
|
|
- int4
|
|
- int8
|
|
- fp4
|
|
- fp6
|
|
- fp8
|
|
- fp16
|
|
- bf16
|
|
- fp32
|
|
- unknown
|
|
example: fp16
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
session_id:
|
|
type: string
|
|
maxLength: 128
|
|
description: >-
|
|
A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for
|
|
observability. If provided in both the request body and the x-session-id header, the body value takes
|
|
precedence. 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
|
|
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
|
|
InputModality:
|
|
type: string
|
|
enum:
|
|
- text
|
|
- image
|
|
- file
|
|
- audio
|
|
- video
|
|
example: text
|
|
OutputModality:
|
|
type: string
|
|
enum:
|
|
- text
|
|
- image
|
|
- embeddings
|
|
example: text
|
|
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
|
|
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
|
|
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
|
|
EndpointStatus:
|
|
type: integer
|
|
enum:
|
|
- 0
|
|
- -1
|
|
- -2
|
|
- -3
|
|
- -5
|
|
- -10
|
|
example: 0
|
|
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
|
|
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
|
|
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
|
|
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
|
|
- 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
|
|
- 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: {}
|
|
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
|
|
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
|
|
text/event-stream:
|
|
schema:
|
|
type: string
|
|
description: Not used for embeddings - embeddings do not support streaming
|
|
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'
|
|
'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
|
|
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
|
|
- schema:
|
|
type: string
|
|
required: false
|
|
name: use_rss
|
|
in: query
|
|
- schema:
|
|
type: string
|
|
required: false
|
|
name: use_rss_chat_links
|
|
in: query
|
|
responses:
|
|
'200':
|
|
description: Returns a list of models or RSS feed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ModelsListResponse'
|
|
application/rss+xml:
|
|
schema:
|
|
type: string
|
|
'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
|
|
- Sourceful
|
|
- Stealth
|
|
- StreamLake
|
|
- Switchpoint
|
|
- Targon
|
|
- Together
|
|
- Venice
|
|
- WandB
|
|
- xAI
|
|
- Z.AI
|
|
- FakeProvider
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|