Files
openrouter-python-sdk-retry…/.speakeasy/in.openapi.yaml
T
2026-05-05 08:47:57 -07:00

21734 lines
680 KiB
YAML

components:
parameters: {}
schemas:
ActivityItem:
example:
byok_usage_inference: 0.012
completion_tokens: 125
date: '2025-08-24'
endpoint_id: 550e8400-e29b-41d4-a716-446655440000
model: openai/gpt-4.1
model_permaslug: openai/gpt-4.1-2025-04-14
prompt_tokens: 50
provider_name: OpenAI
reasoning_tokens: 25
requests: 5
usage: 0.015
properties:
byok_usage_inference:
description: BYOK inference cost in USD (external credits spent)
example: 0.012
format: double
type: number
completion_tokens:
description: Total completion tokens generated
example: 125
type: integer
date:
description: Date of the activity (YYYY-MM-DD format)
example: '2025-08-24'
type: string
endpoint_id:
description: Unique identifier for the endpoint
example: 550e8400-e29b-41d4-a716-446655440000
type: string
model:
description: Model slug (e.g., "openai/gpt-4.1")
example: openai/gpt-4.1
type: string
model_permaslug:
description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14")
example: openai/gpt-4.1-2025-04-14
type: string
prompt_tokens:
description: Total prompt tokens used
example: 50
type: integer
provider_name:
description: Name of the provider serving this endpoint
example: OpenAI
type: string
reasoning_tokens:
description: Total reasoning tokens used
example: 25
type: integer
requests:
description: Number of requests made
example: 5
type: integer
usage:
description: Total cost in USD (OpenRouter credits spent)
example: 0.015
format: double
type: number
required:
- date
- model
- model_permaslug
- endpoint_id
- provider_name
- usage
- byok_usage_inference
- requests
- prompt_tokens
- completion_tokens
- reasoning_tokens
type: object
ActivityResponse:
example:
data:
- byok_usage_inference: 0.012
completion_tokens: 125
date: '2025-08-24'
endpoint_id: 550e8400-e29b-41d4-a716-446655440000
model: openai/gpt-4.1
model_permaslug: openai/gpt-4.1-2025-04-14
prompt_tokens: 50
provider_name: OpenAI
reasoning_tokens: 25
requests: 5
usage: 0.015
properties:
data:
description: List of activity items
items:
$ref: '#/components/schemas/ActivityItem'
type: array
required:
- data
type: object
AnnotationAddedEvent:
allOf:
- $ref: '#/components/schemas/BaseAnnotationAddedEvent'
- properties: {}
type: object
description: Event emitted when a text annotation is added to output
example:
annotation:
end_index: 7
start_index: 0
title: Example
type: url_citation
url: https://example.com
annotation_index: 0
content_index: 0
item_id: item-1
output_index: 0
sequence_number: 5
type: response.output_text.annotation.added
AnthropicBase64ImageSource:
example:
data: /9j/4AAQ...
media_type: image/jpeg
type: base64
properties:
data:
type: string
media_type:
$ref: '#/components/schemas/AnthropicImageMimeType'
type:
enum:
- base64
type: string
required:
- type
- media_type
- data
type: object
AnthropicBase64PdfSource:
example:
data: JVBERi0x...
media_type: application/pdf
type: base64
properties:
data:
type: string
media_type:
enum:
- application/pdf
type: string
type:
enum:
- base64
type: string
required:
- type
- media_type
- data
type: object
AnthropicBaseUsageIteration:
example:
cache_creation: null
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
input_tokens: 100
output_tokens: 50
properties:
cache_creation:
$ref: '#/components/schemas/AnthropicIterationCacheCreation'
cache_creation_input_tokens:
type: integer
cache_read_input_tokens:
type: integer
input_tokens:
type: integer
output_tokens:
type: integer
type: object
AnthropicBashCodeExecutionContent:
discriminator:
mapping:
bash_code_execution_result: '#/components/schemas/AnthropicBashCodeExecutionResult'
bash_code_execution_tool_result_error: '#/components/schemas/AnthropicBashCodeExecutionToolResultError'
propertyName: type
example:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: bash_code_execution_result
oneOf:
- $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResultError'
- $ref: '#/components/schemas/AnthropicBashCodeExecutionResult'
AnthropicBashCodeExecutionOutput:
example:
file_id: file_01abc
type: bash_code_execution_output
properties:
file_id:
type: string
type:
enum:
- bash_code_execution_output
type: string
required:
- file_id
- type
type: object
AnthropicBashCodeExecutionResult:
example:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: bash_code_execution_result
properties:
content:
items:
$ref: '#/components/schemas/AnthropicBashCodeExecutionOutput'
type: array
return_code:
type: integer
stderr:
type: string
stdout:
type: string
type:
enum:
- bash_code_execution_result
type: string
required:
- content
- return_code
- stderr
- stdout
- type
type: object
AnthropicBashCodeExecutionToolResult:
example:
content:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: bash_code_execution_result
tool_use_id: srvtoolu_01abc
type: bash_code_execution_tool_result
properties:
content:
$ref: '#/components/schemas/AnthropicBashCodeExecutionContent'
tool_use_id:
type: string
type:
enum:
- bash_code_execution_tool_result
type: string
required:
- type
- content
- tool_use_id
type: object
AnthropicBashCodeExecutionToolResultError:
example:
error_code: unavailable
type: bash_code_execution_tool_result_error
properties:
error_code:
enum:
- invalid_tool_input
- unavailable
- too_many_requests
- execution_time_exceeded
- output_file_too_large
type: string
type:
enum:
- bash_code_execution_tool_result_error
type: string
required:
- error_code
- type
type: object
AnthropicCacheControlDirective:
example:
type: ephemeral
properties:
ttl:
$ref: '#/components/schemas/AnthropicCacheControlTtl'
type:
enum:
- ephemeral
type: string
required:
- type
type: object
AnthropicCacheControlTtl:
enum:
- 5m
- 1h
example: 5m
type: string
AnthropicCacheCreation:
example:
ephemeral_1h_input_tokens: 0
ephemeral_5m_input_tokens: 100
nullable: true
properties:
ephemeral_1h_input_tokens:
type: integer
ephemeral_5m_input_tokens:
type: integer
required:
- ephemeral_5m_input_tokens
- ephemeral_1h_input_tokens
type: object
AnthropicCaller:
discriminator:
mapping:
code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller'
code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller'
direct: '#/components/schemas/AnthropicDirectCaller'
propertyName: type
example:
type: direct
oneOf:
- $ref: '#/components/schemas/AnthropicDirectCaller'
- $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller'
- $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller'
AnthropicCitationCharLocation:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_char_index: 18
file_id: null
start_char_index: 0
type: char_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_char_index:
type: integer
file_id:
nullable: true
type: string
start_char_index:
type: integer
type:
enum:
- char_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_char_index
- end_char_index
- file_id
type: object
AnthropicCitationCharLocationParam:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_char_index: 18
start_char_index: 0
type: char_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_char_index:
type: integer
start_char_index:
type: integer
type:
enum:
- char_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_char_index
- end_char_index
type: object
AnthropicCitationContentBlockLocation:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_block_index: 1
file_id: null
start_block_index: 0
type: content_block_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_block_index:
type: integer
file_id:
nullable: true
type: string
start_block_index:
type: integer
type:
enum:
- content_block_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_block_index
- end_block_index
- file_id
type: object
AnthropicCitationContentBlockLocationParam:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_block_index: 1
start_block_index: 0
type: content_block_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_block_index:
type: integer
start_block_index:
type: integer
type:
enum:
- content_block_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_block_index
- end_block_index
type: object
AnthropicCitationPageLocation:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_page_number: 2
file_id: null
start_page_number: 1
type: page_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_page_number:
type: integer
file_id:
nullable: true
type: string
start_page_number:
type: integer
type:
enum:
- page_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_page_number
- end_page_number
- file_id
type: object
AnthropicCitationPageLocationParam:
example:
cited_text: Example cited text
document_index: 0
document_title: null
end_page_number: 2
start_page_number: 1
type: page_location
properties:
cited_text:
type: string
document_index:
type: integer
document_title:
nullable: true
type: string
end_page_number:
type: integer
start_page_number:
type: integer
type:
enum:
- page_location
type: string
required:
- type
- cited_text
- document_index
- document_title
- start_page_number
- end_page_number
type: object
AnthropicCitationsConfig:
example:
enabled: true
nullable: true
properties:
enabled:
type: boolean
required:
- enabled
type: object
AnthropicCitationSearchResultLocation:
example:
cited_text: Example cited text
end_block_index: 1
search_result_index: 0
source: example_source
start_block_index: 0
title: Example Result
type: search_result_location
properties:
cited_text:
type: string
end_block_index:
type: integer
search_result_index:
type: integer
source:
type: string
start_block_index:
type: integer
title:
nullable: true
type: string
type:
enum:
- search_result_location
type: string
required:
- type
- cited_text
- search_result_index
- source
- title
- start_block_index
- end_block_index
type: object
AnthropicCitationWebSearchResultLocation:
example:
cited_text: Example cited text
encrypted_index: enc_idx_0
title: Example Page
type: web_search_result_location
url: https://example.com
properties:
cited_text:
type: string
encrypted_index:
type: string
title:
nullable: true
type: string
type:
enum:
- web_search_result_location
type: string
url:
type: string
required:
- type
- cited_text
- encrypted_index
- title
- url
type: object
AnthropicCodeExecution20250825Caller:
example:
tool_id: toolu_01abc
type: code_execution_20250825
properties:
tool_id:
type: string
type:
enum:
- code_execution_20250825
type: string
required:
- type
- tool_id
type: object
AnthropicCodeExecution20260120Caller:
example:
tool_id: toolu_01abc
type: code_execution_20260120
properties:
tool_id:
type: string
type:
enum:
- code_execution_20260120
type: string
required:
- type
- tool_id
type: object
AnthropicCodeExecutionContent:
discriminator:
mapping:
code_execution_result: '#/components/schemas/AnthropicCodeExecutionResult'
code_execution_tool_result_error: '#/components/schemas/AnthropicCodeExecutionToolResultError'
encrypted_code_execution_result: '#/components/schemas/AnthropicEncryptedCodeExecutionResult'
propertyName: type
example:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: code_execution_result
oneOf:
- $ref: '#/components/schemas/AnthropicCodeExecutionToolResultError'
- $ref: '#/components/schemas/AnthropicCodeExecutionResult'
- $ref: '#/components/schemas/AnthropicEncryptedCodeExecutionResult'
AnthropicCodeExecutionOutput:
example:
file_id: file_01abc
type: code_execution_output
properties:
file_id:
type: string
type:
enum:
- code_execution_output
type: string
required:
- file_id
- type
type: object
AnthropicCodeExecutionResult:
example:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: code_execution_result
properties:
content:
items:
$ref: '#/components/schemas/AnthropicCodeExecutionOutput'
type: array
return_code:
type: integer
stderr:
type: string
stdout:
type: string
type:
enum:
- code_execution_result
type: string
required:
- content
- return_code
- stderr
- stdout
- type
type: object
AnthropicCodeExecutionToolResult:
example:
content:
content: []
return_code: 0
stderr: ''
stdout: Hello
type: code_execution_result
tool_use_id: srvtoolu_01abc
type: code_execution_tool_result
properties:
content:
$ref: '#/components/schemas/AnthropicCodeExecutionContent'
tool_use_id:
type: string
type:
enum:
- code_execution_tool_result
type: string
required:
- type
- content
- tool_use_id
type: object
AnthropicCodeExecutionToolResultError:
example:
error_code: unavailable
type: code_execution_tool_result_error
properties:
error_code:
$ref: '#/components/schemas/AnthropicServerToolErrorCode'
type:
enum:
- code_execution_tool_result_error
type: string
required:
- error_code
- type
type: object
AnthropicCompactionBlock:
example:
content: Compacted summary of conversation.
type: compaction
properties:
content:
nullable: true
type: string
type:
enum:
- compaction
type: string
required:
- type
- content
type: object
AnthropicCompactionUsageIteration:
allOf:
- $ref: '#/components/schemas/AnthropicBaseUsageIteration'
- properties:
type:
enum:
- compaction
type: string
required:
- type
type: object
example:
cache_creation: null
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
input_tokens: 50
output_tokens: 25
type: compaction
AnthropicContainer:
example:
expires_at: '2026-04-08T00:00:00Z'
id: ctr_01abc
nullable: true
properties:
expires_at:
type: string
id:
type: string
required:
- id
- expires_at
type: object
AnthropicContainerUpload:
example:
file_id: file_01abc
type: container_upload
properties:
file_id:
type: string
type:
enum:
- container_upload
type: string
required:
- type
- file_id
type: object
AnthropicDirectCaller:
example:
type: direct
properties:
type:
enum:
- direct
type: string
required:
- type
type: object
AnthropicDocumentBlock:
example:
citations: null
source:
data: Hello, world!
media_type: text/plain
type: text
title: null
type: document
properties:
citations:
$ref: '#/components/schemas/AnthropicCitationsConfig'
source:
anyOf:
- $ref: '#/components/schemas/AnthropicBase64PdfSource'
- $ref: '#/components/schemas/AnthropicPlainTextSource'
title:
nullable: true
type: string
type:
enum:
- document
type: string
required:
- citations
- source
- title
- type
type: object
AnthropicDocumentBlockParam:
example:
source:
data: Hello, world!
media_type: text/plain
type: text
type: document
properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
citations:
nullable: true
properties:
enabled:
type: boolean
type: object
context:
nullable: true
type: string
source:
oneOf:
- $ref: '#/components/schemas/AnthropicBase64PdfSource'
- $ref: '#/components/schemas/AnthropicPlainTextSource'
- properties:
content:
anyOf:
- type: string
- items:
discriminator:
mapping:
image: '#/components/schemas/AnthropicImageBlockParam'
text: '#/components/schemas/AnthropicTextBlockParam'
propertyName: type
oneOf:
- $ref: '#/components/schemas/AnthropicTextBlockParam'
- $ref: '#/components/schemas/AnthropicImageBlockParam'
type: array
type:
enum:
- content
type: string
required:
- type
- content
type: object
- $ref: '#/components/schemas/AnthropicUrlPdfSource'
title:
nullable: true
type: string
type:
enum:
- document
type: string
required:
- type
- source
type: object
AnthropicEncryptedCodeExecutionResult:
example:
content: []
encrypted_stdout: enc_stdout
return_code: 0
stderr: ''
type: encrypted_code_execution_result
properties:
content:
items:
$ref: '#/components/schemas/AnthropicCodeExecutionOutput'
type: array
encrypted_stdout:
type: string
return_code:
type: integer
stderr:
type: string
type:
enum:
- encrypted_code_execution_result
type: string
required:
- content
- encrypted_stdout
- return_code
- stderr
- type
type: object
AnthropicImageBlockParam:
example:
source:
data: /9j/4AAQ...
media_type: image/jpeg
type: base64
type: image
properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
source:
discriminator:
mapping:
base64: '#/components/schemas/AnthropicBase64ImageSource'
url: '#/components/schemas/AnthropicUrlImageSource'
propertyName: type
oneOf:
- $ref: '#/components/schemas/AnthropicBase64ImageSource'
- $ref: '#/components/schemas/AnthropicUrlImageSource'
type:
enum:
- image
type: string
required:
- type
- source
type: object
AnthropicImageMimeType:
enum:
- image/jpeg
- image/png
- image/gif
- image/webp
example: image/jpeg
type: string
AnthropicInputTokensClearAtLeast:
example:
type: input_tokens
value: 50000
nullable: true
properties:
type:
enum:
- input_tokens
type: string
value:
type: integer
required:
- type
- value
type: object
AnthropicInputTokensTrigger:
example:
type: input_tokens
value: 100000
properties:
type:
enum:
- input_tokens
type: string
value:
type: integer
required:
- type
- value
type: object
AnthropicIterationCacheCreation:
default: null
example:
ephemeral_1h_input_tokens: 0
ephemeral_5m_input_tokens: 0
nullable: true
properties:
ephemeral_1h_input_tokens:
type: integer
ephemeral_5m_input_tokens:
type: integer
type: object
AnthropicMessageUsageIteration:
allOf:
- $ref: '#/components/schemas/AnthropicBaseUsageIteration'
- properties:
type:
enum:
- message
type: string
required:
- type
type: object
example:
cache_creation: null
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
input_tokens: 100
output_tokens: 50
type: message
AnthropicPlainTextSource:
example:
data: Hello, world!
media_type: text/plain
type: text
properties:
data:
type: string
media_type:
enum:
- text/plain
type: string
type:
enum:
- text
type: string
required:
- type
- media_type
- data
type: object
AnthropicRedactedThinkingBlock:
example:
data: cmVkYWN0ZWQ=
type: redacted_thinking
properties:
data:
type: string
type:
enum:
- redacted_thinking
type: string
required:
- type
- data
type: object
AnthropicRefusalStopDetails:
description: Structured information about a refusal
example:
category: cyber
explanation: The request was refused due to policy.
type: refusal
nullable: true
properties:
category:
enum:
- cyber
- bio
- null
nullable: true
type: string
explanation:
nullable: true
type: string
type:
enum:
- refusal
type: string
required:
- type
- category
- explanation
type: object
AnthropicSearchResultBlockParam:
example:
content:
- text: Result content
type: text
source: example_source
title: Example Result
type: search_result
properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
citations:
properties:
enabled:
type: boolean
type: object
content:
items:
$ref: '#/components/schemas/AnthropicTextBlockParam'
type: array
source:
type: string
title:
type: string
type:
enum:
- search_result
type: string
required:
- type
- source
- title
- content
type: object
AnthropicServerToolErrorCode:
enum:
- invalid_tool_input
- unavailable
- too_many_requests
- execution_time_exceeded
example: unavailable
type: string
AnthropicServerToolName:
enum:
- web_search
- web_fetch
- code_execution
- bash_code_execution
- text_editor_code_execution
- tool_search_tool_regex
- tool_search_tool_bm25
example: web_search
type: string
AnthropicServerToolUsage:
example:
web_fetch_requests: 0
web_search_requests: 1
nullable: true
properties:
web_fetch_requests:
type: integer
web_search_requests:
type: integer
required:
- web_search_requests
- web_fetch_requests
type: object
AnthropicServerToolUseBlock:
example:
caller:
type: direct
id: srvtoolu_01abc
input:
query: latest news
name: web_search
type: server_tool_use
properties:
caller:
$ref: '#/components/schemas/AnthropicCaller'
id:
type: string
input:
nullable: true
name:
$ref: '#/components/schemas/AnthropicServerToolName'
type:
enum:
- server_tool_use
type: string
required:
- type
- id
- caller
- name
type: object
AnthropicServiceTier:
enum:
- standard
- priority
- batch
- null
example: standard
nullable: true
type: string
AnthropicSpeed:
enum:
- fast
- standard
- null
example: standard
nullable: true
type: string
AnthropicTextBlock:
example:
citations: null
text: Hello, world!
type: text
properties:
citations:
items:
$ref: '#/components/schemas/AnthropicTextCitation'
nullable: true
type: array
text:
type: string
type:
enum:
- text
type: string
required:
- type
- text
- citations
type: object
AnthropicTextBlockParam:
example:
text: Hello, world!
type: text
properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
citations:
items:
discriminator:
mapping:
char_location: '#/components/schemas/AnthropicCitationCharLocationParam'
content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam'
page_location: '#/components/schemas/AnthropicCitationPageLocationParam'
search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation'
web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
propertyName: type
oneOf:
- $ref: '#/components/schemas/AnthropicCitationCharLocationParam'
- $ref: '#/components/schemas/AnthropicCitationPageLocationParam'
- $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam'
- $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
- $ref: '#/components/schemas/AnthropicCitationSearchResultLocation'
nullable: true
type: array
text:
type: string
type:
enum:
- text
type: string
required:
- type
- text
type: object
AnthropicTextCitation:
discriminator:
mapping:
char_location: '#/components/schemas/AnthropicCitationCharLocation'
content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation'
page_location: '#/components/schemas/AnthropicCitationPageLocation'
search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation'
web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
propertyName: type
example:
cited_text: Example text
document_index: 0
document_title: null
end_char_index: 10
file_id: null
start_char_index: 0
type: char_location
oneOf:
- $ref: '#/components/schemas/AnthropicCitationCharLocation'
- $ref: '#/components/schemas/AnthropicCitationPageLocation'
- $ref: '#/components/schemas/AnthropicCitationContentBlockLocation'
- $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
- $ref: '#/components/schemas/AnthropicCitationSearchResultLocation'
AnthropicTextEditorCodeExecutionContent:
discriminator:
mapping:
text_editor_code_execution_create_result: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult'
text_editor_code_execution_str_replace_result: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult'
text_editor_code_execution_tool_result_error: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError'
text_editor_code_execution_view_result: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult'
propertyName: type
example:
content: file content
file_type: text
num_lines: 10
start_line: 1
total_lines: 10
type: text_editor_code_execution_view_result
oneOf:
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError'
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult'
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult'
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult'
AnthropicTextEditorCodeExecutionCreateResult:
example:
is_file_update: false
type: text_editor_code_execution_create_result
properties:
is_file_update:
type: boolean
type:
enum:
- text_editor_code_execution_create_result
type: string
required:
- is_file_update
- type
type: object
AnthropicTextEditorCodeExecutionStrReplaceResult:
example:
lines: null
new_lines: null
new_start: null
old_lines: null
old_start: null
type: text_editor_code_execution_str_replace_result
properties:
lines:
items:
type: string
nullable: true
type: array
new_lines:
nullable: true
type: integer
new_start:
nullable: true
type: integer
old_lines:
nullable: true
type: integer
old_start:
nullable: true
type: integer
type:
enum:
- text_editor_code_execution_str_replace_result
type: string
required:
- lines
- new_lines
- new_start
- old_lines
- old_start
- type
type: object
AnthropicTextEditorCodeExecutionToolResult:
example:
content:
content: file content
file_type: text
num_lines: 10
start_line: 1
total_lines: 10
type: text_editor_code_execution_view_result
tool_use_id: srvtoolu_01abc
type: text_editor_code_execution_tool_result
properties:
content:
$ref: '#/components/schemas/AnthropicTextEditorCodeExecutionContent'
tool_use_id:
type: string
type:
enum:
- text_editor_code_execution_tool_result
type: string
required:
- type
- content
- tool_use_id
type: object
AnthropicTextEditorCodeExecutionToolResultError:
example:
error_code: unavailable
error_message: null
type: text_editor_code_execution_tool_result_error
properties:
error_code:
enum:
- invalid_tool_input
- unavailable
- too_many_requests
- execution_time_exceeded
- file_not_found
type: string
error_message:
nullable: true
type: string
type:
enum:
- text_editor_code_execution_tool_result_error
type: string
required:
- error_code
- error_message
- type
type: object
AnthropicTextEditorCodeExecutionViewResult:
example:
content: file content
file_type: text
num_lines: 10
start_line: 1
total_lines: 10
type: text_editor_code_execution_view_result
properties:
content:
type: string
file_type:
enum:
- text
- image
- pdf
type: string
num_lines:
nullable: true
type: integer
start_line:
nullable: true
type: integer
total_lines:
nullable: true
type: integer
type:
enum:
- text_editor_code_execution_view_result
type: string
required:
- content
- file_type
- num_lines
- start_line
- total_lines
- type
type: object
AnthropicThinkingBlock:
example:
signature: sig_abc123
thinking: Let me think about this...
type: thinking
properties:
signature:
type: string
thinking:
type: string
type:
enum:
- thinking
type: string
required:
- type
- thinking
- signature
type: object
AnthropicThinkingDisplay:
enum:
- summarized
- omitted
- null
example: summarized
nullable: true
type: string
AnthropicThinkingTurns:
example:
type: thinking_turns
value: 3
properties:
type:
enum:
- thinking_turns
type: string
value:
type: integer
required:
- type
- value
type: object
AnthropicToolReference:
example:
tool_name: my_tool
type: tool_reference
properties:
tool_name:
type: string
type:
enum:
- tool_reference
type: string
required:
- tool_name
- type
type: object
AnthropicToolSearchContent:
discriminator:
mapping:
tool_search_tool_result_error: '#/components/schemas/AnthropicToolSearchResultError'
tool_search_tool_search_result: '#/components/schemas/AnthropicToolSearchResult'
propertyName: type
example:
tool_references:
- tool_name: my_tool
type: tool_reference
type: tool_search_tool_search_result
oneOf:
- $ref: '#/components/schemas/AnthropicToolSearchResultError'
- $ref: '#/components/schemas/AnthropicToolSearchResult'
AnthropicToolSearchResult:
example:
tool_references:
- tool_name: my_tool
type: tool_reference
type: tool_search_tool_search_result
properties:
tool_references:
items:
$ref: '#/components/schemas/AnthropicToolReference'
type: array
type:
enum:
- tool_search_tool_search_result
type: string
required:
- tool_references
- type
type: object
AnthropicToolSearchResultError:
example:
error_code: unavailable
error_message: null
type: tool_search_tool_result_error
properties:
error_code:
$ref: '#/components/schemas/AnthropicServerToolErrorCode'
error_message:
nullable: true
type: string
type:
enum:
- tool_search_tool_result_error
type: string
required:
- error_code
- error_message
- type
type: object
AnthropicToolSearchToolResult:
example:
content:
tool_references:
- tool_name: my_tool
type: tool_reference
type: tool_search_tool_search_result
tool_use_id: srvtoolu_01abc
type: tool_search_tool_result
properties:
content:
$ref: '#/components/schemas/AnthropicToolSearchContent'
tool_use_id:
type: string
type:
enum:
- tool_search_tool_result
type: string
required:
- type
- content
- tool_use_id
type: object
AnthropicToolUseBlock:
example:
caller:
type: direct
id: toolu_01abc
input:
location: San Francisco
name: get_weather
type: tool_use
properties:
caller:
$ref: '#/components/schemas/AnthropicCaller'
id:
type: string
input:
nullable: true
name:
type: string
type:
enum:
- tool_use
type: string
required:
- type
- id
- caller
- name
type: object
AnthropicToolUsesKeep:
example:
type: tool_uses
value: 5
properties:
type:
enum:
- tool_uses
type: string
value:
type: integer
required:
- type
- value
type: object
AnthropicToolUsesTrigger:
example:
type: tool_uses
value: 10
properties:
type:
enum:
- tool_uses
type: string
value:
type: integer
required:
- type
- value
type: object
AnthropicUnknownUsageIteration:
allOf:
- $ref: '#/components/schemas/AnthropicBaseUsageIteration'
- properties:
type:
type: string
required:
- type
type: object
example:
cache_creation: null
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
input_tokens: 100
output_tokens: 50
type: unknown
AnthropicUrlImageSource:
example:
type: url
url: https://example.com/image.jpg
properties:
type:
enum:
- url
type: string
url:
type: string
required:
- type
- url
type: object
AnthropicUrlPdfSource:
example:
type: url
url: https://example.com/document.pdf
properties:
type:
enum:
- url
type: string
url:
type: string
required:
- type
- url
type: object
AnthropicUsage:
example:
cache_creation: null
cache_creation_input_tokens: null
cache_read_input_tokens: null
inference_geo: null
input_tokens: 100
output_tokens: 50
server_tool_use: null
service_tier: standard
properties:
cache_creation:
$ref: '#/components/schemas/AnthropicCacheCreation'
cache_creation_input_tokens:
nullable: true
type: integer
cache_read_input_tokens:
nullable: true
type: integer
inference_geo:
nullable: true
type: string
input_tokens:
type: integer
output_tokens:
type: integer
server_tool_use:
$ref: '#/components/schemas/AnthropicServerToolUsage'
service_tier:
$ref: '#/components/schemas/AnthropicServiceTier'
required:
- input_tokens
- output_tokens
- cache_creation_input_tokens
- cache_read_input_tokens
- cache_creation
- inference_geo
- server_tool_use
- service_tier
type: object
AnthropicUsageIteration:
anyOf:
- $ref: '#/components/schemas/AnthropicCompactionUsageIteration'
- $ref: '#/components/schemas/AnthropicMessageUsageIteration'
- $ref: '#/components/schemas/AnthropicUnknownUsageIteration'
example:
cache_creation: null
cache_creation_input_tokens: 0
cache_read_input_tokens: 0
input_tokens: 100
output_tokens: 50
type: message
AnthropicWebFetchBlock:
example:
content:
citations: null
source:
data: ''
media_type: text/plain
type: text
title: null
type: document
retrieved_at: null
type: web_fetch_result
url: https://example.com
properties:
content:
$ref: '#/components/schemas/AnthropicDocumentBlock'
retrieved_at:
nullable: true
type: string
type:
enum:
- web_fetch_result
type: string
url:
type: string
required:
- content
- retrieved_at
- type
- url
type: object
AnthropicWebFetchContent:
discriminator:
mapping:
web_fetch_result: '#/components/schemas/AnthropicWebFetchBlock'
web_fetch_tool_result_error: '#/components/schemas/AnthropicWebFetchToolResultError'
propertyName: type
example:
content:
citations: null
source:
data: ''
media_type: text/plain
type: text
title: null
type: document
retrieved_at: null
type: web_fetch_result
url: https://example.com
oneOf:
- $ref: '#/components/schemas/AnthropicWebFetchToolResultError'
- $ref: '#/components/schemas/AnthropicWebFetchBlock'
AnthropicWebFetchToolResult:
example:
caller:
type: direct
content:
content:
citations: null
source:
data: ''
media_type: text/plain
type: text
title: null
type: document
retrieved_at: null
type: web_fetch_result
url: https://example.com
tool_use_id: srvtoolu_01abc
type: web_fetch_tool_result
properties:
caller:
$ref: '#/components/schemas/AnthropicCaller'
content:
$ref: '#/components/schemas/AnthropicWebFetchContent'
tool_use_id:
type: string
type:
enum:
- web_fetch_tool_result
type: string
required:
- type
- caller
- content
- tool_use_id
type: object
AnthropicWebFetchToolResultError:
example:
error_code: unavailable
type: web_fetch_tool_result_error
properties:
error_code:
enum:
- invalid_tool_input
- url_too_long
- url_not_allowed
- url_not_accessible
- unsupported_content_type
- too_many_requests
- max_uses_exceeded
- unavailable
type: string
type:
enum:
- web_fetch_tool_result_error
type: string
required:
- type
- error_code
type: object
AnthropicWebSearchResult:
example:
encrypted_content: enc_content_0
page_age: null
title: Example Page
type: web_search_result
url: https://example.com
properties:
encrypted_content:
type: string
page_age:
nullable: true
type: string
title:
type: string
type:
enum:
- web_search_result
type: string
url:
type: string
required:
- type
- encrypted_content
- page_age
- title
- url
type: object
AnthropicWebSearchResultBlockParam:
example:
encrypted_content: enc_content_0
title: Example Page
type: web_search_result
url: https://example.com
properties:
encrypted_content:
type: string
page_age:
nullable: true
type: string
title:
type: string
type:
enum:
- web_search_result
type: string
url:
type: string
required:
- type
- encrypted_content
- title
- url
type: object
AnthropicWebSearchToolResult:
example:
caller:
type: direct
content: []
tool_use_id: srvtoolu_01abc
type: web_search_tool_result
properties:
caller:
$ref: '#/components/schemas/AnthropicCaller'
content:
anyOf:
- items:
$ref: '#/components/schemas/AnthropicWebSearchResult'
type: array
- $ref: '#/components/schemas/AnthropicWebSearchToolResultError'
tool_use_id:
type: string
type:
enum:
- web_search_tool_result
type: string
required:
- type
- caller
- tool_use_id
- content
type: object
AnthropicWebSearchToolResultError:
example:
error_code: unavailable
type: web_search_tool_result_error
properties:
error_code:
enum:
- invalid_tool_input
- unavailable
- max_uses_exceeded
- too_many_requests
- query_too_long
- request_too_large
type: string
type:
enum:
- web_search_tool_result_error
type: string
required:
- type
- error_code
type: object
AnthropicWebSearchToolUserLocation:
example:
city: San Francisco
country: US
region: California
timezone: America/Los_Angeles
type: approximate
nullable: true
properties:
city:
nullable: true
type: string
country:
nullable: true
type: string
region:
nullable: true
type: string
timezone:
nullable: true
type: string
type:
enum:
- approximate
type: string
required:
- type
type: object
ApplyPatchServerTool:
description: Apply patch tool configuration
example:
type: apply_patch
properties:
type:
enum:
- apply_patch
type: string
required:
- type
type: object
AutoRouterPlugin:
example:
allowed_models:
- anthropic/*
- openai/gpt-4o
enabled: true
id: auto-router
properties:
allowed_models:
description: >-
List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g.,
"anthropic/*" matches all Anthropic models). When not specified, uses the default supported models list.
example:
- anthropic/*
- openai/gpt-4o
- google/*
items:
type: string
type: array
enabled:
description: Set to false to disable the auto-router plugin for this request. Defaults to true.
type: boolean
id:
enum:
- auto-router
type: string
required:
- id
type: object
BadGatewayResponse:
description: Bad Gateway - Provider/upstream API failure
example:
error:
code: 502
message: Provider returned error
properties:
error:
$ref: '#/components/schemas/BadGatewayResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
BadGatewayResponseErrorData:
description: Error data for BadGatewayResponse
example:
code: 502
message: Provider returned error
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
BadRequestResponse:
description: Bad Request - Invalid request parameters or malformed input
example:
error:
code: 400
message: Invalid request parameters
properties:
error:
$ref: '#/components/schemas/BadRequestResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
BadRequestResponseErrorData:
description: Error data for BadRequestResponse
example:
code: 400
message: Invalid request parameters
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
BaseAnnotationAddedEvent:
description: Event emitted when a text annotation is added to output
example:
annotation:
end_index: 7
start_index: 0
title: Example
type: url_citation
url: https://example.com
annotation_index: 0
content_index: 0
item_id: item-1
output_index: 0
sequence_number: 5
type: response.output_text.annotation.added
properties:
annotation:
$ref: '#/components/schemas/OpenAIResponsesAnnotation'
annotation_index:
type: integer
content_index:
type: integer
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.output_text.annotation.added
type: string
required:
- type
- output_index
- item_id
- content_index
- sequence_number
- annotation_index
- annotation
type: object
BaseContentPartAddedEvent:
description: Event emitted when a new content part is added to an output item
example:
content_index: 0
item_id: item-1
output_index: 0
part:
annotations: []
text: ''
type: output_text
sequence_number: 3
type: response.content_part.added
properties:
content_index:
type: integer
item_id:
type: string
output_index:
type: integer
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
sequence_number:
type: integer
type:
enum:
- response.content_part.added
type: string
required:
- type
- output_index
- item_id
- content_index
- part
- sequence_number
type: object
BaseContentPartDoneEvent:
description: Event emitted when a content part is complete
example:
content_index: 0
item_id: item-1
output_index: 0
part:
annotations: []
text: Hello! How can I help you?
type: output_text
sequence_number: 7
type: response.content_part.done
properties:
content_index:
type: integer
item_id:
type: string
output_index:
type: integer
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
sequence_number:
type: integer
type:
enum:
- response.content_part.done
type: string
required:
- type
- output_index
- item_id
- content_index
- part
- sequence_number
type: object
BaseErrorEvent:
description: Event emitted when an error occurs during streaming
example:
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
param: null
sequence_number: 2
type: error
properties:
code:
nullable: true
type: string
message:
type: string
param:
nullable: true
type: string
sequence_number:
type: integer
type:
enum:
- error
type: string
required:
- type
- code
- message
- param
- sequence_number
type: object
BaseFunctionCallArgsDeltaEvent:
description: Event emitted when function call arguments are being streamed
example:
delta: '{"city": "..."}'
item_id: item-1
output_index: 0
sequence_number: 4
type: response.function_call_arguments.delta
properties:
delta:
type: string
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.function_call_arguments.delta
type: string
required:
- type
- item_id
- output_index
- delta
- sequence_number
type: object
BaseFunctionCallArgsDoneEvent:
description: Event emitted when function call arguments streaming is complete
example:
arguments: '{"city": "San Francisco", "units": "celsius"}'
item_id: item-1
name: get_weather
output_index: 0
sequence_number: 6
type: response.function_call_arguments.done
properties:
arguments:
type: string
item_id:
type: string
name:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.function_call_arguments.done
type: string
required:
- type
- item_id
- output_index
- name
- arguments
- sequence_number
type: object
BaseInputs:
anyOf:
- type: string
- items:
anyOf:
- properties:
content:
anyOf:
- items:
discriminator:
mapping:
input_audio: '#/components/schemas/InputAudio'
input_file: '#/components/schemas/InputFile'
input_image: '#/components/schemas/InputImage'
input_text: '#/components/schemas/InputText'
propertyName: type
oneOf:
- $ref: '#/components/schemas/InputText'
- $ref: '#/components/schemas/InputImage'
- $ref: '#/components/schemas/InputFile'
- $ref: '#/components/schemas/InputAudio'
type: array
- type: string
phase:
anyOf:
- enum:
- commentary
type: string
- enum:
- final_answer
type: string
- nullable: true
role:
anyOf:
- enum:
- user
type: string
- enum:
- system
type: string
- enum:
- assistant
type: string
- enum:
- developer
type: string
type:
enum:
- message
type: string
required:
- role
- content
type: object
- $ref: '#/components/schemas/OpenAIResponseInputMessageItem'
- $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput'
- $ref: '#/components/schemas/OpenAIResponseFunctionToolCall'
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
- $ref: '#/components/schemas/OutputMessage'
type: array
- nullable: true
example:
- content: What is the weather today?
role: user
BaseMessagesResult:
description: Base Anthropic Messages API response before OpenRouter extensions
example:
container: null
content:
- citations: null
text: Hello!
type: text
id: msg_01XFDUDYJgAACzvnptvVoYEL
model: claude-sonnet-4-5-20250929
role: assistant
stop_details: null
stop_reason: end_turn
stop_sequence: null
type: message
usage:
cache_creation_input_tokens: null
cache_read_input_tokens: null
input_tokens: 12
output_tokens: 8
properties:
container:
$ref: '#/components/schemas/AnthropicContainer'
content:
items:
$ref: '#/components/schemas/ORAnthropicContentBlock'
type: array
id:
type: string
model:
type: string
role:
enum:
- assistant
type: string
stop_details:
$ref: '#/components/schemas/AnthropicRefusalStopDetails'
stop_reason:
$ref: '#/components/schemas/ORAnthropicStopReason'
stop_sequence:
nullable: true
type: string
type:
enum:
- message
type: string
usage:
allOf:
- $ref: '#/components/schemas/AnthropicUsage'
- properties:
iterations:
items:
$ref: '#/components/schemas/AnthropicUsageIteration'
type: array
speed:
$ref: '#/components/schemas/AnthropicSpeed'
type: object
example:
cache_creation: null
cache_creation_input_tokens: null
cache_read_input_tokens: null
inference_geo: null
input_tokens: 100
output_tokens: 50
server_tool_use: null
service_tier: standard
required:
- id
- type
- role
- container
- content
- model
- stop_reason
- stop_details
- stop_sequence
- usage
type: object
BaseReasoningConfig:
example:
effort: medium
summary: auto
nullable: true
properties:
effort:
$ref: '#/components/schemas/ReasoningEffort'
summary:
$ref: '#/components/schemas/ReasoningSummaryVerbosity'
type: object
BaseReasoningDeltaEvent:
description: Event emitted when reasoning text delta is streamed
example:
content_index: 0
delta: First, we need
item_id: item-1
output_index: 0
sequence_number: 4
type: response.reasoning_text.delta
properties:
content_index:
type: integer
delta:
type: string
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.reasoning_text.delta
type: string
required:
- type
- output_index
- item_id
- content_index
- delta
- sequence_number
type: object
BaseReasoningDoneEvent:
description: Event emitted when reasoning text streaming is complete
example:
content_index: 0
item_id: item-1
output_index: 0
sequence_number: 6
text: First, we need to identify the key components and then combine them logically.
type: response.reasoning_text.done
properties:
content_index:
type: integer
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
text:
type: string
type:
enum:
- response.reasoning_text.done
type: string
required:
- type
- output_index
- item_id
- content_index
- text
- sequence_number
type: object
BaseReasoningSummaryPartAddedEvent:
description: Event emitted when a reasoning summary part is added
example:
item_id: item-1
output_index: 0
part:
text: ''
type: summary_text
sequence_number: 3
summary_index: 0
type: response.reasoning_summary_part.added
properties:
item_id:
type: string
output_index:
type: integer
part:
$ref: '#/components/schemas/ReasoningSummaryText'
sequence_number:
type: integer
summary_index:
type: integer
type:
enum:
- response.reasoning_summary_part.added
type: string
required:
- type
- output_index
- item_id
- summary_index
- part
- sequence_number
type: object
BaseReasoningSummaryPartDoneEvent:
description: Event emitted when a reasoning summary part is complete
example:
item_id: item-1
output_index: 0
part:
text: Analyzing the problem step by step to find the optimal solution.
type: summary_text
sequence_number: 7
summary_index: 0
type: response.reasoning_summary_part.done
properties:
item_id:
type: string
output_index:
type: integer
part:
$ref: '#/components/schemas/ReasoningSummaryText'
sequence_number:
type: integer
summary_index:
type: integer
type:
enum:
- response.reasoning_summary_part.done
type: string
required:
- type
- output_index
- item_id
- summary_index
- part
- sequence_number
type: object
BaseReasoningSummaryTextDeltaEvent:
description: Event emitted when reasoning summary text delta is streamed
example:
delta: Analyzing
item_id: item-1
output_index: 0
sequence_number: 4
summary_index: 0
type: response.reasoning_summary_text.delta
properties:
delta:
type: string
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
summary_index:
type: integer
type:
enum:
- response.reasoning_summary_text.delta
type: string
required:
- type
- item_id
- output_index
- summary_index
- delta
- sequence_number
type: object
BaseReasoningSummaryTextDoneEvent:
description: Event emitted when reasoning summary text streaming is complete
example:
item_id: item-1
output_index: 0
sequence_number: 6
summary_index: 0
text: Analyzing the problem step by step to find the optimal solution.
type: response.reasoning_summary_text.done
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
summary_index:
type: integer
text:
type: string
type:
enum:
- response.reasoning_summary_text.done
type: string
required:
- type
- item_id
- output_index
- summary_index
- text
- sequence_number
type: object
BaseRefusalDeltaEvent:
description: Event emitted when a refusal delta is streamed
example:
content_index: 0
delta: I'm sorry
item_id: item-1
output_index: 0
sequence_number: 4
type: response.refusal.delta
properties:
content_index:
type: integer
delta:
type: string
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.refusal.delta
type: string
required:
- type
- output_index
- item_id
- content_index
- delta
- sequence_number
type: object
BaseRefusalDoneEvent:
description: Event emitted when refusal streaming is complete
example:
content_index: 0
item_id: item-1
output_index: 0
refusal: I'm sorry, but I can't assist with that request.
sequence_number: 6
type: response.refusal.done
properties:
content_index:
type: integer
item_id:
type: string
output_index:
type: integer
refusal:
type: string
sequence_number:
type: integer
type:
enum:
- response.refusal.done
type: string
required:
- type
- output_index
- item_id
- content_index
- refusal
- sequence_number
type: object
BaseResponsesResult:
example:
completed_at: 1704067210
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: completed
temperature: null
tool_choice: auto
tools: []
top_p: null
properties:
background:
nullable: true
type: boolean
completed_at:
nullable: true
type: integer
created_at:
type: integer
error:
$ref: '#/components/schemas/ResponsesErrorField'
frequency_penalty:
format: double
nullable: true
type: number
id:
type: string
incomplete_details:
$ref: '#/components/schemas/IncompleteDetails'
instructions:
$ref: '#/components/schemas/BaseInputs'
max_output_tokens:
nullable: true
type: integer
max_tool_calls:
nullable: true
type: integer
metadata:
$ref: '#/components/schemas/RequestMetadata'
model:
type: string
object:
enum:
- response
type: string
output:
items:
discriminator:
mapping:
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
function_call: '#/components/schemas/OutputItemFunctionCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
propertyName: type
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'
type: array
output_text:
type: string
parallel_tool_calls:
type: boolean
presence_penalty:
format: double
nullable: true
type: number
previous_response_id:
nullable: true
type: string
prompt:
$ref: '#/components/schemas/StoredPromptTemplate'
prompt_cache_key:
nullable: true
type: string
reasoning:
$ref: '#/components/schemas/BaseReasoningConfig'
safety_identifier:
nullable: true
type: string
service_tier:
$ref: '#/components/schemas/ServiceTier'
status:
$ref: '#/components/schemas/OpenAIResponsesResponseStatus'
store:
type: boolean
temperature:
format: double
nullable: true
type: number
text:
$ref: '#/components/schemas/TextConfig'
tool_choice:
$ref: '#/components/schemas/OpenAIResponsesToolChoice'
tools:
items:
oneOf:
- allOf:
- $ref: '#/components/schemas/FunctionTool'
- properties: {}
type: object
description: Function tool definition
example:
description: Get the current weather in a location
name: get_weather
parameters:
properties:
location:
description: The city and state
type: string
unit:
enum:
- celsius
- fahrenheit
type: string
required:
- location
type: object
type: function
- $ref: '#/components/schemas/Preview_WebSearchServerTool'
- $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool'
- $ref: '#/components/schemas/Legacy_WebSearchServerTool'
- $ref: '#/components/schemas/WebSearchServerTool'
- $ref: '#/components/schemas/FileSearchServerTool'
- $ref: '#/components/schemas/ComputerUseServerTool'
- $ref: '#/components/schemas/CodeInterpreterServerTool'
- $ref: '#/components/schemas/McpServerTool'
- $ref: '#/components/schemas/ImageGenerationServerTool'
- $ref: '#/components/schemas/CodexLocalShellTool'
- $ref: '#/components/schemas/ShellServerTool'
- $ref: '#/components/schemas/ApplyPatchServerTool'
- $ref: '#/components/schemas/CustomTool'
type: array
top_logprobs:
type: integer
top_p:
format: double
nullable: true
type: number
truncation:
$ref: '#/components/schemas/Truncation'
usage:
$ref: '#/components/schemas/OpenAIResponsesUsage'
user:
nullable: true
type: string
required:
- id
- object
- created_at
- model
- status
- completed_at
- output
- error
- incomplete_details
- temperature
- top_p
- presence_penalty
- frequency_penalty
- instructions
- metadata
- tools
- tool_choice
- parallel_tool_calls
type: object
BaseTextDeltaEvent:
description: Event emitted when a text delta is streamed
example:
content_index: 0
delta: Hello
item_id: item-1
logprobs: []
output_index: 0
sequence_number: 4
type: response.output_text.delta
properties:
content_index:
type: integer
delta:
type: string
item_id:
type: string
logprobs:
items:
$ref: '#/components/schemas/OpenResponsesLogProbs'
type: array
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.output_text.delta
type: string
required:
- type
- logprobs
- output_index
- item_id
- content_index
- delta
- sequence_number
type: object
BaseTextDoneEvent:
description: Event emitted when text streaming is complete
example:
content_index: 0
item_id: item-1
logprobs: []
output_index: 0
sequence_number: 6
text: Hello! How can I help you?
type: response.output_text.done
properties:
content_index:
type: integer
item_id:
type: string
logprobs:
items:
$ref: '#/components/schemas/OpenResponsesLogProbs'
type: array
output_index:
type: integer
sequence_number:
type: integer
text:
type: string
type:
enum:
- response.output_text.done
type: string
required:
- type
- output_index
- item_id
- content_index
- text
- sequence_number
- logprobs
type: object
BigNumberUnion:
description: Price per million prompt tokens
example: 1000
type: string
BulkAddWorkspaceMembersRequest:
example:
user_ids:
- user_abc123
- user_def456
properties:
user_ids:
description: List of user IDs to add to the workspace. Members are assigned the same role they hold in the organization.
example:
- user_abc123
- user_def456
items:
type: string
maxItems: 100
minItems: 1
type: array
required:
- user_ids
type: object
BulkAddWorkspaceMembersResponse:
example:
added_count: 1
data:
- created_at: '2025-08-24T10:30:00Z'
id: 660e8400-e29b-41d4-a716-446655440000
role: member
user_id: user_abc123
workspace_id: 550e8400-e29b-41d4-a716-446655440000
properties:
added_count:
description: Number of workspace memberships created or updated
example: 2
type: integer
data:
description: List of added workspace memberships
items:
$ref: '#/components/schemas/WorkspaceMember'
type: array
required:
- data
- added_count
type: object
BulkAssignKeysRequest:
example:
key_hashes:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
properties:
key_hashes:
description: Array of API key hashes to assign to the guardrail
example:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
items:
minLength: 1
type: string
minItems: 1
type: array
required:
- key_hashes
type: object
BulkAssignKeysResponse:
example:
assigned_count: 3
properties:
assigned_count:
description: Number of keys successfully assigned
example: 3
type: integer
required:
- assigned_count
type: object
BulkAssignMembersRequest:
example:
member_user_ids:
- user_abc123
- user_def456
properties:
member_user_ids:
description: Array of member user IDs to assign to the guardrail
example:
- user_abc123
- user_def456
items:
minLength: 1
type: string
minItems: 1
type: array
required:
- member_user_ids
type: object
BulkAssignMembersResponse:
example:
assigned_count: 2
properties:
assigned_count:
description: Number of members successfully assigned
example: 2
type: integer
required:
- assigned_count
type: object
BulkRemoveWorkspaceMembersRequest:
example:
user_ids:
- user_abc123
- user_def456
properties:
user_ids:
description: List of user IDs to remove from the workspace
example:
- user_abc123
- user_def456
items:
type: string
maxItems: 100
minItems: 1
type: array
required:
- user_ids
type: object
BulkRemoveWorkspaceMembersResponse:
example:
removed_count: 2
properties:
removed_count:
description: Number of members removed
example: 2
type: integer
required:
- removed_count
type: object
BulkUnassignKeysRequest:
example:
key_hashes:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
properties:
key_hashes:
description: Array of API key hashes to unassign from the guardrail
example:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
items:
minLength: 1
type: string
minItems: 1
type: array
required:
- key_hashes
type: object
BulkUnassignKeysResponse:
example:
unassigned_count: 3
properties:
unassigned_count:
description: Number of keys successfully unassigned
example: 3
type: integer
required:
- unassigned_count
type: object
BulkUnassignMembersRequest:
example:
member_user_ids:
- user_abc123
- user_def456
properties:
member_user_ids:
description: Array of member user IDs to unassign from the guardrail
example:
- user_abc123
- user_def456
items:
minLength: 1
type: string
minItems: 1
type: array
required:
- member_user_ids
type: object
BulkUnassignMembersResponse:
example:
unassigned_count: 2
properties:
unassigned_count:
description: Number of members successfully unassigned
example: 2
type: integer
required:
- unassigned_count
type: object
ChatAssistantImages:
description: Generated images from image generation models
example:
- image_url:
url: data:image/png;base64,iVBORw0KGgo...
items:
properties:
image_url:
properties:
url:
description: URL or base64-encoded data of the generated image
type: string
required:
- url
type: object
required:
- image_url
type: object
type: array
ChatAssistantMessage:
description: Assistant message for requests and responses
example:
content: The capital of France is Paris.
role: assistant
properties:
audio:
$ref: '#/components/schemas/ChatAudioOutput'
content:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/ChatContentItems'
type: array
- nullable: true
description: Assistant message content
images:
$ref: '#/components/schemas/ChatAssistantImages'
name:
description: Optional name for the assistant
type: string
reasoning:
description: Reasoning output
nullable: true
type: string
reasoning_details:
$ref: '#/components/schemas/ChatReasoningDetails'
refusal:
description: Refusal message if content was refused
nullable: true
type: string
role:
enum:
- assistant
type: string
tool_calls:
description: Tool calls made by the assistant
items:
$ref: '#/components/schemas/ChatToolCall'
type: array
required:
- role
type: object
ChatAudioOutput:
description: Audio output data or reference
example:
data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f
expires_at: 1677652400
id: audio_abc123
transcript: Hello! How can I help you today?
properties:
data:
description: Base64 encoded audio data
type: string
expires_at:
description: Audio expiration timestamp
type: integer
id:
description: Audio output identifier
type: string
transcript:
description: Audio transcript
type: string
type: object
ChatChoice:
description: Chat completion choice
example:
finish_reason: stop
index: 0
logprobs: null
message:
content: The capital of France is Paris.
role: assistant
properties:
finish_reason:
$ref: '#/components/schemas/ChatFinishReasonEnum'
index:
description: Choice index
example: 0
type: integer
logprobs:
$ref: '#/components/schemas/ChatTokenLogprobs'
message:
$ref: '#/components/schemas/ChatAssistantMessage'
required:
- finish_reason
- index
- message
type: object
ChatContentAudio:
description: Audio input content part. Supported audio formats vary by provider.
example:
input_audio:
data: SGVsbG8gV29ybGQ=
format: wav
type: input_audio
properties:
input_audio:
properties:
data:
description: Base64 encoded audio data
type: string
format:
description: >-
Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by
provider.
type: string
required:
- data
- format
type: object
type:
enum:
- input_audio
type: string
required:
- type
- input_audio
type: object
ChatContentCacheControl:
allOf:
- $ref: '#/components/schemas/AnthropicCacheControlDirective'
- properties: {}
type: object
description: Cache control for the content part
example:
ttl: 5m
type: ephemeral
ChatContentFile:
description: File content part for document processing
example:
file:
file_data: https://example.com/document.pdf
filename: document.pdf
type: file
properties:
file:
properties:
file_data:
description: File content as base64 data URL or URL
type: string
file_id:
description: File ID for previously uploaded files
type: string
filename:
description: Original filename
type: string
type: object
type:
enum:
- file
type: string
required:
- type
- file
type: object
ChatContentImage:
description: Image content part for vision models
example:
image_url:
detail: auto
url: https://example.com/image.jpg
type: image_url
properties:
image_url:
properties:
detail:
description: Image detail level for vision models
enum:
- auto
- low
- high
type: string
url:
description: 'URL of the image (data: URLs supported)'
type: string
required:
- url
type: object
type:
enum:
- image_url
type: string
required:
- type
- image_url
type: object
ChatContentItems:
description: Content part for chat completion messages
discriminator:
mapping:
file: '#/components/schemas/ChatContentFile'
image_url: '#/components/schemas/ChatContentImage'
input_audio: '#/components/schemas/ChatContentAudio'
input_video: '#/components/schemas/Legacy_ChatContentVideo'
text: '#/components/schemas/ChatContentText'
video_url: '#/components/schemas/ChatContentVideo'
propertyName: type
example:
text: Hello, world!
type: text
oneOf:
- $ref: '#/components/schemas/ChatContentText'
- $ref: '#/components/schemas/ChatContentImage'
- $ref: '#/components/schemas/ChatContentAudio'
- $ref: '#/components/schemas/Legacy_ChatContentVideo'
- $ref: '#/components/schemas/ChatContentVideo'
- $ref: '#/components/schemas/ChatContentFile'
ChatContentText:
description: Text content part
example:
text: Hello, world!
type: text
properties:
cache_control:
$ref: '#/components/schemas/ChatContentCacheControl'
text:
type: string
type:
enum:
- text
type: string
required:
- type
- text
type: object
ChatContentVideo:
description: Video input content part
example:
type: video_url
video_url:
url: https://example.com/video.mp4
properties:
type:
enum:
- video_url
type: string
video_url:
$ref: '#/components/schemas/ChatContentVideoInput'
required:
- type
- video_url
type: object
ChatContentVideoInput:
description: Video input object
example:
url: https://example.com/video.mp4
properties:
url:
description: 'URL of the video (data: URLs supported)'
type: string
required:
- url
type: object
ChatDebugOptions:
description: Debug options for inspecting request transformations (streaming only)
example:
echo_upstream_body: true
properties:
echo_upstream_body:
description: >-
If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only
works with streaming mode.
example: true
type: boolean
type: object
ChatDeveloperMessage:
description: Developer message
example:
content: This is a message from the developer.
role: developer
properties:
content:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/ChatContentText'
type: array
description: Developer message content
example: This is a message from the developer.
name:
description: Optional name for the developer message
example: Developer
type: string
role:
enum:
- developer
type: string
required:
- role
- content
type: object
ChatFinishReasonEnum:
enum:
- tool_calls
- stop
- length
- content_filter
- error
- null
example: stop
nullable: true
type: string
ChatFormatGrammarConfig:
description: Custom grammar response format
example:
grammar: root ::= "yes" | "no"
type: grammar
properties:
grammar:
description: Custom grammar for text generation
example: root ::= "yes" | "no"
type: string
type:
enum:
- grammar
type: string
required:
- type
- grammar
type: object
ChatFormatJsonSchemaConfig:
description: JSON Schema response format for structured outputs
example:
json_schema:
name: math_response
schema:
properties:
answer:
type: number
required:
- answer
type: object
type: json_schema
properties:
json_schema:
$ref: '#/components/schemas/ChatJsonSchemaConfig'
type:
enum:
- json_schema
type: string
required:
- type
- json_schema
type: object
ChatFormatPythonConfig:
description: Python code response format
example:
type: python
properties:
type:
enum:
- python
type: string
required:
- type
type: object
ChatFormatTextConfig:
description: Default text response format
example:
type: text
properties:
type:
enum:
- text
type: string
required:
- type
type: object
ChatFunctionTool:
anyOf:
- properties:
cache_control:
$ref: '#/components/schemas/ChatContentCacheControl'
function:
description: Function definition for tool calling
example:
description: Get the current weather for a location
name: get_weather
parameters:
properties:
location:
description: City name
type: string
required:
- location
type: object
properties:
description:
description: Function description for the model
example: Get the current weather for a location
type: string
name:
description: Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)
example: get_weather
maxLength: 64
type: string
parameters:
additionalProperties:
nullable: true
description: Function parameters as JSON Schema object
example:
properties:
location:
description: City name
type: string
required:
- location
type: object
type: object
strict:
description: Enable strict schema adherence
example: false
nullable: true
type: boolean
required:
- name
type: object
type:
enum:
- function
type: string
required:
- type
- function
type: object
- $ref: '#/components/schemas/DatetimeServerTool'
- $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
- $ref: '#/components/schemas/ChatSearchModelsServerTool'
- $ref: '#/components/schemas/WebFetchServerTool'
- $ref: '#/components/schemas/OpenRouterWebSearchServerTool'
- $ref: '#/components/schemas/ChatWebSearchShorthand'
description: Tool definition for function calling (regular function or OpenRouter built-in server tool)
example:
function:
description: Get the current weather for a location
name: get_weather
parameters:
properties:
location:
description: City name
type: string
unit:
enum:
- celsius
- fahrenheit
type: string
required:
- location
type: object
type: function
ChatJsonSchemaConfig:
description: JSON Schema configuration object
example:
description: A mathematical response
name: math_response
schema:
properties:
answer:
type: number
required:
- answer
type: object
strict: true
properties:
description:
description: Schema description for the model
example: A mathematical response
type: string
name:
description: Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)
example: math_response
maxLength: 64
type: string
schema:
additionalProperties:
nullable: true
description: JSON Schema object
example:
properties:
answer:
type: number
required:
- answer
type: object
type: object
strict:
description: Enable strict schema adherence
example: false
nullable: true
type: boolean
required:
- name
type: object
ChatMessages:
description: Chat completion message with role-based discrimination
discriminator:
mapping:
assistant: '#/components/schemas/ChatAssistantMessage'
developer: '#/components/schemas/ChatDeveloperMessage'
system: '#/components/schemas/ChatSystemMessage'
tool: '#/components/schemas/ChatToolMessage'
user: '#/components/schemas/ChatUserMessage'
propertyName: role
example:
content: What is the capital of France?
role: user
oneOf:
- $ref: '#/components/schemas/ChatSystemMessage'
- $ref: '#/components/schemas/ChatUserMessage'
- $ref: '#/components/schemas/ChatDeveloperMessage'
- $ref: '#/components/schemas/ChatAssistantMessage'
- $ref: '#/components/schemas/ChatToolMessage'
ChatModelNames:
description: Models to use for completion
example:
- openai/gpt-4
- openai/gpt-4o
items:
allOf:
- $ref: '#/components/schemas/ModelName'
- description: Available OpenRouter chat completion models
type: array
ChatNamedToolChoice:
description: Named tool choice for specific function
example:
function:
name: get_weather
type: function
properties:
function:
properties:
name:
description: Function name to call
example: get_weather
type: string
required:
- name
type: object
type:
enum:
- function
type: string
required:
- type
- function
type: object
ChatReasoningDetails:
description: Reasoning details for extended thinking models
example:
- thinking: Let me work through this step by step...
type: thinking
items:
$ref: '#/components/schemas/ReasoningDetailUnion'
type: array
ChatReasoningSummaryVerbosityEnum:
enum:
- auto
- concise
- detailed
- null
example: concise
nullable: true
type: string
ChatRequest:
description: Chat completion request parameters
example:
max_tokens: 150
messages:
- content: You are a helpful assistant.
role: system
- content: What is the capital of France?
role: user
model: openai/gpt-4
temperature: 0.7
properties:
cache_control:
allOf:
- $ref: '#/components/schemas/AnthropicCacheControlDirective'
- description: >-
Enable automatic prompt caching. When set, the system automatically applies cache breakpoints to the
last cacheable block in the request. Currently supported for Anthropic Claude models.
debug:
$ref: '#/components/schemas/ChatDebugOptions'
frequency_penalty:
description: Frequency penalty (-2.0 to 2.0)
example: 0
format: double
nullable: true
type: number
image_config:
$ref: '#/components/schemas/ImageConfig'
logit_bias:
additionalProperties:
format: double
type: number
description: Token logit bias adjustments
example:
'50256': -100
nullable: true
type: object
logprobs:
description: Return log probabilities
example: false
nullable: true
type: boolean
max_completion_tokens:
description: Maximum tokens in completion
example: 100
nullable: true
type: integer
max_tokens:
description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.'
example: 100
nullable: true
type: integer
messages:
description: List of messages for the conversation
example:
- content: Hello!
role: user
items:
$ref: '#/components/schemas/ChatMessages'
minItems: 1
type: array
metadata:
additionalProperties:
type: string
description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values)
example:
session_id: session-456
user_id: user-123
type: object
modalities:
description: Output modalities for the response. Supported values are "text", "image", and "audio".
example:
- text
- image
items:
enum:
- text
- image
- audio
type: string
type: array
model:
$ref: '#/components/schemas/ModelName'
models:
$ref: '#/components/schemas/ChatModelNames'
parallel_tool_calls:
description: >-
Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool
calls in a single response.
example: true
nullable: true
type: boolean
plugins:
description: Plugins you want to enable for this request, including their settings.
items:
discriminator:
mapping:
auto-router: '#/components/schemas/AutoRouterPlugin'
context-compression: '#/components/schemas/ContextCompressionPlugin'
file-parser: '#/components/schemas/FileParserPlugin'
moderation: '#/components/schemas/ModerationPlugin'
pareto-router: '#/components/schemas/ParetoRouterPlugin'
response-healing: '#/components/schemas/ResponseHealingPlugin'
web: '#/components/schemas/WebSearchPlugin'
propertyName: id
oneOf:
- $ref: '#/components/schemas/AutoRouterPlugin'
- $ref: '#/components/schemas/ModerationPlugin'
- $ref: '#/components/schemas/WebSearchPlugin'
- $ref: '#/components/schemas/FileParserPlugin'
- $ref: '#/components/schemas/ResponseHealingPlugin'
- $ref: '#/components/schemas/ContextCompressionPlugin'
- $ref: '#/components/schemas/ParetoRouterPlugin'
type: array
presence_penalty:
description: Presence penalty (-2.0 to 2.0)
example: 0
format: double
nullable: true
type: number
provider:
$ref: '#/components/schemas/ProviderPreferences'
reasoning:
description: Configuration options for reasoning models
example:
effort: medium
summary: concise
properties:
effort:
description: Constrains effort on reasoning for reasoning models
enum:
- xhigh
- high
- medium
- low
- minimal
- none
- null
example: medium
nullable: true
type: string
summary:
$ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum'
type: object
response_format:
description: Response format configuration
discriminator:
mapping:
grammar: '#/components/schemas/ChatFormatGrammarConfig'
json_object: '#/components/schemas/FormatJsonObjectConfig'
json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig'
python: '#/components/schemas/ChatFormatPythonConfig'
text: '#/components/schemas/ChatFormatTextConfig'
propertyName: type
example:
type: json_object
oneOf:
- $ref: '#/components/schemas/ChatFormatTextConfig'
- $ref: '#/components/schemas/FormatJsonObjectConfig'
- $ref: '#/components/schemas/ChatFormatJsonSchemaConfig'
- $ref: '#/components/schemas/ChatFormatGrammarConfig'
- $ref: '#/components/schemas/ChatFormatPythonConfig'
route:
$ref: '#/components/schemas/DeprecatedRoute'
seed:
description: Random seed for deterministic outputs
example: 42
nullable: true
type: integer
service_tier:
description: The service tier to use for processing this request.
enum:
- auto
- default
- flex
- priority
- scale
- null
example: auto
nullable: true
type: string
session_id:
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 256 characters.
maxLength: 256
type: string
stop:
anyOf:
- type: string
- items:
type: string
maxItems: 4
type: array
- nullable: true
description: Stop sequences (up to 4)
example:
- |+
stream:
default: false
description: Enable streaming response
example: false
type: boolean
stream_options:
$ref: '#/components/schemas/ChatStreamOptions'
temperature:
description: Sampling temperature (0-2)
example: 0.7
format: double
nullable: true
type: number
tool_choice:
$ref: '#/components/schemas/ChatToolChoice'
tools:
description: Available tools for function calling
example:
- function:
description: Get weather
name: get_weather
type: function
items:
$ref: '#/components/schemas/ChatFunctionTool'
type: array
top_logprobs:
description: Number of top log probabilities to return (0-20)
example: 5
nullable: true
type: integer
top_p:
description: Nucleus sampling parameter (0-1)
example: 1
format: double
nullable: true
type: number
trace:
$ref: '#/components/schemas/TraceConfig'
user:
description: Unique user identifier
example: user-123
type: string
required:
- messages
type: object
ChatResult:
description: Chat completion response
example:
choices:
- finish_reason: stop
index: 0
message:
content: The capital of France is Paris.
role: assistant
created: 1677652288
id: chatcmpl-123
model: openai/gpt-4
object: chat.completion
usage:
completion_tokens: 15
prompt_tokens: 10
total_tokens: 25
properties:
choices:
description: List of completion choices
items:
$ref: '#/components/schemas/ChatChoice'
type: array
created:
description: Unix timestamp of creation
example: 1677652288
type: integer
id:
description: Unique completion identifier
example: chatcmpl-123
type: string
model:
description: Model used for completion
example: openai/gpt-4
type: string
object:
enum:
- chat.completion
type: string
service_tier:
description: The service tier used by the upstream provider for this request
example: default
nullable: true
type: string
system_fingerprint:
description: System fingerprint
example: fp_44709d6fcb
nullable: true
type: string
usage:
$ref: '#/components/schemas/ChatUsage'
required:
- id
- choices
- created
- model
- object
- system_fingerprint
type: object
ChatSearchModelsServerTool:
description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter'
example:
parameters:
max_results: 5
type: openrouter:experimental__search_models
properties:
parameters:
$ref: '#/components/schemas/SearchModelsServerToolConfig'
type:
enum:
- openrouter:experimental__search_models
type: string
required:
- type
type: object
ChatStreamChoice:
description: Streaming completion choice chunk
example:
delta:
content: Hello
role: assistant
finish_reason: null
index: 0
properties:
delta:
$ref: '#/components/schemas/ChatStreamDelta'
finish_reason:
$ref: '#/components/schemas/ChatFinishReasonEnum'
index:
description: Choice index
example: 0
type: integer
logprobs:
$ref: '#/components/schemas/ChatTokenLogprobs'
required:
- delta
- finish_reason
- index
type: object
ChatStreamChunk:
description: Streaming chat completion chunk
example:
choices:
- delta:
content: Hello
role: assistant
finish_reason: null
index: 0
created: 1677652288
id: chatcmpl-123
model: openai/gpt-4
object: chat.completion.chunk
properties:
choices:
description: List of streaming chunk choices
items:
$ref: '#/components/schemas/ChatStreamChoice'
type: array
created:
description: Unix timestamp of creation
example: 1677652288
type: integer
error:
description: Error information
example:
code: 429
message: Rate limit exceeded
properties:
code:
description: Error code
example: 429
format: int32
type: integer
message:
description: Error message
example: Rate limit exceeded
type: string
required:
- message
- code
type: object
id:
description: Unique chunk identifier
example: chatcmpl-123
type: string
model:
description: Model used for completion
example: openai/gpt-4
type: string
object:
enum:
- chat.completion.chunk
type: string
service_tier:
description: The service tier used by the upstream provider for this request
example: default
nullable: true
type: string
system_fingerprint:
description: System fingerprint
example: fp_44709d6fcb
type: string
usage:
$ref: '#/components/schemas/ChatUsage'
required:
- id
- choices
- created
- model
- object
type: object
x-speakeasy-entity: ChatStreamChunk
ChatStreamDelta:
description: Delta changes in streaming response
example:
content: Hello
role: assistant
properties:
audio:
allOf:
- $ref: '#/components/schemas/ChatAudioOutput'
- description: Audio output data
content:
description: Message content delta
example: Hello
nullable: true
type: string
reasoning:
description: Reasoning content delta
example: I need to
nullable: true
type: string
reasoning_details:
$ref: '#/components/schemas/ChatStreamReasoningDetails'
refusal:
description: Refusal message delta
example: null
nullable: true
type: string
role:
description: The role of the message author
enum:
- assistant
example: assistant
type: string
tool_calls:
description: Tool calls delta
items:
$ref: '#/components/schemas/ChatStreamToolCall'
type: array
type: object
ChatStreamOptions:
description: Streaming configuration options
example:
include_usage: true
nullable: true
properties:
include_usage:
deprecated: true
description: 'Deprecated: This field has no effect. Full usage details are always included.'
example: true
type: boolean
type: object
ChatStreamReasoningDetails:
description: Reasoning details for extended thinking models
example:
- text: Let me think about this...
type: text
items:
$ref: '#/components/schemas/ReasoningDetailUnion'
type: array
ChatStreamToolCall:
description: Tool call delta for streaming responses
example:
function:
arguments: '{"location": "..."}'
name: get_weather
id: call_abc123
index: 0
type: function
properties:
function:
description: Function call details
properties:
arguments:
description: Function arguments as JSON string
example: '{"location": "..."}'
type: string
name:
description: Function name
example: get_weather
type: string
type: object
id:
description: Tool call identifier
example: call_abc123
type: string
index:
description: Tool call index in the array
example: 0
type: integer
type:
description: Tool call type
enum:
- function
example: function
type: string
required:
- index
type: object
ChatSystemMessage:
description: System message for setting behavior
example:
content: You are a helpful assistant.
name: Assistant Config
role: system
properties:
content:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/ChatContentText'
type: array
description: System message content
example: You are a helpful assistant.
name:
description: Optional name for the system message
example: Assistant Config
type: string
role:
enum:
- system
type: string
required:
- role
- content
type: object
ChatTokenLogprob:
description: Token log probability information
example:
bytes: null
logprob: -0.612345
token: ' Hello'
top_logprobs:
- bytes: null
logprob: -0.612345
token: ' Hello'
properties:
bytes:
description: UTF-8 bytes of the token
items:
type: integer
nullable: true
type: array
logprob:
description: Log probability of the token
format: double
type: number
token:
description: The token
type: string
top_logprobs:
description: Top alternative tokens with probabilities
items:
properties:
bytes:
items:
type: integer
nullable: true
type: array
logprob:
format: double
type: number
token:
type: string
required:
- token
- logprob
- bytes
type: object
type: array
required:
- token
- logprob
- bytes
- top_logprobs
type: object
ChatTokenLogprobs:
description: Log probabilities for the completion
example:
content:
- bytes: null
logprob: -0.612345
token: ' Hello'
top_logprobs: []
refusal: null
nullable: true
properties:
content:
description: Log probabilities for content tokens
items:
$ref: '#/components/schemas/ChatTokenLogprob'
nullable: true
type: array
refusal:
description: Log probabilities for refusal tokens
items:
$ref: '#/components/schemas/ChatTokenLogprob'
nullable: true
type: array
required:
- content
type: object
ChatToolCall:
description: Tool call made by the assistant
example:
function:
arguments: '{"location": "Boston, MA"}'
name: get_current_weather
id: call_abc123
type: function
properties:
function:
properties:
arguments:
description: Function arguments as JSON string
type: string
name:
description: Function name to call
type: string
required:
- name
- arguments
type: object
id:
description: Tool call identifier
type: string
type:
enum:
- function
type: string
required:
- id
- type
- function
type: object
ChatToolChoice:
anyOf:
- enum:
- none
type: string
- enum:
- auto
type: string
- enum:
- required
type: string
- $ref: '#/components/schemas/ChatNamedToolChoice'
description: Tool choice configuration
example: auto
ChatToolMessage:
description: Tool response message
example:
content: The weather in San Francisco is 72°F and sunny.
role: tool
tool_call_id: call_abc123
properties:
content:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/ChatContentItems'
type: array
description: Tool response content
example: The weather in San Francisco is 72°F and sunny.
role:
enum:
- tool
type: string
tool_call_id:
description: ID of the assistant message tool call this message responds to
example: call_abc123
type: string
required:
- role
- content
- tool_call_id
type: object
ChatUsage:
description: Token usage statistics
example:
completion_tokens: 15
completion_tokens_details:
reasoning_tokens: 5
cost: 0.0012
cost_details:
upstream_inference_completions_cost: 0.0004
upstream_inference_cost: null
upstream_inference_prompt_cost: 0.0008
is_byok: false
prompt_tokens: 10
prompt_tokens_details:
cached_tokens: 2
total_tokens: 25
properties:
completion_tokens:
description: Number of tokens in the completion
type: integer
completion_tokens_details:
description: Detailed completion token usage
nullable: true
properties:
accepted_prediction_tokens:
description: Accepted prediction tokens
nullable: true
type: integer
audio_tokens:
description: Tokens used for audio output
nullable: true
type: integer
reasoning_tokens:
description: Tokens used for reasoning
nullable: true
type: integer
rejected_prediction_tokens:
description: Rejected prediction tokens
nullable: true
type: integer
type: object
cost:
description: Cost of the completion
format: double
nullable: true
type: number
cost_details:
$ref: '#/components/schemas/CostDetails'
is_byok:
description: Whether a request was made using a Bring Your Own Key configuration
type: boolean
prompt_tokens:
description: Number of tokens in the prompt
type: integer
prompt_tokens_details:
description: Detailed prompt token usage
nullable: true
properties:
audio_tokens:
description: Audio input tokens
type: integer
cache_write_tokens:
description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing.
type: integer
cached_tokens:
description: Cached prompt tokens
type: integer
video_tokens:
description: Video input tokens
type: integer
type: object
total_tokens:
description: Total number of tokens
type: integer
required:
- completion_tokens
- prompt_tokens
- total_tokens
type: object
ChatUserMessage:
description: User message
example:
content: What is the capital of France?
role: user
properties:
content:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/ChatContentItems'
type: array
description: User message content
example: What is the capital of France?
name:
description: Optional name for the user
example: User
type: string
role:
enum:
- user
type: string
required:
- role
- content
type: object
ChatWebSearchShorthand:
description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search.
example:
type: web_search_preview
properties:
allowed_domains:
description: >-
Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, and most native providers
(Anthropic, OpenAI, xAI). Not supported with Perplexity. Cannot be used with excluded_domains.
items:
type: string
type: array
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
excluded_domains:
description: >-
Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Anthropic, and xAI. Not
supported with OpenAI (silently ignored) or Perplexity. Cannot be used with allowed_domains.
items:
type: string
type: array
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
max_total_results:
description: >-
Maximum total number of search results across all search calls in a single request. Once this limit is
reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic
loops.
example: 20
type: integer
parameters:
$ref: '#/components/schemas/WebSearchConfig'
search_context_size:
$ref: '#/components/schemas/SearchQualityLevel'
type:
enum:
- web_search
- web_search_preview
- web_search_preview_2025_03_11
- web_search_2025_08_26
type: string
user_location:
$ref: '#/components/schemas/WebSearchUserLocationServerTool'
required:
- type
type: object
CodeInterpreterCallItem:
description: A code interpreter execution call with outputs
example:
code: print("Hello, World!")
container_id: container-xyz789
id: code-abc123
outputs:
- logs: Hello, World!
type: logs
status: completed
type: code_interpreter_call
properties:
code:
nullable: true
type: string
container_id:
type: string
id:
type: string
outputs:
items:
anyOf:
- properties:
type:
enum:
- image
type: string
url:
type: string
required:
- type
- url
type: object
- properties:
logs:
type: string
type:
enum:
- logs
type: string
required:
- type
- logs
type: object
nullable: true
type: array
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- code_interpreter_call
type: string
required:
- type
- id
- code
- outputs
- status
- container_id
type: object
CodeInterpreterServerTool:
description: Code interpreter tool configuration
example:
container: auto
type: code_interpreter
properties:
container:
anyOf:
- type: string
- properties:
file_ids:
items:
type: string
type: array
memory_limit:
enum:
- 1g
- 4g
- 16g
- 64g
- null
nullable: true
type: string
type:
enum:
- auto
type: string
required:
- type
type: object
type:
enum:
- code_interpreter
type: string
required:
- type
- container
type: object
CodexLocalShellTool:
description: Local shell tool configuration
example:
type: local_shell
properties:
type:
enum:
- local_shell
type: string
required:
- type
type: object
CompletedEvent:
description: Event emitted when a response has completed successfully
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output:
- content:
- annotations: []
text: Hello! How can I help you?
type: output_text
id: item-1
role: assistant
status: completed
type: message
parallel_tool_calls: true
status: completed
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 10
type: response.completed
properties:
response:
$ref: '#/components/schemas/BaseResponsesResult'
sequence_number:
type: integer
type:
enum:
- response.completed
type: string
required:
- type
- response
- sequence_number
type: object
CompoundFilter:
description: A compound filter that combines multiple comparison or compound filters
example:
filters:
- key: author
type: eq
value: Alice
type: and
properties:
filters:
items:
additionalProperties:
nullable: true
type: object
type: array
type:
enum:
- and
- or
type: string
required:
- type
- filters
type: object
ComputerUseServerTool:
description: Computer use preview tool configuration
example:
display_height: 768
display_width: 1024
environment: linux
type: computer_use_preview
properties:
display_height:
type: integer
display_width:
type: integer
environment:
enum:
- windows
- mac
- linux
- ubuntu
- browser
type: string
type:
enum:
- computer_use_preview
type: string
required:
- type
- display_height
- display_width
- environment
type: object
ConflictResponse:
description: Conflict - Resource conflict or concurrent modification
example:
error:
code: 409
message: Resource conflict. Please try again later.
properties:
error:
$ref: '#/components/schemas/ConflictResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
ConflictResponseErrorData:
description: Error data for ConflictResponse
example:
code: 409
message: Resource conflict. Please try again later.
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
ContentPartAddedEvent:
allOf:
- $ref: '#/components/schemas/BaseContentPartAddedEvent'
- properties:
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/ReasoningTextContent'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
type: object
description: Event emitted when a new content part is added to an output item
example:
content_index: 0
item_id: item-1
output_index: 0
part:
annotations: []
text: ''
type: output_text
sequence_number: 3
type: response.content_part.added
ContentPartDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseContentPartDoneEvent'
- properties:
part:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/ReasoningTextContent'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
type: object
description: Event emitted when a content part is complete
example:
content_index: 0
item_id: item-1
output_index: 0
part:
annotations: []
text: Hello! How can I help you?
type: output_text
sequence_number: 7
type: response.content_part.done
ContentPartImage:
example:
image_url:
url: https://example.com/image.png
type: image_url
properties:
image_url:
properties:
url:
type: string
required:
- url
type: object
type:
enum:
- image_url
type: string
required:
- type
- image_url
type: object
ContextCompressionEngine:
description: The compression engine to use. Defaults to "middle-out".
enum:
- middle-out
example: middle-out
type: string
ContextCompressionPlugin:
example:
enabled: true
engine: middle-out
id: context-compression
properties:
enabled:
description: Set to false to disable the context-compression plugin for this request. Defaults to true.
type: boolean
engine:
$ref: '#/components/schemas/ContextCompressionEngine'
id:
enum:
- context-compression
type: string
required:
- id
type: object
CostDetails:
description: Breakdown of upstream inference costs
example:
upstream_inference_completions_cost: 0.0004
upstream_inference_cost: null
upstream_inference_prompt_cost: 0.0008
nullable: true
properties:
upstream_inference_completions_cost:
format: double
type: number
upstream_inference_cost:
format: double
nullable: true
type: number
upstream_inference_prompt_cost:
format: double
type: number
required:
- upstream_inference_prompt_cost
- upstream_inference_completions_cost
type: object
CreatedEvent:
description: Event emitted when a response is created
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: in_progress
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 0
type: response.created
properties:
response:
$ref: '#/components/schemas/BaseResponsesResult'
sequence_number:
type: integer
type:
enum:
- response.created
type: string
required:
- type
- response
- sequence_number
type: object
CreateGuardrailRequest:
example:
allowed_models: null
allowed_providers:
- openai
- anthropic
- deepseek
description: A guardrail for limiting API usage
enforce_zdr: false
ignored_models: null
ignored_providers: null
limit_usd: 50
name: My New Guardrail
reset_interval: monthly
properties:
allowed_models:
description: Array of model identifiers (slug or canonical_slug accepted)
example:
- openai/gpt-5.2
- anthropic/claude-4.5-opus-20251124
- deepseek/deepseek-r1-0528:free
items:
type: string
minItems: 1
nullable: true
type: array
allowed_providers:
description: List of allowed provider IDs
example:
- openai
- anthropic
- deepseek
items:
type: string
minItems: 1
nullable: true
type: array
description:
description: Description of the guardrail
example: A guardrail for limiting API usage
maxLength: 1000
nullable: true
type: string
enforce_zdr:
description: Whether to enforce zero data retention
example: false
nullable: true
type: boolean
ignored_models:
description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted)
example:
- openai/gpt-4o-mini
items:
type: string
minItems: 1
nullable: true
type: array
ignored_providers:
description: List of provider IDs to exclude from routing
example:
- azure
items:
type: string
minItems: 1
nullable: true
type: array
limit_usd:
description: Spending limit in USD
example: 50
format: double
nullable: true
type: number
name:
description: Name for the new guardrail
example: My New Guardrail
maxLength: 200
minLength: 1
type: string
reset_interval:
$ref: '#/components/schemas/GuardrailInterval'
workspace_id:
description: The workspace to create the guardrail in. Defaults to the default workspace if not provided.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
format: uuid
type: string
required:
- name
type: object
CreateGuardrailResponse:
example:
data:
allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: A guardrail for limiting API usage
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 50
name: My New Guardrail
reset_interval: monthly
updated_at: null
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
allOf:
- $ref: '#/components/schemas/Guardrail'
- description: The created guardrail
required:
- data
type: object
CreateWorkspaceRequest:
example:
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
name: Production
slug: production
properties:
default_image_model:
description: Default image model for this workspace
example: openai/dall-e-3
nullable: true
type: string
default_provider_sort:
description: Default provider sort preference (price, throughput, latency, exacto)
example: price
nullable: true
type: string
default_text_model:
description: Default text model for this workspace
example: openai/gpt-4o
nullable: true
type: string
description:
description: Description of the workspace
example: Production environment workspace
maxLength: 500
nullable: true
type: string
io_logging_api_key_ids:
description: Optional array of API key IDs to filter I/O logging
example: null
items:
type: integer
nullable: true
type: array
io_logging_sampling_rate:
description: Sampling rate for I/O logging (0.0001-1)
example: 1
format: double
type: number
is_data_discount_logging_enabled:
description: Whether data discount logging is enabled
example: true
type: boolean
is_observability_broadcast_enabled:
description: Whether broadcast is enabled
example: false
type: boolean
is_observability_io_logging_enabled:
description: Whether private logging is enabled
example: false
type: boolean
name:
description: Name for the new workspace
example: Production
maxLength: 100
minLength: 1
type: string
slug:
description: URL-friendly slug (lowercase alphanumeric and hyphens only)
example: production
maxLength: 50
minLength: 1
pattern: ^[a-z0-9-]+$
type: string
required:
- name
- slug
type: object
CreateWorkspaceResponse:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: null
properties:
data:
allOf:
- $ref: '#/components/schemas/Workspace'
- description: The created workspace
required:
- data
type: object
CustomTool:
description: Custom tool configuration
example:
name: my_tool
type: custom
properties:
description:
type: string
format:
anyOf:
- properties:
type:
enum:
- text
type: string
required:
- type
type: object
- properties:
definition:
type: string
syntax:
enum:
- lark
- regex
type: string
type:
enum:
- grammar
type: string
required:
- type
- definition
- syntax
type: object
name:
type: string
type:
enum:
- custom
type: string
required:
- type
- name
type: object
DatetimeServerTool:
description: 'OpenRouter built-in server tool: returns the current date and time'
example:
parameters:
timezone: America/New_York
type: openrouter:datetime
properties:
parameters:
$ref: '#/components/schemas/DatetimeServerToolConfig'
type:
enum:
- openrouter:datetime
type: string
required:
- type
type: object
DatetimeServerToolConfig:
description: Configuration for the openrouter:datetime server tool
example:
timezone: America/New_York
properties:
timezone:
description: IANA timezone name (e.g. "America/New_York"). Defaults to UTC.
example: America/New_York
type: string
type: object
DefaultParameters:
additionalProperties: false
description: Default parameters for this model
example:
frequency_penalty: 0
presence_penalty: 0
repetition_penalty: 1
temperature: 0.7
top_k: 0
top_p: 0.9
nullable: true
properties:
frequency_penalty:
format: double
nullable: true
type: number
presence_penalty:
format: double
nullable: true
type: number
repetition_penalty:
format: double
nullable: true
type: number
temperature:
format: double
nullable: true
type: number
top_k:
nullable: true
type: integer
top_p:
format: double
nullable: true
type: number
type: object
DeleteGuardrailResponse:
example:
deleted: true
properties:
deleted:
const: true
description: Confirmation that the guardrail was deleted
example: true
type: boolean
required:
- deleted
type: object
DeleteWorkspaceResponse:
example:
deleted: true
properties:
deleted:
const: true
description: Confirmation that the workspace was deleted
example: true
type: boolean
required:
- deleted
type: object
DeprecatedRoute:
deprecated: true
description: >-
**DEPRECATED** Use providers.sort.partition instead. Backwards-compatible alias for providers.sort.partition.
Accepts legacy values: "fallback" (maps to "model"), "sort" (maps to "none").
enum:
- fallback
- sort
- null
example: fallback
nullable: true
type: string
x-fern-ignore: true
x-speakeasy-deprecation-message: Use providers.sort.partition instead.
x-speakeasy-ignore: true
EasyInputMessage:
example:
content: What is the weather today?
role: user
properties:
content:
anyOf:
- items:
oneOf:
- $ref: '#/components/schemas/InputText'
- allOf:
- $ref: '#/components/schemas/InputImage'
- properties: {}
type: object
description: Image input content item
example:
detail: auto
image_url: https://example.com/image.jpg
type: input_image
- $ref: '#/components/schemas/InputFile'
- $ref: '#/components/schemas/InputAudio'
- $ref: '#/components/schemas/InputVideo'
type: array
- type: string
- nullable: true
phase:
anyOf:
- enum:
- commentary
type: string
- enum:
- final_answer
type: string
- nullable: true
description: >-
The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer`
for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve
and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages.
example: final_answer
role:
anyOf:
- enum:
- user
type: string
- enum:
- system
type: string
- enum:
- assistant
type: string
- enum:
- developer
type: string
type:
enum:
- message
type: string
required:
- role
type: object
EdgeNetworkTimeoutResponse:
description: Infrastructure Timeout - Provider request timed out at edge network
example:
error:
code: 524
message: Request timed out. Please try again later.
properties:
error:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
EdgeNetworkTimeoutResponseErrorData:
description: Error data for EdgeNetworkTimeoutResponse
example:
code: 524
message: Request timed out. Please try again later.
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
EndpointStatus:
enum:
- 0
- -1
- -2
- -3
- -5
- -10
example: 0
type: integer
ErrorEvent:
allOf:
- $ref: '#/components/schemas/BaseErrorEvent'
- properties: {}
type: object
description: Event emitted when an error occurs during streaming
example:
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
param: null
sequence_number: 2
type: error
FailedEvent:
description: Event emitted when a response has failed
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: failed
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 3
type: response.failed
properties:
response:
$ref: '#/components/schemas/BaseResponsesResult'
sequence_number:
type: integer
type:
enum:
- response.failed
type: string
required:
- type
- response
- sequence_number
type: object
FileCitation:
example:
file_id: file-abc123
filename: research_paper.pdf
index: 0
type: file_citation
properties:
file_id:
type: string
filename:
type: string
index:
type: integer
type:
enum:
- file_citation
type: string
required:
- type
- file_id
- filename
- index
type: object
FileParserPlugin:
example:
enabled: true
id: file-parser
pdf:
engine: cloudflare-ai
properties:
enabled:
description: Set to false to disable the file-parser plugin for this request. Defaults to true.
type: boolean
id:
enum:
- file-parser
type: string
pdf:
$ref: '#/components/schemas/PDFParserOptions'
required:
- id
type: object
FilePath:
example:
file_id: file-xyz789
index: 0
type: file_path
properties:
file_id:
type: string
index:
type: integer
type:
enum:
- file_path
type: string
required:
- type
- file_id
- index
type: object
FileSearchServerTool:
description: File search tool configuration
example:
type: file_search
vector_store_ids:
- vs_abc123
properties:
filters:
anyOf:
- properties:
key:
type: string
type:
enum:
- eq
- ne
- gt
- gte
- lt
- lte
type: string
value:
anyOf:
- type: string
- format: double
type: number
- type: boolean
- items:
anyOf:
- type: string
- format: double
type: number
type: array
required:
- key
- type
- value
type: object
- $ref: '#/components/schemas/CompoundFilter'
- nullable: true
max_num_results:
type: integer
ranking_options:
properties:
ranker:
enum:
- auto
- default-2024-11-15
type: string
score_threshold:
format: double
type: number
type: object
type:
enum:
- file_search
type: string
vector_store_ids:
items:
type: string
type: array
required:
- type
- vector_store_ids
type: object
ForbiddenResponse:
description: Forbidden - Authentication successful but insufficient permissions
example:
error:
code: 403
message: Only management keys can perform this operation
properties:
error:
$ref: '#/components/schemas/ForbiddenResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
ForbiddenResponseErrorData:
description: Error data for ForbiddenResponse
example:
code: 403
message: Only management keys can perform this operation
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
FormatJsonObjectConfig:
description: JSON object response format
example:
type: json_object
properties:
type:
enum:
- json_object
type: string
required:
- type
type: object
FormatJsonSchemaConfig:
description: JSON schema constrained response format
example:
description: User information schema
name: user_info
schema:
properties:
age:
type: number
name:
type: string
required:
- name
type: object
type: json_schema
properties:
description:
type: string
name:
type: string
schema:
additionalProperties:
nullable: true
type: object
strict:
nullable: true
type: boolean
type:
enum:
- json_schema
type: string
required:
- type
- name
- schema
type: object
Formats:
anyOf:
- $ref: '#/components/schemas/FormatTextConfig'
- $ref: '#/components/schemas/FormatJsonObjectConfig'
- $ref: '#/components/schemas/FormatJsonSchemaConfig'
description: Text response format configuration
example:
type: text
FormatTextConfig:
description: Plain text response format
example:
type: text
properties:
type:
enum:
- text
type: string
required:
- type
type: object
FrameImage:
allOf:
- $ref: '#/components/schemas/ContentPartImage'
- properties:
frame_type:
description: Whether this image represents the first or last frame of the video
enum:
- first_frame
- last_frame
example: first_frame
type: string
required:
- frame_type
type: object
example:
image_url:
url: https://example.com/image.png
type: image_url
FunctionCallArgsDeltaEvent:
allOf:
- $ref: '#/components/schemas/BaseFunctionCallArgsDeltaEvent'
- properties: {}
type: object
description: Event emitted when function call arguments are being streamed
example:
delta: '{"city": "..."}'
item_id: item-1
output_index: 0
sequence_number: 4
type: response.function_call_arguments.delta
FunctionCallArgsDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseFunctionCallArgsDoneEvent'
- properties: {}
type: object
description: Event emitted when function call arguments streaming is complete
example:
arguments: '{"city": "San Francisco", "units": "celsius"}'
item_id: item-1
name: get_weather
output_index: 0
sequence_number: 6
type: response.function_call_arguments.done
FunctionCallItem:
allOf:
- $ref: '#/components/schemas/OpenAIResponseFunctionToolCall'
- properties: {}
required:
- id
type: object
description: A function call initiated by the model
example:
arguments: '{"location":"San Francisco"}'
call_id: call-abc123
id: call-abc123
name: get_weather
status: completed
type: function_call
FunctionCallOutputItem:
allOf:
- $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput'
- properties:
output:
anyOf:
- type: string
- items:
oneOf:
- $ref: '#/components/schemas/InputText'
- allOf:
- $ref: '#/components/schemas/InputImage'
- properties: {}
type: object
description: Image input content item
example:
detail: auto
image_url: https://example.com/image.jpg
type: input_image
- $ref: '#/components/schemas/InputFile'
type: array
type: object
description: The output from a function call execution
example:
call_id: call-abc123
id: output-abc123
output: '{"temperature":72,"conditions":"sunny"}'
status: completed
type: function_call_output
FunctionTool:
description: Function tool definition
example:
description: Get the current weather in a location
name: get_weather
parameters:
properties:
location:
description: The city and state
type: string
unit:
enum:
- celsius
- fahrenheit
type: string
required:
- location
type: object
type: function
properties:
description:
nullable: true
type: string
name:
type: string
parameters:
additionalProperties:
nullable: true
nullable: true
type: object
strict:
nullable: true
type: boolean
type:
enum:
- function
type: string
required:
- type
- name
- parameters
type: object
GenerationContentData:
description: Stored prompt and completion content
example:
input:
messages:
- content: What is the meaning of life?
role: user
output:
completion: The meaning of life is a philosophical question...
reasoning: null
properties:
input:
anyOf:
- properties:
prompt:
example: What is the meaning of life?
type: string
required:
- prompt
type: object
- properties:
messages:
example:
- content: What is the meaning of life?
role: user
items:
nullable: true
type: array
required:
- messages
type: object
description: The input to the generation — either a prompt string or an array of messages
output:
description: The output from the generation
properties:
completion:
description: The completion output
example: The meaning of life is a philosophical question...
nullable: true
type: string
reasoning:
description: Reasoning/thinking output, if any
example: null
nullable: true
type: string
required:
- reasoning
- completion
type: object
required:
- input
- output
type: object
GenerationContentResponse:
description: Stored prompt and completion content for a generation
example:
data:
input:
messages:
- content: What is the meaning of life?
role: user
output:
completion: The meaning of life is a philosophical question...
reasoning: null
properties:
data:
$ref: '#/components/schemas/GenerationContentData'
required:
- data
type: object
GenerationResponse:
description: Generation response
example:
data:
api_type: completions
app_id: 12345
cache_discount: null
cancelled: false
created_at: '2024-07-15T23:33:19.433273+00:00'
external_user: user-123
finish_reason: stop
generation_time: 1200
http_referer: https://openrouter.ai/
id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
is_byok: false
latency: 1250
model: sao10k/l3-stheno-8b
moderation_latency: 50
native_finish_reason: stop
native_tokens_cached: 3
native_tokens_completion: 25
native_tokens_completion_images: 0
native_tokens_prompt: 10
native_tokens_reasoning: 5
num_input_audio_prompt: 0
num_media_completion: 0
num_media_prompt: 1
num_search_results: 5
origin: https://openrouter.ai/
provider_name: Infermatic
provider_responses: null
request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
router: openrouter/auto
session_id: null
streamed: true
tokens_completion: 25
tokens_prompt: 10
total_cost: 0.0015
upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
upstream_inference_cost: 0.0012
usage: 0.0015
user_agent: Mozilla/5.0
properties:
data:
description: Generation data
properties:
api_type:
description: Type of API used for the generation
enum:
- completions
- embeddings
- rerank
- tts
- stt
- video
- null
nullable: true
type: string
app_id:
description: ID of the app that made the request
example: 12345
nullable: true
type: integer
cache_discount:
description: Discount applied due to caching
example: 0.0002
format: double
nullable: true
type: number
cancelled:
description: Whether the generation was cancelled
example: false
nullable: true
type: boolean
created_at:
description: ISO 8601 timestamp of when the generation was created
example: '2024-07-15T23:33:19.433273+00:00'
type: string
external_user:
description: External user identifier
example: user-123
nullable: true
type: string
finish_reason:
description: Reason the generation finished
example: stop
nullable: true
type: string
generation_time:
description: Time taken for generation in milliseconds
example: 1200
format: double
nullable: true
type: number
http_referer:
description: Referer header from the request
nullable: true
type: string
id:
description: Unique identifier for the generation
example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
type: string
is_byok:
description: Whether this used bring-your-own-key
example: false
type: boolean
latency:
description: Total latency in milliseconds
example: 1250
format: double
nullable: true
type: number
model:
description: Model used for the generation
example: sao10k/l3-stheno-8b
type: string
moderation_latency:
description: Moderation latency in milliseconds
example: 50
format: double
nullable: true
type: number
native_finish_reason:
description: Native finish reason as reported by provider
example: stop
nullable: true
type: string
native_tokens_cached:
description: Native cached tokens as reported by provider
example: 3
nullable: true
type: integer
native_tokens_completion:
description: Native completion tokens as reported by provider
example: 25
nullable: true
type: integer
native_tokens_completion_images:
description: Native completion image tokens as reported by provider
example: 0
nullable: true
type: integer
native_tokens_prompt:
description: Native prompt tokens as reported by provider
example: 10
nullable: true
type: integer
native_tokens_reasoning:
description: Native reasoning tokens as reported by provider
example: 5
nullable: true
type: integer
num_fetches:
description: Number of web fetches performed
example: 0
nullable: true
type: integer
num_input_audio_prompt:
description: Number of audio inputs in the prompt
example: 0
nullable: true
type: integer
num_media_completion:
description: Number of media items in the completion
example: 0
nullable: true
type: integer
num_media_prompt:
description: Number of media items in the prompt
example: 1
nullable: true
type: integer
num_search_results:
description: Number of search results included
example: 5
nullable: true
type: integer
origin:
description: Origin URL of the request
example: https://openrouter.ai/
type: string
provider_name:
description: Name of the provider that served the request
example: Infermatic
nullable: true
type: string
provider_responses:
description: List of provider responses for this generation, including fallback attempts
items:
$ref: '#/components/schemas/ProviderResponse'
nullable: true
type: array
request_id:
description: Unique identifier grouping all generations from a single API request
example: req-1727282430-aBcDeFgHiJkLmNoPqRsT
nullable: true
type: string
response_cache_source_id:
description: If this generation was served from response cache, contains the original generation ID. Null otherwise.
nullable: true
type: string
router:
description: Router used for the request (e.g., openrouter/auto)
example: openrouter/auto
nullable: true
type: string
session_id:
description: Session identifier grouping multiple generations in the same session
nullable: true
type: string
streamed:
description: Whether the response was streamed
example: true
nullable: true
type: boolean
tokens_completion:
description: Number of tokens in the completion
example: 25
nullable: true
type: integer
tokens_prompt:
description: Number of tokens in the prompt
example: 10
nullable: true
type: integer
total_cost:
description: Total cost of the generation in USD
example: 0.0015
format: double
type: number
upstream_id:
description: Upstream provider's identifier for this generation
example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
nullable: true
type: string
upstream_inference_cost:
description: Cost charged by the upstream provider
example: 0.0012
format: double
nullable: true
type: number
usage:
description: Usage amount in USD
example: 0.0015
format: double
type: number
user_agent:
description: User-Agent header from the request
nullable: true
type: string
web_search_engine:
description: The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel)
example: exa
nullable: true
type: string
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
- num_fetches
- web_search_engine
- origin
- usage
- is_byok
- native_finish_reason
- external_user
- api_type
- router
- provider_responses
- user_agent
- http_referer
type: object
required:
- data
type: object
GetGuardrailResponse:
example:
data:
allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: Guardrail for production environment
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 100
name: Production Guardrail
reset_interval: monthly
updated_at: '2025-08-24T15:45:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
allOf:
- $ref: '#/components/schemas/Guardrail'
- description: The guardrail
required:
- data
type: object
GetWorkspaceResponse:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: '2025-08-24T15:45:00Z'
properties:
data:
allOf:
- $ref: '#/components/schemas/Workspace'
- description: The workspace
required:
- data
type: object
GoneResponse:
description: Gone - Endpoint has been permanently removed or deprecated
example:
error:
code: 410
message: >-
The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been
removed. Use the web credits purchase flow instead.
properties:
error:
$ref: '#/components/schemas/GoneResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
GoneResponseErrorData:
description: Error data for GoneResponse
example:
code: 410
message: >-
The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been
removed. Use the web credits purchase flow instead.
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
Guardrail:
example:
allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: Guardrail for production environment
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 100
name: Production Guardrail
reset_interval: monthly
updated_at: '2025-08-24T15:45:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
allowed_models:
description: Array of model canonical_slugs (immutable identifiers)
example:
- openai/gpt-5.2-20251211
- anthropic/claude-4.5-opus-20251124
- deepseek/deepseek-r1-0528:free
items:
type: string
nullable: true
type: array
allowed_providers:
description: List of allowed provider IDs
example:
- openai
- anthropic
- google
items:
type: string
nullable: true
type: array
created_at:
description: ISO 8601 timestamp of when the guardrail was created
example: '2025-08-24T10:30:00Z'
type: string
description:
description: Description of the guardrail
example: Guardrail for production environment
nullable: true
type: string
enforce_zdr:
description: Whether to enforce zero data retention
example: false
nullable: true
type: boolean
id:
description: Unique identifier for the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
ignored_models:
description: Array of model canonical_slugs to exclude from routing
example:
- openai/gpt-4o-mini-2024-07-18
items:
type: string
nullable: true
type: array
ignored_providers:
description: List of provider IDs to exclude from routing
example:
- azure
items:
type: string
nullable: true
type: array
limit_usd:
description: Spending limit in USD
example: 100
format: double
nullable: true
type: number
name:
description: Name of the guardrail
example: Production Guardrail
type: string
reset_interval:
$ref: '#/components/schemas/GuardrailInterval'
updated_at:
description: ISO 8601 timestamp of when the guardrail was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
workspace_id:
description: The workspace ID this guardrail belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
required:
- id
- name
- created_at
- workspace_id
type: object
GuardrailInterval:
description: Interval at which the limit resets (daily, weekly, monthly)
enum:
- daily
- weekly
- monthly
- null
example: monthly
nullable: true
type: string
ImageConfig:
additionalProperties:
anyOf:
- type: string
- format: double
type: number
- items:
nullable: true
type: array
description: >-
Provider-specific image configuration options. Keys and values vary by model/provider. See
https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details.
example:
aspect_ratio: '16:9'
quality: high
type: object
ImageGenCallCompletedEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted'
- properties: {}
type: object
description: Image generation call completed
example:
item_id: call-123
output_index: 0
sequence_number: 4
type: response.image_generation_call.completed
ImageGenCallGeneratingEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating'
- properties: {}
type: object
description: Image generation call is generating
example:
item_id: call-123
output_index: 0
sequence_number: 2
type: response.image_generation_call.generating
ImageGenCallInProgressEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress'
- properties: {}
type: object
description: Image generation call in progress
example:
item_id: call-123
output_index: 0
sequence_number: 1
type: response.image_generation_call.in_progress
ImageGenCallPartialImageEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage'
- properties: {}
type: object
description: Image generation call with partial image
example:
item_id: call-123
output_index: 0
partial_image_b64: base64encodedimage...
partial_image_index: 0
sequence_number: 3
type: response.image_generation_call.partial_image
ImageGenerationServerTool:
description: Image generation tool configuration
example:
quality: high
type: image_generation
properties:
background:
enum:
- transparent
- opaque
- auto
type: string
input_fidelity:
enum:
- high
- low
- null
nullable: true
type: string
input_image_mask:
properties:
file_id:
type: string
image_url:
type: string
type: object
model:
enum:
- gpt-image-1
- gpt-image-1-mini
type: string
moderation:
enum:
- auto
- low
type: string
output_compression:
type: integer
output_format:
enum:
- png
- webp
- jpeg
type: string
partial_images:
type: integer
quality:
enum:
- low
- medium
- high
- auto
type: string
size:
enum:
- 1024x1024
- 1024x1536
- 1536x1024
- auto
type: string
type:
enum:
- image_generation
type: string
required:
- type
type: object
ImageGenerationServerTool_OpenRouter:
description: 'OpenRouter built-in server tool: generates images from text prompts using an image generation model'
example:
parameters:
model: openai/gpt-image-1
quality: high
size: 1024x1024
type: openrouter:image_generation
properties:
parameters:
$ref: '#/components/schemas/ImageGenerationServerToolConfig'
type:
enum:
- openrouter:image_generation
type: string
required:
- type
type: object
ImageGenerationServerToolConfig:
additionalProperties:
anyOf:
- type: string
- format: double
type: number
- items:
nullable: true
type: array
description: >-
Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio,
quality, size, background, output_format, output_compression, moderation, etc.) plus a model field.
example:
aspect_ratio: '16:9'
model: openai/gpt-5-image
quality: high
properties:
model:
description: Which image generation model to use (e.g. "openai/gpt-5-image"). Defaults to "openai/gpt-5-image".
example: openai/gpt-5-image
type: string
type: object
ImageGenerationStatus:
enum:
- in_progress
- completed
- generating
- failed
example: completed
type: string
IncompleteDetails:
example:
reason: max_output_tokens
nullable: true
properties:
reason:
enum:
- max_output_tokens
- content_filter
type: string
type: object
IncompleteEvent:
description: Event emitted when a response is incomplete
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: incomplete
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 5
type: response.incomplete
properties:
response:
$ref: '#/components/schemas/BaseResponsesResult'
sequence_number:
type: integer
type:
enum:
- response.incomplete
type: string
required:
- type
- response
- sequence_number
type: object
InProgressEvent:
description: Event emitted when a response is in progress
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: in_progress
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 1
type: response.in_progress
properties:
response:
$ref: '#/components/schemas/BaseResponsesResult'
sequence_number:
type: integer
type:
enum:
- response.in_progress
type: string
required:
- type
- response
- sequence_number
type: object
InputAudio:
description: Audio input content item
example:
input_audio:
data: SGVsbG8gV29ybGQ=
format: mp3
type: input_audio
properties:
input_audio:
properties:
data:
type: string
format:
enum:
- mp3
- wav
type: string
required:
- data
- format
type: object
type:
enum:
- input_audio
type: string
required:
- type
- input_audio
type: object
InputFile:
description: File input content item
example:
file_id: file-abc123
filename: document.pdf
type: input_file
properties:
file_data:
type: string
file_id:
nullable: true
type: string
file_url:
type: string
filename:
type: string
type:
enum:
- input_file
type: string
required:
- type
type: object
InputImage:
description: Image input content item
example:
detail: auto
image_url: https://example.com/image.jpg
type: input_image
properties:
detail:
enum:
- auto
- high
- low
type: string
image_url:
nullable: true
type: string
type:
enum:
- input_image
type: string
required:
- type
- detail
type: object
InputMessageItem:
example:
content:
- text: Hello, how are you?
type: input_text
id: msg-abc123
role: user
type: message
properties:
content:
items:
oneOf:
- $ref: '#/components/schemas/InputText'
- allOf:
- $ref: '#/components/schemas/InputImage'
- properties: {}
type: object
description: Image input content item
example:
detail: auto
image_url: https://example.com/image.jpg
type: input_image
- $ref: '#/components/schemas/InputFile'
- $ref: '#/components/schemas/InputAudio'
- $ref: '#/components/schemas/InputVideo'
nullable: true
type: array
id:
type: string
role:
anyOf:
- enum:
- user
type: string
- enum:
- system
type: string
- enum:
- developer
type: string
type:
enum:
- message
type: string
required:
- role
type: object
InputModality:
enum:
- text
- image
- file
- audio
- video
example: text
type: string
Inputs:
anyOf:
- type: string
- items:
anyOf:
- $ref: '#/components/schemas/ReasoningItem'
- $ref: '#/components/schemas/EasyInputMessage'
- $ref: '#/components/schemas/InputMessageItem'
- $ref: '#/components/schemas/FunctionCallItem'
- $ref: '#/components/schemas/FunctionCallOutputItem'
- allOf:
- $ref: '#/components/schemas/OutputMessageItem'
- properties:
content:
anyOf:
- items:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
type: array
- type: string
- nullable: true
type: object
description: An output message item
example:
content:
- annotations: []
text: Hello! How can I help you?
type: output_text
id: msg-123
role: assistant
status: completed
type: message
- allOf:
- $ref: '#/components/schemas/OutputReasoningItem'
- properties:
summary:
items:
$ref: '#/components/schemas/ReasoningSummaryText'
nullable: true
type: array
type: object
description: An output item containing reasoning
example:
content:
- text: First, we analyze the problem...
type: reasoning_text
format: anthropic-claude-v1
id: reasoning-123
signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
status: completed
summary:
- text: Analyzed the problem and found the optimal solution.
type: summary_text
type: reasoning
- $ref: '#/components/schemas/OutputFunctionCallItem'
- $ref: '#/components/schemas/OutputWebSearchCallItem'
- $ref: '#/components/schemas/OutputFileSearchCallItem'
- $ref: '#/components/schemas/OutputImageGenerationCallItem'
- $ref: '#/components/schemas/OutputCodeInterpreterCallItem'
- $ref: '#/components/schemas/OutputComputerCallItem'
- $ref: '#/components/schemas/OutputDatetimeItem'
- $ref: '#/components/schemas/OutputWebSearchServerToolItem'
- $ref: '#/components/schemas/OutputCodeInterpreterServerToolItem'
- $ref: '#/components/schemas/OutputFileSearchServerToolItem'
- $ref: '#/components/schemas/OutputImageGenerationServerToolItem'
- $ref: '#/components/schemas/OutputBrowserUseServerToolItem'
- $ref: '#/components/schemas/OutputBashServerToolItem'
- $ref: '#/components/schemas/OutputTextEditorServerToolItem'
- $ref: '#/components/schemas/OutputApplyPatchServerToolItem'
- $ref: '#/components/schemas/OutputWebFetchServerToolItem'
- $ref: '#/components/schemas/OutputToolSearchServerToolItem'
- $ref: '#/components/schemas/OutputMemoryServerToolItem'
- $ref: '#/components/schemas/OutputMcpServerToolItem'
- $ref: '#/components/schemas/OutputSearchModelsServerToolItem'
type: array
description: Input for a response request - can be a string or array of items
example:
- content: What is the weather today?
role: user
InputText:
description: Text input content item
example:
text: Hello, how can I help you?
type: input_text
properties:
text:
type: string
type:
enum:
- input_text
type: string
required:
- type
- text
type: object
InputVideo:
description: Video input content item
example:
type: input_video
video_url: https://example.com/video.mp4
properties:
type:
enum:
- input_video
type: string
video_url:
description: A base64 data URL or remote URL that resolves to a video file
type: string
required:
- type
- video_url
type: object
InstructType:
description: Instruction format type
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
- null
example: chatml
nullable: true
type: string
InternalServerResponse:
description: Internal Server Error - Unexpected server error
example:
error:
code: 500
message: Internal Server Error
properties:
error:
$ref: '#/components/schemas/InternalServerResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
InternalServerResponseErrorData:
description: Error data for InternalServerResponse
example:
code: 500
message: Internal Server Error
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
KeyAssignment:
example:
assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
key_label: prod-key
key_name: Production Key
properties:
assigned_by:
description: User ID of who made the assignment
example: user_abc123
nullable: true
type: string
created_at:
description: ISO 8601 timestamp of when the assignment was created
example: '2025-08-24T10:30:00Z'
type: string
guardrail_id:
description: ID of the guardrail
example: 550e8400-e29b-41d4-a716-446655440001
format: uuid
type: string
id:
description: Unique identifier for the assignment
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
key_hash:
description: Hash of the assigned API key
example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
type: string
key_label:
description: Label of the API key
example: prod-key
type: string
key_name:
description: Name of the API key
example: Production Key
type: string
required:
- id
- key_hash
- guardrail_id
- key_name
- key_label
- assigned_by
- created_at
type: object
Legacy_ChatContentVideo:
deprecated: true
description: Video input content part (legacy format - deprecated)
example:
type: input_video
video_url:
url: https://example.com/video.mp4
properties:
type:
enum:
- input_video
type: string
video_url:
$ref: '#/components/schemas/ChatContentVideoInput'
required:
- type
- video_url
type: object
Legacy_WebSearchServerTool:
description: Web search tool configuration
example:
engine: auto
filters:
allowed_domains:
- example.com
type: web_search
properties:
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
filters:
$ref: '#/components/schemas/WebSearchDomainFilter'
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
search_context_size:
$ref: '#/components/schemas/SearchContextSizeEnum'
type:
enum:
- web_search
type: string
user_location:
$ref: '#/components/schemas/WebSearchUserLocation'
required:
- type
type: object
ListEndpointsResponse:
description: List of available endpoints for a model
example:
architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
created: 1692901234
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
endpoints:
- context_length: 8192
latency_last_30m:
p50: 0.25
p75: 0.35
p90: 0.48
p99: 0.85
max_completion_tokens: 4096
max_prompt_tokens: 8192
model_name: GPT-4
name: 'OpenAI: GPT-4'
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
provider_name: OpenAI
quantization: fp16
status: default
supported_parameters:
- temperature
- top_p
- max_tokens
- frequency_penalty
- presence_penalty
supports_implicit_caching: true
tag: openai
throughput_last_30m:
p50: 45.2
p75: 38.5
p90: 28.3
p99: 15.1
uptime_last_1d: 99.8
uptime_last_30m: 99.5
uptime_last_5m: 100
id: openai/gpt-4
name: GPT-4
properties:
architecture:
allOf:
- $ref: '#/components/schemas/ModelArchitecture'
- example:
instruct_type: chatml
modality: text
tokenizer: GPT
properties:
input_modalities:
description: Supported input modalities
items:
$ref: '#/components/schemas/InputModality'
type: array
instruct_type:
$ref: '#/components/schemas/InstructType'
modality:
description: Primary modality of the model
example: text
nullable: true
type: string
output_modalities:
description: Supported output modalities
items:
$ref: '#/components/schemas/OutputModality'
type: array
tokenizer:
allOf:
- $ref: '#/components/schemas/ModelGroup'
- nullable: true
required:
- tokenizer
- instruct_type
- modality
- input_modalities
- output_modalities
created:
description: Unix timestamp of when the model was created
example: 1692901234
type: integer
description:
description: Description of the model
example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
type: string
endpoints:
description: List of available endpoints for this model
items:
$ref: '#/components/schemas/PublicEndpoint'
type: array
id:
description: Unique identifier for the model
example: openai/gpt-4
type: string
name:
description: Display name of the model
example: GPT-4
type: string
required:
- id
- name
- created
- description
- architecture
- endpoints
type: object
ListGuardrailsResponse:
example:
data:
- allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: Guardrail for production environment
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 100
name: Production Guardrail
reset_interval: monthly
updated_at: '2025-08-24T15:45:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
total_count: 1
properties:
data:
description: List of guardrails
items:
$ref: '#/components/schemas/Guardrail'
type: array
total_count:
description: Total number of guardrails
example: 25
type: integer
required:
- data
- total_count
type: object
ListKeyAssignmentsResponse:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
key_label: prod-key
key_name: Production Key
total_count: 1
properties:
data:
description: List of key assignments
items:
$ref: '#/components/schemas/KeyAssignment'
type: array
total_count:
description: Total number of key assignments for this guardrail
example: 25
type: integer
required:
- data
- total_count
type: object
ListMemberAssignmentsResponse:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
organization_id: org_xyz789
user_id: user_abc123
total_count: 1
properties:
data:
description: List of member assignments
items:
$ref: '#/components/schemas/MemberAssignment'
type: array
total_count:
description: Total number of member assignments
example: 10
type: integer
required:
- data
- total_count
type: object
ListWorkspacesResponse:
example:
data:
- created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: '2025-08-24T15:45:00Z'
total_count: 1
properties:
data:
description: List of workspaces
items:
$ref: '#/components/schemas/Workspace'
type: array
total_count:
description: Total number of workspaces
example: 5
type: integer
required:
- data
- total_count
type: object
McpServerTool:
description: MCP (Model Context Protocol) tool configuration
example:
server_label: my-server
server_url: https://example.com/mcp
type: mcp
properties:
allowed_tools:
anyOf:
- items:
type: string
type: array
- properties:
read_only:
type: boolean
tool_names:
items:
type: string
type: array
type: object
- nullable: true
authorization:
type: string
connector_id:
enum:
- connector_dropbox
- connector_gmail
- connector_googlecalendar
- connector_googledrive
- connector_microsoftteams
- connector_outlookcalendar
- connector_outlookemail
- connector_sharepoint
type: string
headers:
additionalProperties:
type: string
nullable: true
type: object
require_approval:
anyOf:
- properties:
always:
properties:
tool_names:
items:
type: string
type: array
type: object
never:
properties:
tool_names:
items:
type: string
type: array
type: object
type: object
- enum:
- always
type: string
- enum:
- never
type: string
- nullable: true
server_description:
type: string
server_label:
type: string
server_url:
type: string
type:
enum:
- mcp
type: string
required:
- type
- server_label
type: object
MemberAssignment:
example:
assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
organization_id: org_xyz789
user_id: user_abc123
properties:
assigned_by:
description: User ID of who made the assignment
example: user_abc123
nullable: true
type: string
created_at:
description: ISO 8601 timestamp of when the assignment was created
example: '2025-08-24T10:30:00Z'
type: string
guardrail_id:
description: ID of the guardrail
example: 550e8400-e29b-41d4-a716-446655440001
format: uuid
type: string
id:
description: Unique identifier for the assignment
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
organization_id:
description: Organization ID
example: org_xyz789
type: string
user_id:
description: Clerk user ID of the assigned member
example: user_abc123
type: string
required:
- id
- user_id
- organization_id
- guardrail_id
- assigned_by
- created_at
type: object
MessagesContentBlockDeltaEvent:
description: Event sent when content is added to a content block
example:
delta:
text: Hello
type: text_delta
index: 0
type: content_block_delta
properties:
delta:
oneOf:
- properties:
text:
type: string
type:
enum:
- text_delta
type: string
required:
- type
- text
type: object
- properties:
partial_json:
type: string
type:
enum:
- input_json_delta
type: string
required:
- type
- partial_json
type: object
- properties:
thinking:
type: string
type:
enum:
- thinking_delta
type: string
required:
- type
- thinking
type: object
- properties:
signature:
type: string
type:
enum:
- signature_delta
type: string
required:
- type
- signature
type: object
- properties:
citation:
discriminator:
mapping:
char_location: '#/components/schemas/AnthropicCitationCharLocation'
content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation'
page_location: '#/components/schemas/AnthropicCitationPageLocation'
search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation'
web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
propertyName: type
oneOf:
- $ref: '#/components/schemas/AnthropicCitationCharLocation'
- $ref: '#/components/schemas/AnthropicCitationPageLocation'
- $ref: '#/components/schemas/AnthropicCitationContentBlockLocation'
- $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
- $ref: '#/components/schemas/AnthropicCitationSearchResultLocation'
type:
enum:
- citations_delta
type: string
required:
- type
- citation
type: object
- properties:
content:
nullable: true
type: string
type:
enum:
- compaction_delta
type: string
required:
- type
- content
type: object
index:
type: integer
type:
enum:
- content_block_delta
type: string
required:
- type
- index
- delta
type: object
MessagesContentBlockStartEvent:
description: Event sent when a new content block starts
example:
content_block:
text: ''
type: text
index: 0
type: content_block_start
properties:
content_block:
anyOf:
- $ref: '#/components/schemas/AnthropicTextBlock'
- $ref: '#/components/schemas/AnthropicToolUseBlock'
- $ref: '#/components/schemas/AnthropicThinkingBlock'
- $ref: '#/components/schemas/AnthropicRedactedThinkingBlock'
- $ref: '#/components/schemas/AnthropicServerToolUseBlock'
- $ref: '#/components/schemas/AnthropicWebSearchToolResult'
- $ref: '#/components/schemas/AnthropicWebFetchToolResult'
- $ref: '#/components/schemas/AnthropicCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicToolSearchToolResult'
- $ref: '#/components/schemas/AnthropicContainerUpload'
- $ref: '#/components/schemas/AnthropicCompactionBlock'
- properties:
content:
nullable: true
type: string
type:
enum:
- compaction
type: string
required:
- type
- content
type: object
index:
type: integer
type:
enum:
- content_block_start
type: string
required:
- type
- index
- content_block
type: object
MessagesContentBlockStopEvent:
description: Event sent when a content block is complete
example:
index: 0
type: content_block_stop
properties:
index:
type: integer
type:
enum:
- content_block_stop
type: string
required:
- type
- index
type: object
MessagesDeltaEvent:
description: Event sent when the message metadata changes (e.g., stop_reason)
example:
delta:
stop_details: null
stop_reason: end_turn
stop_sequence: null
type: message_delta
usage:
output_tokens: 15
properties:
delta:
properties:
container:
$ref: '#/components/schemas/AnthropicContainer'
stop_details:
$ref: '#/components/schemas/AnthropicRefusalStopDetails'
stop_reason:
$ref: '#/components/schemas/ORAnthropicStopReason'
stop_sequence:
nullable: true
type: string
required:
- container
- stop_details
- stop_reason
- stop_sequence
type: object
type:
enum:
- message_delta
type: string
usage:
properties:
cache_creation_input_tokens:
nullable: true
type: integer
cache_read_input_tokens:
nullable: true
type: integer
input_tokens:
nullable: true
type: integer
iterations:
items:
$ref: '#/components/schemas/AnthropicUsageIteration'
type: array
output_tokens:
type: integer
server_tool_use:
nullable: true
properties:
web_fetch_requests:
type: integer
web_search_requests:
type: integer
required:
- web_search_requests
- web_fetch_requests
type: object
required:
- input_tokens
- output_tokens
- cache_creation_input_tokens
- cache_read_input_tokens
- server_tool_use
type: object
required:
- type
- delta
- usage
type: object
MessagesErrorDetail:
example:
message: Invalid request parameters
type: invalid_request_error
properties:
message:
type: string
type:
type: string
required:
- type
- message
type: object
MessagesErrorEvent:
description: Error event in the stream
example:
error:
message: Overloaded
type: overloaded_error
type: error
properties:
error:
properties:
message:
type: string
type:
type: string
required:
- type
- message
type: object
type:
enum:
- error
type: string
required:
- type
- error
type: object
MessagesErrorResponse:
example:
error:
message: Invalid request parameters
type: invalid_request_error
type: error
properties:
error:
$ref: '#/components/schemas/MessagesErrorDetail'
type:
enum:
- error
type: string
required:
- type
- error
type: object
MessagesMessageParam:
description: Anthropic message with OpenRouter extensions
example:
content: Hello, how are you?
role: user
properties:
content:
anyOf:
- type: string
- items:
oneOf:
- $ref: '#/components/schemas/AnthropicTextBlockParam'
- $ref: '#/components/schemas/AnthropicImageBlockParam'
- $ref: '#/components/schemas/AnthropicDocumentBlockParam'
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
id:
type: string
input:
nullable: true
name:
type: string
type:
enum:
- tool_use
type: string
required:
- type
- id
- name
type: object
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
content:
anyOf:
- type: string
- items:
anyOf:
- $ref: '#/components/schemas/AnthropicTextBlockParam'
- $ref: '#/components/schemas/AnthropicImageBlockParam'
- properties:
tool_name:
type: string
type:
enum:
- tool_reference
type: string
required:
- type
- tool_name
type: object
- $ref: '#/components/schemas/AnthropicSearchResultBlockParam'
- $ref: '#/components/schemas/AnthropicDocumentBlockParam'
type: array
is_error:
type: boolean
tool_use_id:
type: string
type:
enum:
- tool_result
type: string
required:
- type
- tool_use_id
type: object
- properties:
signature:
type: string
thinking:
type: string
type:
enum:
- thinking
type: string
required:
- type
- thinking
- signature
type: object
- properties:
data:
type: string
type:
enum:
- redacted_thinking
type: string
required:
- type
- data
type: object
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
id:
type: string
input:
nullable: true
name:
$ref: '#/components/schemas/AnthropicServerToolName'
type:
enum:
- server_tool_use
type: string
required:
- type
- id
- name
type: object
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
content:
anyOf:
- items:
$ref: '#/components/schemas/AnthropicWebSearchResultBlockParam'
type: array
- properties:
error_code:
enum:
- invalid_tool_input
- unavailable
- max_uses_exceeded
- too_many_requests
- query_too_long
type: string
type:
enum:
- web_search_tool_result_error
type: string
required:
- type
- error_code
type: object
tool_use_id:
type: string
type:
enum:
- web_search_tool_result
type: string
required:
- type
- tool_use_id
- content
type: object
- $ref: '#/components/schemas/AnthropicSearchResultBlockParam'
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
content:
nullable: true
type: string
type:
enum:
- compaction
type: string
required:
- type
- content
type: object
type: array
role:
enum:
- user
- assistant
type: string
required:
- role
- content
type: object
MessagesOutputConfig:
description: Configuration for controlling output behavior. Supports the effort parameter and structured output format.
example:
effort: medium
properties:
effort:
description: >-
How much effort the model should put into its response. Higher effort levels may result in more thorough
analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`.
enum:
- low
- medium
- high
- xhigh
- max
- null
example: medium
nullable: true
type: string
format:
description: >-
A schema to specify Claude's output format in responses. See [structured
outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs).
nullable: true
properties:
schema:
additionalProperties:
nullable: true
type: object
type:
enum:
- json_schema
type: string
required:
- type
- schema
type: object
task_budget:
description: >-
Task budget for an agentic turn. The model sees a countdown of remaining tokens and uses it to prioritize
work and wind down gracefully. Advisory — does not enforce a hard cap.
example:
total: 400000
type: tokens
nullable: true
properties:
remaining:
minimum: 0
nullable: true
type: integer
total:
minimum: 20000
type: integer
type:
enum:
- tokens
type: string
required:
- type
- total
type: object
type: object
MessagesPingEvent:
description: Keep-alive ping event
example:
type: ping
properties:
type:
enum:
- ping
type: string
required:
- type
type: object
MessagesRequest:
description: Request schema for Anthropic Messages API endpoint
example:
max_tokens: 1024
messages:
- content: Hello, how are you?
role: user
model: anthropic/claude-4.5-sonnet-20250929
temperature: 0.7
properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
context_management:
nullable: true
properties:
edits:
items:
oneOf:
- properties:
clear_at_least:
$ref: '#/components/schemas/AnthropicInputTokensClearAtLeast'
clear_tool_inputs:
anyOf:
- type: boolean
- items:
type: string
type: array
- nullable: true
exclude_tools:
items:
type: string
nullable: true
type: array
keep:
$ref: '#/components/schemas/AnthropicToolUsesKeep'
trigger:
discriminator:
mapping:
input_tokens: '#/components/schemas/AnthropicInputTokensTrigger'
tool_uses: '#/components/schemas/AnthropicToolUsesTrigger'
propertyName: type
oneOf:
- $ref: '#/components/schemas/AnthropicInputTokensTrigger'
- $ref: '#/components/schemas/AnthropicToolUsesTrigger'
type:
enum:
- clear_tool_uses_20250919
type: string
required:
- type
type: object
- properties:
keep:
anyOf:
- $ref: '#/components/schemas/AnthropicThinkingTurns'
- properties:
type:
enum:
- all
type: string
required:
- type
type: object
- enum:
- all
type: string
type:
enum:
- clear_thinking_20251015
type: string
required:
- type
type: object
- properties:
instructions:
nullable: true
type: string
pause_after_compaction:
type: boolean
trigger:
allOf:
- $ref: '#/components/schemas/AnthropicInputTokensTrigger'
- nullable: true
properties: {}
type: object
example:
type: input_tokens
value: 100000
type:
enum:
- compact_20260112
type: string
required:
- type
type: object
type: array
type: object
max_tokens:
type: integer
messages:
items:
$ref: '#/components/schemas/MessagesMessageParam'
nullable: true
type: array
metadata:
properties:
user_id:
nullable: true
type: string
type: object
model:
type: string
models:
items:
type: string
type: array
output_config:
$ref: '#/components/schemas/MessagesOutputConfig'
plugins:
description: Plugins you want to enable for this request, including their settings.
items:
discriminator:
mapping:
auto-router: '#/components/schemas/AutoRouterPlugin'
context-compression: '#/components/schemas/ContextCompressionPlugin'
file-parser: '#/components/schemas/FileParserPlugin'
moderation: '#/components/schemas/ModerationPlugin'
pareto-router: '#/components/schemas/ParetoRouterPlugin'
response-healing: '#/components/schemas/ResponseHealingPlugin'
web: '#/components/schemas/WebSearchPlugin'
propertyName: id
oneOf:
- $ref: '#/components/schemas/AutoRouterPlugin'
- $ref: '#/components/schemas/ModerationPlugin'
- $ref: '#/components/schemas/WebSearchPlugin'
- $ref: '#/components/schemas/FileParserPlugin'
- $ref: '#/components/schemas/ResponseHealingPlugin'
- $ref: '#/components/schemas/ContextCompressionPlugin'
- $ref: '#/components/schemas/ParetoRouterPlugin'
type: array
provider:
$ref: '#/components/schemas/ProviderPreferences'
route:
$ref: '#/components/schemas/DeprecatedRoute'
service_tier:
enum:
- auto
- standard_only
type: string
session_id:
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 256 characters.
maxLength: 256
type: string
speed:
allOf:
- $ref: '#/components/schemas/AnthropicSpeed'
- description: >-
Controls output generation speed. When set to `fast`, uses a higher-speed inference configuration at
premium pricing. Defaults to `standard` when omitted.
example: fast
stop_sequences:
items:
type: string
type: array
stream:
type: boolean
system:
anyOf:
- type: string
- items:
$ref: '#/components/schemas/AnthropicTextBlockParam'
type: array
temperature:
format: double
type: number
thinking:
oneOf:
- properties:
budget_tokens:
type: integer
display:
$ref: '#/components/schemas/AnthropicThinkingDisplay'
type:
enum:
- enabled
type: string
required:
- type
- budget_tokens
type: object
- properties:
type:
enum:
- disabled
type: string
required:
- type
type: object
- properties:
display:
$ref: '#/components/schemas/AnthropicThinkingDisplay'
type:
enum:
- adaptive
type: string
required:
- type
type: object
tool_choice:
oneOf:
- properties:
disable_parallel_tool_use:
type: boolean
type:
enum:
- auto
type: string
required:
- type
type: object
- properties:
disable_parallel_tool_use:
type: boolean
type:
enum:
- any
type: string
required:
- type
type: object
- properties:
type:
enum:
- none
type: string
required:
- type
type: object
- properties:
disable_parallel_tool_use:
type: boolean
name:
type: string
type:
enum:
- tool
type: string
required:
- type
- name
type: object
tools:
items:
anyOf:
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
description:
type: string
input_schema:
additionalProperties:
nullable: true
properties:
properties:
nullable: true
required:
items:
type: string
nullable: true
type: array
type:
default: object
type: string
type: object
name:
type: string
type:
enum:
- custom
type: string
required:
- name
- input_schema
type: object
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
name:
enum:
- bash
type: string
type:
enum:
- bash_20250124
type: string
required:
- type
- name
type: object
- properties:
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
name:
enum:
- str_replace_editor
type: string
type:
enum:
- text_editor_20250124
type: string
required:
- type
- name
type: object
- properties:
allowed_domains:
items:
type: string
nullable: true
type: array
blocked_domains:
items:
type: string
nullable: true
type: array
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
max_uses:
nullable: true
type: integer
name:
enum:
- web_search
type: string
type:
enum:
- web_search_20250305
type: string
user_location:
$ref: '#/components/schemas/AnthropicWebSearchToolUserLocation'
required:
- type
- name
type: object
- properties:
allowed_callers:
items:
enum:
- direct
- code_execution_20250825
- code_execution_20260120
type: string
type: array
allowed_domains:
items:
type: string
nullable: true
type: array
blocked_domains:
items:
type: string
nullable: true
type: array
cache_control:
$ref: '#/components/schemas/AnthropicCacheControlDirective'
max_uses:
nullable: true
type: integer
name:
enum:
- web_search
type: string
type:
enum:
- web_search_20260209
type: string
user_location:
$ref: '#/components/schemas/AnthropicWebSearchToolUserLocation'
required:
- type
- name
type: object
- $ref: '#/components/schemas/DatetimeServerTool'
- $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
- $ref: '#/components/schemas/ChatSearchModelsServerTool'
- $ref: '#/components/schemas/WebFetchServerTool'
- $ref: '#/components/schemas/OpenRouterWebSearchServerTool'
type: array
top_k:
type: integer
top_p:
format: double
type: number
trace:
$ref: '#/components/schemas/TraceConfig'
user:
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 256 characters.
maxLength: 256
type: string
required:
- model
- messages
type: object
MessagesResult:
allOf:
- $ref: '#/components/schemas/BaseMessagesResult'
- properties:
context_management:
nullable: true
properties:
applied_edits:
items:
additionalProperties:
nullable: true
properties:
type:
type: string
required:
- type
type: object
type: array
required:
- applied_edits
type: object
provider:
$ref: '#/components/schemas/ProviderName'
usage:
allOf:
- $ref: '#/components/schemas/AnthropicUsage'
- properties:
cost:
format: double
nullable: true
type: number
cost_details:
$ref: '#/components/schemas/CostDetails'
is_byok:
type: boolean
iterations:
items:
$ref: '#/components/schemas/AnthropicUsageIteration'
type: array
service_tier:
nullable: true
type: string
speed:
$ref: '#/components/schemas/AnthropicSpeed'
type: object
example:
cache_creation: null
cache_creation_input_tokens: null
cache_read_input_tokens: null
inference_geo: null
input_tokens: 100
output_tokens: 50
server_tool_use: null
service_tier: standard
type: object
description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions
example:
container: null
content:
- citations: null
text: Hello! I'm doing well, thank you for asking.
type: text
id: msg_01XFDUDYJgAACzvnptvVoYEL
model: claude-sonnet-4-5-20250929
role: assistant
stop_details: null
stop_reason: end_turn
stop_sequence: null
type: message
usage:
cache_creation: null
cache_creation_input_tokens: null
cache_read_input_tokens: null
inference_geo: null
input_tokens: 12
output_tokens: 15
server_tool_use: null
service_tier: standard
MessagesStartEvent:
description: Event sent at the start of a streaming message
example:
message:
content: []
id: msg_01XFDUDYJgAACzvnptvVoYEL
model: claude-sonnet-4-5-20250929
role: assistant
stop_details: null
stop_reason: null
stop_sequence: null
type: message
usage:
input_tokens: 12
output_tokens: 0
type: message_start
properties:
message:
properties:
container:
$ref: '#/components/schemas/AnthropicContainer'
content:
items:
$ref: '#/components/schemas/ORAnthropicContentBlock'
type: array
id:
type: string
model:
type: string
provider:
enum:
- AnyScale
- Atoma
- Cent-ML
- CrofAI
- Enfer
- GoPomelo
- HuggingFace
- Hyperbolic 2
- InoCloud
- Kluster
- Lambda
- Lepton
- Lynn 2
- Lynn
- Mancer
- Meta
- Modal
- Nineteen
- OctoAI
- Recursal
- Reflection
- Replicate
- SambaNova 2
- SF Compute
- Targon
- Together 2
- Ubicloud
- 01.AI
- AkashML
- AI21
- AionLabs
- Alibaba
- Ambient
- Baidu
- Amazon Bedrock
- Amazon Nova
- Anthropic
- Arcee AI
- AtlasCloud
- Avian
- Azure
- BaseTen
- BytePlus
- Black Forest Labs
- Cerebras
- Chutes
- Cirrascale
- Clarifai
- Cloudflare
- Cohere
- Crusoe
- DeepInfra
- DeepSeek
- DekaLLM
- Featherless
- Fireworks
- Friendli
- GMICloud
- Google
- Google AI Studio
- Groq
- Hyperbolic
- Inception
- Inceptron
- InferenceNet
- Ionstream
- Infermatic
- Io Net
- Inflection
- Liquid
- Mara
- Mancer 2
- Minimax
- ModelRun
- Mistral
- Modular
- Moonshot AI
- Morph
- NCompass
- Nebius
- Nex AGI
- NextBit
- Novita
- Nvidia
- OpenAI
- OpenInference
- Parasail
- Poolside
- Perplexity
- Phala
- Recraft
- Reka
- Relace
- SambaNova
- Seed
- SiliconFlow
- Sourceful
- StepFun
- Stealth
- StreamLake
- Switchpoint
- Together
- Upstage
- Venice
- WandB
- Xiaomi
- xAI
- Z.AI
- FakeProvider
type: string
role:
enum:
- assistant
type: string
stop_details:
$ref: '#/components/schemas/AnthropicRefusalStopDetails'
stop_reason:
nullable: true
stop_sequence:
nullable: true
type:
enum:
- message
type: string
usage:
allOf:
- $ref: '#/components/schemas/AnthropicUsage'
- properties:
iterations:
items:
$ref: '#/components/schemas/AnthropicUsageIteration'
type: array
speed:
$ref: '#/components/schemas/AnthropicSpeed'
type: object
example:
cache_creation: null
cache_creation_input_tokens: null
cache_read_input_tokens: null
inference_geo: null
input_tokens: 100
output_tokens: 50
server_tool_use: null
service_tier: standard
required:
- id
- type
- role
- container
- content
- model
- stop_reason
- stop_details
- stop_sequence
- usage
type: object
type:
enum:
- message_start
type: string
required:
- type
- message
type: object
MessagesStopEvent:
description: Event sent when the message is complete
example:
type: message_stop
properties:
type:
enum:
- message_stop
type: string
required:
- type
type: object
MessagesStreamEvents:
description: Union of all possible streaming events
discriminator:
mapping:
content_block_delta: '#/components/schemas/MessagesContentBlockDeltaEvent'
content_block_start: '#/components/schemas/MessagesContentBlockStartEvent'
content_block_stop: '#/components/schemas/MessagesContentBlockStopEvent'
error: '#/components/schemas/MessagesErrorEvent'
message_delta: '#/components/schemas/MessagesDeltaEvent'
message_start: '#/components/schemas/MessagesStartEvent'
message_stop: '#/components/schemas/MessagesStopEvent'
ping: '#/components/schemas/MessagesPingEvent'
propertyName: type
example:
delta:
text: Hello
type: text_delta
index: 0
type: content_block_delta
oneOf:
- $ref: '#/components/schemas/MessagesStartEvent'
- $ref: '#/components/schemas/MessagesDeltaEvent'
- $ref: '#/components/schemas/MessagesStopEvent'
- $ref: '#/components/schemas/MessagesContentBlockStartEvent'
- $ref: '#/components/schemas/MessagesContentBlockDeltaEvent'
- $ref: '#/components/schemas/MessagesContentBlockStopEvent'
- $ref: '#/components/schemas/MessagesPingEvent'
- $ref: '#/components/schemas/MessagesErrorEvent'
Model:
description: Information about an AI model available on OpenRouter
example:
architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
canonical_slug: openai/gpt-4
context_length: 8192
created: 1692901234
default_parameters: null
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
expiration_date: null
id: openai/gpt-4
knowledge_cutoff: null
links:
details: /api/v1/models/openai/gpt-5.4/endpoints
name: GPT-4
per_request_limits: null
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
supported_parameters:
- temperature
- top_p
- max_tokens
supported_voices: null
top_provider:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
properties:
architecture:
$ref: '#/components/schemas/ModelArchitecture'
canonical_slug:
description: Canonical slug for the model
example: openai/gpt-4
type: string
context_length:
description: Maximum context length in tokens
example: 8192
nullable: true
type: integer
created:
description: Unix timestamp of when the model was created
example: 1692901234
type: integer
default_parameters:
$ref: '#/components/schemas/DefaultParameters'
description:
description: Description of the model
example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
type: string
expiration_date:
description: The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration.
example: '2025-06-01'
nullable: true
type: string
hugging_face_id:
description: Hugging Face model identifier, if applicable
example: microsoft/DialoGPT-medium
nullable: true
type: string
id:
description: Unique identifier for the model
example: openai/gpt-4
type: string
knowledge_cutoff:
description: The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown.
example: '2024-10-01'
nullable: true
type: string
links:
$ref: '#/components/schemas/ModelLinks'
name:
description: Display name of the model
example: GPT-4
type: string
per_request_limits:
$ref: '#/components/schemas/PerRequestLimits'
pricing:
$ref: '#/components/schemas/PublicPricing'
supported_parameters:
description: List of supported parameters for this model
items:
$ref: '#/components/schemas/Parameter'
type: array
supported_voices:
description: List of supported voice identifiers for TTS models. Null for non-TTS models.
example: null
items:
type: string
nullable: true
type: array
top_provider:
$ref: '#/components/schemas/TopProviderInfo'
required:
- id
- canonical_slug
- name
- created
- pricing
- context_length
- architecture
- top_provider
- per_request_limits
- supported_parameters
- default_parameters
- supported_voices
- links
type: object
ModelArchitecture:
description: Model architecture information
example:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
properties:
input_modalities:
description: Supported input modalities
items:
$ref: '#/components/schemas/InputModality'
type: array
instruct_type:
description: Instruction format type
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
- null
example: chatml
nullable: true
type: string
modality:
description: Primary modality of the model
example: text->text
nullable: true
type: string
output_modalities:
description: Supported output modalities
items:
$ref: '#/components/schemas/OutputModality'
type: array
tokenizer:
$ref: '#/components/schemas/ModelGroup'
required:
- modality
- input_modalities
- output_modalities
type: object
ModelGroup:
description: Tokenizer type used by the model
enum:
- Router
- Media
- Other
- GPT
- Claude
- Gemini
- Gemma
- Grok
- Cohere
- Nova
- Qwen
- Yi
- DeepSeek
- Mistral
- Llama2
- Llama3
- Llama4
- PaLM
- RWKV
- Qwen3
example: GPT
type: string
ModelLinks:
description: Related API endpoints and resources for this model.
example:
details: /api/v1/models/openai/gpt-5.4/endpoints
properties:
details:
description: URL for the model details/endpoints API
example: /api/v1/models/openai/gpt-5.4/endpoints
type: string
required:
- details
type: object
ModelName:
description: Model to use for completion
example: openai/gpt-4
type: string
ModelsCountResponse:
description: Model count data
example:
data:
count: 150
properties:
data:
description: Model count data
example:
count: 150
properties:
count:
description: Total number of available models
example: 150
type: integer
required:
- count
type: object
required:
- data
type: object
ModelsListResponse:
description: List of available models
example:
data:
- architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
canonical_slug: openai/gpt-4
context_length: 8192
created: 1692901234
default_parameters: null
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
expiration_date: null
id: openai/gpt-4
knowledge_cutoff: null
links:
details: /api/v1/models/openai/gpt-5.4/endpoints
name: GPT-4
per_request_limits: null
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
supported_parameters:
- temperature
- top_p
- max_tokens
- frequency_penalty
- presence_penalty
supported_voices: null
top_provider:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
properties:
data:
$ref: '#/components/schemas/ModelsListResponseData'
required:
- data
type: object
ModelsListResponseData:
description: List of available models
example:
- architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
canonical_slug: openai/gpt-4
context_length: 8192
created: 1692901234
default_parameters: null
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
expiration_date: null
id: openai/gpt-4
knowledge_cutoff: null
links:
details: /api/v1/models/openai/gpt-5.4/endpoints
name: GPT-4
per_request_limits: null
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
supported_parameters:
- temperature
- top_p
- max_tokens
supported_voices: null
top_provider:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
items:
$ref: '#/components/schemas/Model'
type: array
ModerationPlugin:
example:
id: moderation
properties:
id:
enum:
- moderation
type: string
required:
- id
type: object
NotFoundResponse:
description: Not Found - Resource does not exist
example:
error:
code: 404
message: Resource not found
properties:
error:
$ref: '#/components/schemas/NotFoundResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
NotFoundResponseErrorData:
description: Error data for NotFoundResponse
example:
code: 404
message: Resource not found
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
OpenAIResponseFunctionToolCall:
example:
arguments: '{"location":"San Francisco"}'
call_id: call-abc123
id: fc-abc123
name: get_weather
status: completed
type: function_call
properties:
arguments:
type: string
call_id:
type: string
id:
type: string
name:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- function_call
type: string
required:
- type
- call_id
- name
- arguments
type: object
OpenAIResponseFunctionToolCallOutput:
example:
call_id: call-abc123
output: '{"temperature":72,"conditions":"sunny"}'
type: function_call_output
properties:
call_id:
type: string
id:
nullable: true
type: string
output:
anyOf:
- type: string
- items:
discriminator:
mapping:
input_file: '#/components/schemas/InputFile'
input_image: '#/components/schemas/InputImage'
input_text: '#/components/schemas/InputText'
propertyName: type
oneOf:
- $ref: '#/components/schemas/InputText'
- $ref: '#/components/schemas/InputImage'
- $ref: '#/components/schemas/InputFile'
type: array
status:
allOf:
- $ref: '#/components/schemas/ToolCallStatus'
- nullable: true
type:
enum:
- function_call_output
type: string
required:
- type
- call_id
- output
type: object
OpenAIResponseInputMessageItem:
example:
content:
- text: Hello, how are you?
type: input_text
id: msg-abc123
role: user
type: message
properties:
content:
items:
discriminator:
mapping:
input_audio: '#/components/schemas/InputAudio'
input_file: '#/components/schemas/InputFile'
input_image: '#/components/schemas/InputImage'
input_text: '#/components/schemas/InputText'
propertyName: type
oneOf:
- $ref: '#/components/schemas/InputText'
- $ref: '#/components/schemas/InputImage'
- $ref: '#/components/schemas/InputFile'
- $ref: '#/components/schemas/InputAudio'
type: array
id:
type: string
role:
anyOf:
- enum:
- user
type: string
- enum:
- system
type: string
- enum:
- developer
type: string
type:
enum:
- message
type: string
required:
- id
- role
- content
type: object
OpenAIResponsesAnnotation:
anyOf:
- $ref: '#/components/schemas/FileCitation'
- $ref: '#/components/schemas/URLCitation'
- $ref: '#/components/schemas/FilePath'
example:
file_id: file-abc123
filename: research_paper.pdf
index: 0
type: file_citation
OpenAIResponsesImageGenCallCompleted:
example:
item_id: ig_abc123
output_index: 0
sequence_number: 4
type: response.image_generation_call.completed
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.image_generation_call.completed
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenAIResponsesImageGenCallGenerating:
example:
item_id: ig_abc123
output_index: 0
sequence_number: 2
type: response.image_generation_call.generating
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.image_generation_call.generating
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenAIResponsesImageGenCallInProgress:
example:
item_id: ig_abc123
output_index: 0
sequence_number: 1
type: response.image_generation_call.in_progress
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.image_generation_call.in_progress
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenAIResponsesImageGenCallPartialImage:
example:
item_id: ig_abc123
output_index: 0
partial_image_b64: iVBORw0KGgo...
partial_image_index: 0
sequence_number: 3
type: response.image_generation_call.partial_image
properties:
item_id:
type: string
output_index:
type: integer
partial_image_b64:
type: string
partial_image_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.image_generation_call.partial_image
type: string
required:
- type
- item_id
- output_index
- sequence_number
- partial_image_b64
- partial_image_index
type: object
OpenAIResponsesRefusalContent:
example:
refusal: I'm sorry, I cannot assist with that request
type: refusal
properties:
refusal:
type: string
type:
enum:
- refusal
type: string
required:
- type
- refusal
type: object
OpenAIResponsesResponseStatus:
enum:
- completed
- incomplete
- in_progress
- failed
- cancelled
- queued
example: completed
type: string
OpenAIResponsesSearchCompleted:
example:
item_id: ws_abc123
output_index: 0
sequence_number: 5
type: response.web_search_call.completed
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.web_search_call.completed
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenAIResponsesToolChoice:
anyOf:
- enum:
- auto
type: string
- enum:
- none
type: string
- enum:
- required
type: string
- properties:
name:
type: string
type:
enum:
- function
type: string
required:
- type
- name
type: object
- properties:
type:
anyOf:
- enum:
- web_search_preview_2025_03_11
type: string
- enum:
- web_search_preview
type: string
required:
- type
type: object
- $ref: '#/components/schemas/ToolChoiceAllowed'
example: auto
OpenAIResponsesTruncation:
enum:
- auto
- disabled
- null
example: auto
nullable: true
type: string
OpenAIResponsesUsage:
example:
input_tokens: 100
input_tokens_details:
cached_tokens: 0
output_tokens: 50
output_tokens_details:
reasoning_tokens: 0
total_tokens: 150
properties:
input_tokens:
type: integer
input_tokens_details:
properties:
cached_tokens:
type: integer
required:
- cached_tokens
type: object
output_tokens:
type: integer
output_tokens_details:
properties:
reasoning_tokens:
type: integer
required:
- reasoning_tokens
type: object
total_tokens:
type: integer
required:
- input_tokens
- input_tokens_details
- output_tokens
- output_tokens_details
- total_tokens
type: object
OpenAIResponsesWebSearchCallInProgress:
example:
item_id: ws_abc123
output_index: 0
sequence_number: 1
type: response.web_search_call.in_progress
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.web_search_call.in_progress
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenAIResponsesWebSearchCallSearching:
example:
item_id: ws_abc123
output_index: 0
sequence_number: 2
type: response.web_search_call.searching
properties:
item_id:
type: string
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.web_search_call.searching
type: string
required:
- type
- item_id
- output_index
- sequence_number
type: object
OpenResponsesCreatedEvent:
allOf:
- $ref: '#/components/schemas/CreatedEvent'
- properties:
response:
$ref: '#/components/schemas/OpenResponsesResult'
type: object
description: Event emitted when a response is created
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: in_progress
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 0
type: response.created
OpenResponsesInProgressEvent:
allOf:
- $ref: '#/components/schemas/InProgressEvent'
- properties:
response:
$ref: '#/components/schemas/OpenResponsesResult'
type: object
description: Event emitted when a response is in progress
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: in_progress
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 1
type: response.in_progress
OpenResponsesLogProbs:
description: Log probability information for a token
example:
logprob: -0.1
token: world
top_logprobs:
- logprob: -0.5
token: hello
properties:
bytes:
items:
type: integer
type: array
logprob:
format: double
type: number
token:
type: string
top_logprobs:
items:
$ref: '#/components/schemas/OpenResponsesTopLogprobs'
type: array
required:
- logprob
- token
type: object
OpenResponsesResult:
allOf:
- $ref: '#/components/schemas/BaseResponsesResult'
- properties:
output:
items:
$ref: '#/components/schemas/OutputItems'
type: array
service_tier:
nullable: true
type: string
text:
$ref: '#/components/schemas/TextExtendedConfig'
usage:
$ref: '#/components/schemas/Usage'
type: object
description: Complete non-streaming response from the Responses API
example:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output:
- content:
- annotations: []
text: Hello! How can I help you today?
type: output_text
id: msg-abc123
role: assistant
status: completed
type: message
parallel_tool_calls: true
status: completed
temperature: null
tool_choice: auto
tools: []
top_p: null
usage:
input_tokens: 10
input_tokens_details:
cached_tokens: 0
output_tokens: 25
output_tokens_details:
reasoning_tokens: 0
total_tokens: 35
OpenResponsesTopLogprobs:
description: Alternative token with its log probability
example:
logprob: -0.5
token: hello
properties:
bytes:
items:
type: integer
type: array
logprob:
format: double
type: number
token:
type: string
type: object
OpenRouterWebSearchServerTool:
description: 'OpenRouter built-in server tool: searches the web for current information'
example:
parameters:
max_results: 5
type: openrouter:web_search
properties:
parameters:
$ref: '#/components/schemas/WebSearchConfig'
type:
enum:
- openrouter:web_search
type: string
required:
- type
type: object
ORAnthropicContentBlock:
discriminator:
mapping:
bash_code_execution_tool_result: '#/components/schemas/AnthropicBashCodeExecutionToolResult'
code_execution_tool_result: '#/components/schemas/AnthropicCodeExecutionToolResult'
compaction: '#/components/schemas/AnthropicCompactionBlock'
container_upload: '#/components/schemas/AnthropicContainerUpload'
redacted_thinking: '#/components/schemas/AnthropicRedactedThinkingBlock'
server_tool_use: '#/components/schemas/AnthropicServerToolUseBlock'
text: '#/components/schemas/AnthropicTextBlock'
text_editor_code_execution_tool_result: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult'
thinking: '#/components/schemas/AnthropicThinkingBlock'
tool_search_tool_result: '#/components/schemas/AnthropicToolSearchToolResult'
tool_use: '#/components/schemas/AnthropicToolUseBlock'
web_fetch_tool_result: '#/components/schemas/AnthropicWebFetchToolResult'
web_search_tool_result: '#/components/schemas/AnthropicWebSearchToolResult'
propertyName: type
example:
citations: null
text: Hello, world!
type: text
oneOf:
- $ref: '#/components/schemas/AnthropicTextBlock'
- $ref: '#/components/schemas/AnthropicToolUseBlock'
- $ref: '#/components/schemas/AnthropicThinkingBlock'
- $ref: '#/components/schemas/AnthropicRedactedThinkingBlock'
- $ref: '#/components/schemas/AnthropicServerToolUseBlock'
- $ref: '#/components/schemas/AnthropicWebSearchToolResult'
- $ref: '#/components/schemas/AnthropicWebFetchToolResult'
- $ref: '#/components/schemas/AnthropicCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult'
- $ref: '#/components/schemas/AnthropicToolSearchToolResult'
- $ref: '#/components/schemas/AnthropicContainerUpload'
- $ref: '#/components/schemas/AnthropicCompactionBlock'
ORAnthropicStopReason:
enum:
- end_turn
- max_tokens
- stop_sequence
- tool_use
- pause_turn
- refusal
- compaction
- null
example: end_turn
nullable: true
type: string
OutputApplyPatchServerToolItem:
description: An openrouter:apply_patch server tool output item
example:
filePath: /src/main.ts
id: ap_tmp_abc123
status: completed
type: openrouter:apply_patch
properties:
filePath:
type: string
id:
type: string
patch:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:apply_patch
type: string
required:
- status
- type
type: object
OutputBashServerToolItem:
description: An openrouter:bash server tool output item
example:
command: ls -la
exitCode: 0
id: bash_tmp_abc123
status: completed
stdout: |
total 0
type: openrouter:bash
properties:
command:
type: string
exitCode:
type: integer
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
stderr:
type: string
stdout:
type: string
type:
enum:
- openrouter:bash
type: string
required:
- status
- type
type: object
OutputBrowserUseServerToolItem:
description: An openrouter:browser_use server tool output item
example:
action: screenshot
id: bu_tmp_abc123
status: completed
type: openrouter:browser_use
properties:
action:
type: string
id:
type: string
screenshotB64:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:browser_use
type: string
required:
- status
- type
type: object
OutputCodeInterpreterCallItem:
allOf:
- $ref: '#/components/schemas/CodeInterpreterCallItem'
- properties: {}
type: object
description: A code interpreter execution call with outputs
example:
code: print("hello")
container_id: ctr-xyz789
id: ci-abc123
outputs:
- logs: |
hello
type: logs
status: completed
type: code_interpreter_call
OutputCodeInterpreterServerToolItem:
description: An openrouter:code_interpreter server tool output item
example:
code: print("hello")
id: ci_tmp_abc123
language: python
status: completed
stdout: |
hello
type: openrouter:code_interpreter
properties:
code:
type: string
exitCode:
type: integer
id:
type: string
language:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
stderr:
type: string
stdout:
type: string
type:
enum:
- openrouter:code_interpreter
type: string
required:
- status
- type
type: object
OutputComputerCallItem:
example:
action:
type: screenshot
call_id: call-abc123
id: cu-abc123
pending_safety_checks: []
status: completed
type: computer_call
properties:
action:
nullable: true
call_id:
type: string
id:
type: string
pending_safety_checks:
items:
properties:
code:
type: string
id:
type: string
message:
type: string
required:
- id
- code
- message
type: object
type: array
status:
enum:
- completed
- incomplete
- in_progress
type: string
type:
enum:
- computer_call
type: string
required:
- type
- call_id
- status
- pending_safety_checks
type: object
OutputDatetimeItem:
description: An openrouter:datetime server tool output item
example:
datetime: '2026-03-12T14:30:00.000Z'
id: dt_tmp_abc123
status: completed
timezone: UTC
type: openrouter:datetime
properties:
datetime:
description: ISO 8601 datetime string
type: string
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
timezone:
description: IANA timezone name
type: string
type:
enum:
- openrouter:datetime
type: string
required:
- status
- type
- datetime
- timezone
type: object
OutputFileSearchCallItem:
allOf:
- $ref: '#/components/schemas/OutputItemFileSearchCall'
- properties: {}
type: object
example:
id: fs-abc123
queries:
- search term
results: []
status: completed
type: file_search_call
OutputFileSearchServerToolItem:
description: An openrouter:file_search server tool output item
example:
id: fs_tmp_abc123
queries:
- search term
status: completed
type: openrouter:file_search
properties:
id:
type: string
queries:
items:
type: string
type: array
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:file_search
type: string
required:
- status
- type
type: object
OutputFunctionCallItem:
allOf:
- $ref: '#/components/schemas/OutputItemFunctionCall'
- properties: {}
type: object
example:
arguments: '{"location":"San Francisco"}'
call_id: call-abc123
id: fc-abc123
name: get_weather
status: completed
type: function_call
OutputImageGenerationCallItem:
allOf:
- $ref: '#/components/schemas/OutputItemImageGenerationCall'
- properties: {}
type: object
example:
id: img-abc123
result: null
status: completed
type: image_generation_call
OutputImageGenerationServerToolItem:
description: An openrouter:image_generation server tool output item
example:
id: ig_tmp_abc123
imageUrl: https://example.com/image.png
result: https://example.com/image.png
status: completed
type: openrouter:image_generation
properties:
id:
type: string
imageB64:
type: string
imageUrl:
type: string
result:
description: The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format
nullable: true
type: string
revisedPrompt:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:image_generation
type: string
required:
- status
- type
type: object
OutputItemAddedEvent:
description: Event emitted when a new output item is added to the response
example:
item:
content: []
id: item-1
role: assistant
status: in_progress
type: message
output_index: 0
sequence_number: 2
type: response.output_item.added
properties:
item:
discriminator:
mapping:
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
function_call: '#/components/schemas/OutputItemFunctionCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
propertyName: type
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'
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.output_item.added
type: string
required:
- type
- output_index
- item
- sequence_number
type: object
OutputItemDoneEvent:
description: Event emitted when an output item is complete
example:
item:
content:
- annotations: []
text: Hello! How can I help you?
type: output_text
id: item-1
role: assistant
status: completed
type: message
output_index: 0
sequence_number: 8
type: response.output_item.done
properties:
item:
discriminator:
mapping:
file_search_call: '#/components/schemas/OutputItemFileSearchCall'
function_call: '#/components/schemas/OutputItemFunctionCall'
image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
message: '#/components/schemas/OutputMessage'
reasoning: '#/components/schemas/OutputItemReasoning'
web_search_call: '#/components/schemas/OutputItemWebSearchCall'
propertyName: type
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'
output_index:
type: integer
sequence_number:
type: integer
type:
enum:
- response.output_item.done
type: string
required:
- type
- output_index
- item
- sequence_number
type: object
OutputItemFileSearchCall:
example:
id: filesearch-abc123
queries:
- machine learning algorithms
- neural networks
status: completed
type: file_search_call
properties:
id:
type: string
queries:
items:
type: string
type: array
status:
$ref: '#/components/schemas/WebSearchStatus'
type:
enum:
- file_search_call
type: string
required:
- type
- id
- queries
- status
type: object
OutputItemFunctionCall:
example:
arguments: '{"location":"San Francisco","unit":"celsius"}'
call_id: call-abc123
id: call-abc123
name: get_weather
type: function_call
properties:
arguments:
type: string
call_id:
type: string
id:
type: string
name:
type: string
status:
anyOf:
- enum:
- completed
type: string
- enum:
- incomplete
type: string
- enum:
- in_progress
type: string
type:
enum:
- function_call
type: string
required:
- type
- name
- arguments
- call_id
type: object
OutputItemImageGenerationCall:
example:
id: imagegen-abc123
result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
status: completed
type: image_generation_call
properties:
id:
type: string
result:
default: null
nullable: true
type: string
status:
$ref: '#/components/schemas/ImageGenerationStatus'
type:
enum:
- image_generation_call
type: string
required:
- type
- id
- status
type: object
OutputItemReasoning:
example:
id: reasoning-abc123
summary:
- text: Analyzed the problem using first principles
type: summary_text
type: reasoning
properties:
content:
items:
$ref: '#/components/schemas/ReasoningTextContent'
type: array
encrypted_content:
nullable: true
type: string
id:
type: string
status:
anyOf:
- enum:
- completed
type: string
- enum:
- incomplete
type: string
- enum:
- in_progress
type: string
summary:
items:
$ref: '#/components/schemas/ReasoningSummaryText'
type: array
type:
enum:
- reasoning
type: string
required:
- type
- id
- summary
type: object
OutputItems:
description: An output item from the response
discriminator:
mapping:
code_interpreter_call: '#/components/schemas/OutputCodeInterpreterCallItem'
computer_call: '#/components/schemas/OutputComputerCallItem'
file_search_call: '#/components/schemas/OutputFileSearchCallItem'
function_call: '#/components/schemas/OutputFunctionCallItem'
image_generation_call: '#/components/schemas/OutputImageGenerationCallItem'
message: '#/components/schemas/OutputMessageItem'
openrouter:apply_patch: '#/components/schemas/OutputApplyPatchServerToolItem'
openrouter:bash: '#/components/schemas/OutputBashServerToolItem'
openrouter:browser_use: '#/components/schemas/OutputBrowserUseServerToolItem'
openrouter:code_interpreter: '#/components/schemas/OutputCodeInterpreterServerToolItem'
openrouter:datetime: '#/components/schemas/OutputDatetimeItem'
openrouter:experimental__search_models: '#/components/schemas/OutputSearchModelsServerToolItem'
openrouter:file_search: '#/components/schemas/OutputFileSearchServerToolItem'
openrouter:image_generation: '#/components/schemas/OutputImageGenerationServerToolItem'
openrouter:mcp: '#/components/schemas/OutputMcpServerToolItem'
openrouter:memory: '#/components/schemas/OutputMemoryServerToolItem'
openrouter:text_editor: '#/components/schemas/OutputTextEditorServerToolItem'
openrouter:tool_search: '#/components/schemas/OutputToolSearchServerToolItem'
openrouter:web_fetch: '#/components/schemas/OutputWebFetchServerToolItem'
openrouter:web_search: '#/components/schemas/OutputWebSearchServerToolItem'
reasoning: '#/components/schemas/OutputReasoningItem'
web_search_call: '#/components/schemas/OutputWebSearchCallItem'
propertyName: type
example:
content:
- text: Hello! How can I help you today?
type: output_text
id: msg-abc123
role: assistant
status: completed
type: message
oneOf:
- $ref: '#/components/schemas/OutputMessageItem'
- $ref: '#/components/schemas/OutputReasoningItem'
- $ref: '#/components/schemas/OutputFunctionCallItem'
- $ref: '#/components/schemas/OutputWebSearchCallItem'
- $ref: '#/components/schemas/OutputFileSearchCallItem'
- $ref: '#/components/schemas/OutputImageGenerationCallItem'
- $ref: '#/components/schemas/OutputCodeInterpreterCallItem'
- $ref: '#/components/schemas/OutputComputerCallItem'
- $ref: '#/components/schemas/OutputDatetimeItem'
- $ref: '#/components/schemas/OutputWebSearchServerToolItem'
- $ref: '#/components/schemas/OutputCodeInterpreterServerToolItem'
- $ref: '#/components/schemas/OutputFileSearchServerToolItem'
- $ref: '#/components/schemas/OutputImageGenerationServerToolItem'
- $ref: '#/components/schemas/OutputBrowserUseServerToolItem'
- $ref: '#/components/schemas/OutputBashServerToolItem'
- $ref: '#/components/schemas/OutputTextEditorServerToolItem'
- $ref: '#/components/schemas/OutputApplyPatchServerToolItem'
- $ref: '#/components/schemas/OutputWebFetchServerToolItem'
- $ref: '#/components/schemas/OutputToolSearchServerToolItem'
- $ref: '#/components/schemas/OutputMemoryServerToolItem'
- $ref: '#/components/schemas/OutputMcpServerToolItem'
- $ref: '#/components/schemas/OutputSearchModelsServerToolItem'
OutputItemWebSearchCall:
example:
action:
query: OpenAI API
type: search
id: search-abc123
status: completed
type: web_search_call
properties:
action:
oneOf:
- properties:
queries:
items:
type: string
type: array
query:
type: string
sources:
items:
$ref: '#/components/schemas/WebSearchSource'
type: array
type:
enum:
- search
type: string
required:
- type
- query
type: object
- properties:
type:
enum:
- open_page
type: string
url:
nullable: true
type: string
required:
- type
type: object
- properties:
pattern:
type: string
type:
enum:
- find_in_page
type: string
url:
type: string
required:
- type
- pattern
- url
type: object
id:
type: string
status:
$ref: '#/components/schemas/WebSearchStatus'
type:
enum:
- web_search_call
type: string
required:
- type
- id
- action
- status
type: object
OutputMcpServerToolItem:
description: An openrouter:mcp server tool output item
example:
id: mcp_tmp_abc123
serverLabel: my-server
status: completed
toolName: get_data
type: openrouter:mcp
properties:
id:
type: string
serverLabel:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
toolName:
type: string
type:
enum:
- openrouter:mcp
type: string
required:
- status
- type
type: object
OutputMemoryServerToolItem:
description: An openrouter:memory server tool output item
example:
action: read
id: mem_tmp_abc123
key: user_preference
status: completed
type: openrouter:memory
properties:
action:
enum:
- read
- write
- delete
type: string
id:
type: string
key:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:memory
type: string
value:
nullable: true
required:
- status
- type
type: object
OutputMessage:
example:
content:
- text: Hello! How can I help you today?
type: output_text
id: msg-abc123
role: assistant
status: completed
type: message
properties:
content:
items:
anyOf:
- $ref: '#/components/schemas/ResponseOutputText'
- $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
type: array
id:
type: string
phase:
anyOf:
- enum:
- commentary
type: string
- enum:
- final_answer
type: string
- nullable: true
description: >-
The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer`
for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve
and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages.
role:
enum:
- assistant
type: string
status:
anyOf:
- enum:
- completed
type: string
- enum:
- incomplete
type: string
- enum:
- in_progress
type: string
type:
enum:
- message
type: string
required:
- id
- role
- type
- content
type: object
OutputMessageItem:
allOf:
- $ref: '#/components/schemas/OutputMessage'
- properties: {}
type: object
description: An output message item
example:
content:
- annotations: []
text: Hello! How can I help you?
type: output_text
id: msg-123
role: assistant
status: completed
type: message
OutputModality:
enum:
- text
- image
- embeddings
- audio
- video
- rerank
- speech
- transcription
example: text
type: string
OutputModalityEnum:
enum:
- text
- image
example: text
type: string
OutputReasoningItem:
allOf:
- $ref: '#/components/schemas/OutputItemReasoning'
- properties:
content:
items:
$ref: '#/components/schemas/ReasoningTextContent'
nullable: true
type: array
format:
$ref: '#/components/schemas/ReasoningFormat'
signature:
description: A signature for the reasoning content, used for verification
example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
nullable: true
type: string
type: object
description: An output item containing reasoning
example:
content:
- text: First, we analyze the problem...
type: reasoning_text
format: anthropic-claude-v1
id: reasoning-123
signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
status: completed
summary:
- text: Analyzed the problem and found the optimal solution.
type: summary_text
type: reasoning
OutputSearchModelsServerToolItem:
description: An openrouter:experimental__search_models server tool output item
example:
arguments: '{"query":"Claude Opus"}'
id: sm_tmp_abc123
query: Claude Opus
status: completed
type: openrouter:experimental__search_models
properties:
arguments:
description: The JSON arguments submitted to the search tool (e.g. {"query":"Claude"})
type: string
id:
type: string
query:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:experimental__search_models
type: string
required:
- status
- type
type: object
OutputTextEditorServerToolItem:
description: An openrouter:text_editor server tool output item
example:
command: view
filePath: /src/main.ts
id: te_tmp_abc123
status: completed
type: openrouter:text_editor
properties:
command:
enum:
- view
- create
- str_replace
- insert
type: string
filePath:
type: string
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:text_editor
type: string
required:
- status
- type
type: object
OutputToolSearchServerToolItem:
description: An openrouter:tool_search server tool output item
example:
id: ts_tmp_abc123
query: weather tools
status: completed
type: openrouter:tool_search
properties:
id:
type: string
query:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:tool_search
type: string
required:
- status
- type
type: object
OutputWebFetchServerToolItem:
description: An openrouter:web_fetch server tool output item
example:
httpStatus: 200
id: wf_tmp_abc123
status: completed
title: Example Domain
type: openrouter:web_fetch
url: https://example.com
properties:
content:
type: string
error:
description: The error message if the fetch failed.
type: string
httpStatus:
description: The HTTP status code returned by the upstream URL fetch.
type: integer
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
title:
type: string
type:
enum:
- openrouter:web_fetch
type: string
url:
type: string
required:
- status
- type
type: object
OutputWebSearchCallItem:
allOf:
- $ref: '#/components/schemas/OutputItemWebSearchCall'
- properties: {}
type: object
example:
id: ws-abc123
status: completed
type: web_search_call
OutputWebSearchServerToolItem:
description: An openrouter:web_search server tool output item
example:
action:
query: latest AI news
type: search
id: ws_tmp_abc123
status: completed
type: openrouter:web_search
properties:
action:
description: >-
The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model
issued and optional source URLs returned by the search provider.
properties:
query:
type: string
sources:
items:
properties:
type:
enum:
- url
type: string
url:
type: string
required:
- type
- url
type: object
type: array
type:
enum:
- search
type: string
required:
- type
- query
type: object
id:
type: string
status:
$ref: '#/components/schemas/ToolCallStatus'
type:
enum:
- openrouter:web_search
type: string
required:
- status
- type
type: object
Parameter:
enum:
- temperature
- top_p
- top_k
- min_p
- top_a
- frequency_penalty
- presence_penalty
- repetition_penalty
- max_tokens
- max_completion_tokens
- logit_bias
- logprobs
- top_logprobs
- seed
- response_format
- structured_outputs
- stop
- tools
- tool_choice
- parallel_tool_calls
- include_reasoning
- reasoning
- reasoning_effort
- web_search_options
- verbosity
example: temperature
type: string
ParetoRouterPlugin:
example:
enabled: true
id: pareto-router
min_coding_score: 0.8
properties:
enabled:
description: Set to false to disable the pareto-router plugin for this request. Defaults to true.
type: boolean
id:
enum:
- pareto-router
type: string
min_coding_score:
description: >-
Minimum desired coding score between 0 and 1, where 1 is best. Higher values select from stronger coding
models (sourced from Artificial Analysis coding percentiles). Maps internally to one of three tiers (low,
medium, high). Omit to use the router default tier.
example: 0.8
format: double
maximum: 1
minimum: 0
type: number
required:
- id
type: object
PayloadTooLargeResponse:
description: Payload Too Large - Request payload exceeds size limits
example:
error:
code: 413
message: Request payload too large
properties:
error:
$ref: '#/components/schemas/PayloadTooLargeResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
PayloadTooLargeResponseErrorData:
description: Error data for PayloadTooLargeResponse
example:
code: 413
message: Request payload too large
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
PaymentRequiredResponse:
description: Payment Required - Insufficient credits or quota to complete request
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
properties:
error:
$ref: '#/components/schemas/PaymentRequiredResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
PaymentRequiredResponseErrorData:
description: Error data for PaymentRequiredResponse
example:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
PDFParserEngine:
anyOf:
- enum:
- mistral-ocr
- native
- cloudflare-ai
type: string
- enum:
- pdf-text
type: string
description: >-
The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to
"cloudflare-ai".
example: cloudflare-ai
PDFParserOptions:
description: Options for PDF parsing.
example:
engine: cloudflare-ai
properties:
engine:
$ref: '#/components/schemas/PDFParserEngine'
type: object
PercentileLatencyCutoffs:
description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
example:
p50: 5
p90: 10
properties:
p50:
description: Maximum p50 latency (seconds)
format: double
nullable: true
type: number
p75:
description: Maximum p75 latency (seconds)
format: double
nullable: true
type: number
p90:
description: Maximum p90 latency (seconds)
format: double
nullable: true
type: number
p99:
description: Maximum p99 latency (seconds)
format: double
nullable: true
type: number
type: object
PercentileStats:
description: >-
Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible
when authenticated with an API key or cookie; returns null for unauthenticated requests.
example:
p50: 25.5
p75: 35.2
p90: 48.7
p99: 85.3
nullable: true
properties:
p50:
description: Median (50th percentile)
example: 25.5
format: double
type: number
p75:
description: 75th percentile
example: 35.2
format: double
type: number
p90:
description: 90th percentile
example: 48.7
format: double
type: number
p99:
description: 99th percentile
example: 85.3
format: double
type: number
required:
- p50
- p75
- p90
- p99
type: object
PercentileThroughputCutoffs:
description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
example:
p50: 100
p90: 50
properties:
p50:
description: Minimum p50 throughput (tokens/sec)
format: double
nullable: true
type: number
p75:
description: Minimum p75 throughput (tokens/sec)
format: double
nullable: true
type: number
p90:
description: Minimum p90 throughput (tokens/sec)
format: double
nullable: true
type: number
p99:
description: Minimum p99 throughput (tokens/sec)
format: double
nullable: true
type: number
type: object
PerRequestLimits:
description: Per-request token limits
example:
completion_tokens: 1000
prompt_tokens: 1000
nullable: true
properties:
completion_tokens:
description: Maximum completion tokens per request
example: 1000
type: number
prompt_tokens:
description: Maximum prompt tokens per request
example: 1000
type: number
required:
- prompt_tokens
- completion_tokens
type: object
PreferredMaxLatency:
anyOf:
- format: double
type: number
- $ref: '#/components/schemas/PercentileLatencyCutoffs'
- nullable: true
description: >-
Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific
cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using
fallback models, this may cause a fallback model to be used instead of the primary model if it meets the
threshold.
example: 5
PreferredMinThroughput:
anyOf:
- format: double
type: number
- $ref: '#/components/schemas/PercentileThroughputCutoffs'
- nullable: true
description: >-
Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with
percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in
routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if
it meets the threshold.
example: 100
Preview_20250311_WebSearchServerTool:
description: Web search preview tool configuration (2025-03-11 version)
example:
type: web_search_preview_2025_03_11
properties:
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
filters:
$ref: '#/components/schemas/WebSearchDomainFilter'
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
search_context_size:
$ref: '#/components/schemas/SearchContextSizeEnum'
type:
enum:
- web_search_preview_2025_03_11
type: string
user_location:
$ref: '#/components/schemas/Preview_WebSearchUserLocation'
required:
- type
type: object
Preview_WebSearchServerTool:
description: Web search preview tool configuration
example:
type: web_search_preview
properties:
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
filters:
$ref: '#/components/schemas/WebSearchDomainFilter'
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
search_context_size:
$ref: '#/components/schemas/SearchContextSizeEnum'
type:
enum:
- web_search_preview
type: string
user_location:
$ref: '#/components/schemas/Preview_WebSearchUserLocation'
required:
- type
type: object
Preview_WebSearchUserLocation:
example:
city: San Francisco
country: USA
region: California
timezone: America/Los_Angeles
type: approximate
nullable: true
properties:
city:
nullable: true
type: string
country:
nullable: true
type: string
region:
nullable: true
type: string
timezone:
nullable: true
type: string
type:
enum:
- approximate
type: string
required:
- type
type: object
ProviderName:
enum:
- AkashML
- AI21
- AionLabs
- Alibaba
- Ambient
- Baidu
- Amazon Bedrock
- Amazon Nova
- Anthropic
- Arcee AI
- AtlasCloud
- Avian
- Azure
- BaseTen
- BytePlus
- Black Forest Labs
- Cerebras
- Chutes
- Cirrascale
- Clarifai
- Cloudflare
- Cohere
- Crusoe
- DeepInfra
- DeepSeek
- DekaLLM
- Featherless
- Fireworks
- Friendli
- GMICloud
- Google
- Google AI Studio
- Groq
- Hyperbolic
- Inception
- Inceptron
- InferenceNet
- Ionstream
- Infermatic
- Io Net
- Inflection
- Liquid
- Mara
- Mancer 2
- Minimax
- ModelRun
- Mistral
- Modular
- Moonshot AI
- Morph
- NCompass
- Nebius
- Nex AGI
- NextBit
- Novita
- Nvidia
- OpenAI
- OpenInference
- Parasail
- Poolside
- Perplexity
- Phala
- Recraft
- Reka
- Relace
- SambaNova
- Seed
- SiliconFlow
- Sourceful
- StepFun
- Stealth
- StreamLake
- Switchpoint
- Together
- Upstage
- Venice
- WandB
- Xiaomi
- xAI
- Z.AI
- FakeProvider
example: OpenAI
type: string
ProviderOptions:
description: >-
Provider-specific options keyed by provider slug. The options for the matched provider are spread into the
upstream request body.
example:
openai:
max_tokens: 1000
properties:
01ai:
additionalProperties:
nullable: true
type: object
ai21:
additionalProperties:
nullable: true
type: object
aion-labs:
additionalProperties:
nullable: true
type: object
akashml:
additionalProperties:
nullable: true
type: object
alibaba:
additionalProperties:
nullable: true
type: object
amazon-bedrock:
additionalProperties:
nullable: true
type: object
amazon-nova:
additionalProperties:
nullable: true
type: object
ambient:
additionalProperties:
nullable: true
type: object
anthropic:
additionalProperties:
nullable: true
type: object
anyscale:
additionalProperties:
nullable: true
type: object
arcee-ai:
additionalProperties:
nullable: true
type: object
atlas-cloud:
additionalProperties:
nullable: true
type: object
atoma:
additionalProperties:
nullable: true
type: object
avian:
additionalProperties:
nullable: true
type: object
azure:
additionalProperties:
nullable: true
type: object
baidu:
additionalProperties:
nullable: true
type: object
baseten:
additionalProperties:
nullable: true
type: object
black-forest-labs:
additionalProperties:
nullable: true
type: object
byteplus:
additionalProperties:
nullable: true
type: object
centml:
additionalProperties:
nullable: true
type: object
cerebras:
additionalProperties:
nullable: true
type: object
chutes:
additionalProperties:
nullable: true
type: object
cirrascale:
additionalProperties:
nullable: true
type: object
clarifai:
additionalProperties:
nullable: true
type: object
cloudflare:
additionalProperties:
nullable: true
type: object
cohere:
additionalProperties:
nullable: true
type: object
crofai:
additionalProperties:
nullable: true
type: object
crusoe:
additionalProperties:
nullable: true
type: object
deepinfra:
additionalProperties:
nullable: true
type: object
deepseek:
additionalProperties:
nullable: true
type: object
dekallm:
additionalProperties:
nullable: true
type: object
enfer:
additionalProperties:
nullable: true
type: object
fake-provider:
additionalProperties:
nullable: true
type: object
featherless:
additionalProperties:
nullable: true
type: object
fireworks:
additionalProperties:
nullable: true
type: object
friendli:
additionalProperties:
nullable: true
type: object
gmicloud:
additionalProperties:
nullable: true
type: object
google-ai-studio:
additionalProperties:
nullable: true
type: object
google-vertex:
additionalProperties:
nullable: true
type: object
gopomelo:
additionalProperties:
nullable: true
type: object
groq:
additionalProperties:
nullable: true
type: object
huggingface:
additionalProperties:
nullable: true
type: object
hyperbolic:
additionalProperties:
nullable: true
type: object
hyperbolic-quantized:
additionalProperties:
nullable: true
type: object
inception:
additionalProperties:
nullable: true
type: object
inceptron:
additionalProperties:
nullable: true
type: object
inference-net:
additionalProperties:
nullable: true
type: object
infermatic:
additionalProperties:
nullable: true
type: object
inflection:
additionalProperties:
nullable: true
type: object
inocloud:
additionalProperties:
nullable: true
type: object
io-net:
additionalProperties:
nullable: true
type: object
ionstream:
additionalProperties:
nullable: true
type: object
klusterai:
additionalProperties:
nullable: true
type: object
lambda:
additionalProperties:
nullable: true
type: object
lepton:
additionalProperties:
nullable: true
type: object
liquid:
additionalProperties:
nullable: true
type: object
lynn:
additionalProperties:
nullable: true
type: object
lynn-private:
additionalProperties:
nullable: true
type: object
mancer:
additionalProperties:
nullable: true
type: object
mancer-old:
additionalProperties:
nullable: true
type: object
mara:
additionalProperties:
nullable: true
type: object
meta:
additionalProperties:
nullable: true
type: object
minimax:
additionalProperties:
nullable: true
type: object
mistral:
additionalProperties:
nullable: true
type: object
modal:
additionalProperties:
nullable: true
type: object
modelrun:
additionalProperties:
nullable: true
type: object
modular:
additionalProperties:
nullable: true
type: object
moonshotai:
additionalProperties:
nullable: true
type: object
morph:
additionalProperties:
nullable: true
type: object
ncompass:
additionalProperties:
nullable: true
type: object
nebius:
additionalProperties:
nullable: true
type: object
nex-agi:
additionalProperties:
nullable: true
type: object
nextbit:
additionalProperties:
nullable: true
type: object
nineteen:
additionalProperties:
nullable: true
type: object
novita:
additionalProperties:
nullable: true
type: object
nvidia:
additionalProperties:
nullable: true
type: object
octoai:
additionalProperties:
nullable: true
type: object
open-inference:
additionalProperties:
nullable: true
type: object
openai:
additionalProperties:
nullable: true
type: object
parasail:
additionalProperties:
nullable: true
type: object
perplexity:
additionalProperties:
nullable: true
type: object
phala:
additionalProperties:
nullable: true
type: object
poolside:
additionalProperties:
nullable: true
type: object
recraft:
additionalProperties:
nullable: true
type: object
recursal:
additionalProperties:
nullable: true
type: object
reflection:
additionalProperties:
nullable: true
type: object
reka:
additionalProperties:
nullable: true
type: object
relace:
additionalProperties:
nullable: true
type: object
replicate:
additionalProperties:
nullable: true
type: object
sambanova:
additionalProperties:
nullable: true
type: object
sambanova-cloaked:
additionalProperties:
nullable: true
type: object
seed:
additionalProperties:
nullable: true
type: object
sf-compute:
additionalProperties:
nullable: true
type: object
siliconflow:
additionalProperties:
nullable: true
type: object
sourceful:
additionalProperties:
nullable: true
type: object
stealth:
additionalProperties:
nullable: true
type: object
stepfun:
additionalProperties:
nullable: true
type: object
streamlake:
additionalProperties:
nullable: true
type: object
switchpoint:
additionalProperties:
nullable: true
type: object
targon:
additionalProperties:
nullable: true
type: object
together:
additionalProperties:
nullable: true
type: object
together-lite:
additionalProperties:
nullable: true
type: object
ubicloud:
additionalProperties:
nullable: true
type: object
upstage:
additionalProperties:
nullable: true
type: object
venice:
additionalProperties:
nullable: true
type: object
wandb:
additionalProperties:
nullable: true
type: object
xai:
additionalProperties:
nullable: true
type: object
xiaomi:
additionalProperties:
nullable: true
type: object
z-ai:
additionalProperties:
nullable: true
type: object
type: object
ProviderOverloadedResponse:
description: Provider Overloaded - Provider is temporarily overloaded
example:
error:
code: 529
message: Provider returned error
properties:
error:
$ref: '#/components/schemas/ProviderOverloadedResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
ProviderOverloadedResponseErrorData:
description: Error data for ProviderOverloadedResponse
example:
code: 529
message: Provider returned error
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
ProviderPreferences:
additionalProperties: false
description: When multiple model providers are available, optionally indicate your routing preference.
example:
allow_fallbacks: true
nullable: true
properties:
allow_fallbacks:
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.
nullable: true
type: boolean
data_collection:
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.
enum:
- deny
- allow
- null
example: allow
nullable: true
type: string
enforce_distillable_text:
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
nullable: true
type: boolean
ignore:
description: >-
List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider
settings for this request.
example:
- openai
- anthropic
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
nullable: true
type: array
max_price:
description: >-
The object specifying the maximum price you want to pay for this request. USD price per million tokens, for
prompt and completion.
properties:
audio:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: Price per audio unit
completion:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: Price per million completion tokens
image:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: Price per image
prompt:
$ref: '#/components/schemas/BigNumberUnion'
request:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: Price per request
type: object
only:
description: >-
List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider
settings for this request.
example:
- openai
- anthropic
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
nullable: true
type: array
order:
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.
example:
- openai
- anthropic
items:
anyOf:
- $ref: '#/components/schemas/ProviderName'
- type: string
nullable: true
type: array
preferred_max_latency:
$ref: '#/components/schemas/PreferredMaxLatency'
preferred_min_throughput:
$ref: '#/components/schemas/PreferredMinThroughput'
quantizations:
description: A list of quantization levels to filter the provider by.
items:
$ref: '#/components/schemas/Quantization'
nullable: true
type: array
require_parameters:
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.
nullable: true
type: boolean
sort:
anyOf:
- $ref: '#/components/schemas/ProviderSort'
- $ref: '#/components/schemas/ProviderSortConfig'
- nullable: true
description: >-
The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is
performed.
example: price
zdr:
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
nullable: true
type: boolean
type: object
ProviderResponse:
description: Details of a provider response for a generation attempt
example:
endpoint_id: ep_abc123
id: chatcmpl-abc123
is_byok: false
latency: 1200
model_permaslug: openai/gpt-4
provider_name: OpenAI
status: 200
properties:
endpoint_id:
description: Internal endpoint identifier
example: ep_abc123
type: string
id:
description: Upstream provider response identifier
example: chatcmpl-abc123
type: string
is_byok:
description: Whether the request used a bring-your-own-key
example: false
type: boolean
latency:
description: Response latency in milliseconds
example: 1200
type: number
model_permaslug:
description: Canonical model slug
example: openai/gpt-4
type: string
provider_name:
description: Name of the provider
enum:
- AnyScale
- Atoma
- Cent-ML
- CrofAI
- Enfer
- GoPomelo
- HuggingFace
- Hyperbolic 2
- InoCloud
- Kluster
- Lambda
- Lepton
- Lynn 2
- Lynn
- Mancer
- Meta
- Modal
- Nineteen
- OctoAI
- Recursal
- Reflection
- Replicate
- SambaNova 2
- SF Compute
- Targon
- Together 2
- Ubicloud
- 01.AI
- AkashML
- AI21
- AionLabs
- Alibaba
- Ambient
- Baidu
- Amazon Bedrock
- Amazon Nova
- Anthropic
- Arcee AI
- AtlasCloud
- Avian
- Azure
- BaseTen
- BytePlus
- Black Forest Labs
- Cerebras
- Chutes
- Cirrascale
- Clarifai
- Cloudflare
- Cohere
- Crusoe
- DeepInfra
- DeepSeek
- DekaLLM
- Featherless
- Fireworks
- Friendli
- GMICloud
- Google
- Google AI Studio
- Groq
- Hyperbolic
- Inception
- Inceptron
- InferenceNet
- Ionstream
- Infermatic
- Io Net
- Inflection
- Liquid
- Mara
- Mancer 2
- Minimax
- ModelRun
- Mistral
- Modular
- Moonshot AI
- Morph
- NCompass
- Nebius
- Nex AGI
- NextBit
- Novita
- Nvidia
- OpenAI
- OpenInference
- Parasail
- Poolside
- Perplexity
- Phala
- Recraft
- Reka
- Relace
- SambaNova
- Seed
- SiliconFlow
- Sourceful
- StepFun
- Stealth
- StreamLake
- Switchpoint
- Together
- Upstage
- Venice
- WandB
- Xiaomi
- xAI
- Z.AI
- FakeProvider
example: OpenAI
type: string
status:
description: HTTP status code from the provider
example: 200
nullable: true
type: number
required:
- status
type: object
ProviderSort:
description: The provider sorting strategy (price, throughput, latency)
enum:
- price
- throughput
- latency
- exacto
example: price
type: string
ProviderSortConfig:
description: The provider sorting strategy (price, throughput, latency)
example:
by: price
partition: model
properties:
by:
description: The provider sorting strategy (price, throughput, latency)
enum:
- price
- throughput
- latency
- exacto
- null
example: price
nullable: true
type: string
partition:
description: >-
Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback
models remain fallbacks), "none" sorts all endpoints together regardless of model.
enum:
- model
- none
- null
example: model
nullable: true
type: string
type: object
PublicEndpoint:
description: Information about a specific model endpoint
example:
context_length: 8192
latency_last_30m:
p50: 0.25
p75: 0.35
p90: 0.48
p99: 0.85
max_completion_tokens: 4096
max_prompt_tokens: 8192
model_id: openai/gpt-4
model_name: GPT-4
name: 'OpenAI: GPT-4'
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
provider_name: OpenAI
quantization: fp16
status: 0
supported_parameters:
- temperature
- top_p
- max_tokens
supports_implicit_caching: true
tag: openai
throughput_last_30m:
p50: 45.2
p75: 38.5
p90: 28.3
p99: 15.1
uptime_last_1d: 99.8
uptime_last_30m: 99.5
uptime_last_5m: 100
properties:
context_length:
type: integer
latency_last_30m:
$ref: '#/components/schemas/PercentileStats'
max_completion_tokens:
nullable: true
type: integer
max_prompt_tokens:
nullable: true
type: integer
model_id:
description: The unique identifier for the model (permaslug)
example: openai/gpt-4
type: string
model_name:
type: string
name:
type: string
pricing:
properties:
audio:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
audio_output:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
completion:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
discount:
type: number
image:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
image_output:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
image_token:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_audio_cache:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_cache_read:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_cache_write:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
internal_reasoning:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
prompt:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
request:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
web_search:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
required:
- prompt
- completion
type: object
provider_name:
$ref: '#/components/schemas/ProviderName'
quantization:
allOf:
- $ref: '#/components/schemas/Quantization'
- nullable: true
status:
$ref: '#/components/schemas/EndpointStatus'
supported_parameters:
items:
$ref: '#/components/schemas/Parameter'
type: array
supports_implicit_caching:
type: boolean
tag:
type: string
throughput_last_30m:
allOf:
- $ref: '#/components/schemas/PercentileStats'
- description: >-
Throughput percentiles in tokens per second over the last 30 minutes. Throughput measures output token
generation speed. Only visible when authenticated with an API key or cookie; returns null for
unauthenticated requests.
uptime_last_1d:
description: >-
Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) *
100. Rate-limited requests are excluded. Returns null if insufficient data.
format: double
nullable: true
type: number
uptime_last_30m:
format: double
nullable: true
type: number
uptime_last_5m:
description: >-
Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests)
* 100. Rate-limited requests are excluded. Returns null if insufficient data.
format: double
nullable: true
type: number
required:
- name
- model_id
- model_name
- context_length
- pricing
- provider_name
- tag
- quantization
- max_completion_tokens
- max_prompt_tokens
- supported_parameters
- uptime_last_30m
- uptime_last_5m
- uptime_last_1d
- supports_implicit_caching
- latency_last_30m
- throughput_last_30m
type: object
PublicPricing:
description: Pricing information for the model
example:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
properties:
audio:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
audio_output:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
completion:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
discount:
type: number
image:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
image_output:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
image_token:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_audio_cache:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_cache_read:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
input_cache_write:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
internal_reasoning:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
prompt:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
request:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
web_search:
allOf:
- $ref: '#/components/schemas/BigNumberUnion'
- description: A number or string value representing a large number
required:
- prompt
- completion
type: object
Quantization:
enum:
- int4
- int8
- fp4
- fp6
- fp8
- fp16
- bf16
- fp32
- unknown
example: fp16
type: string
ReasoningConfig:
allOf:
- $ref: '#/components/schemas/BaseReasoningConfig'
- nullable: true
properties:
enabled:
nullable: true
type: boolean
max_tokens:
nullable: true
type: integer
type: object
description: Configuration for reasoning mode in the response
example:
enabled: true
summary: auto
ReasoningDeltaEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningDeltaEvent'
- properties: {}
type: object
description: Event emitted when reasoning text delta is streamed
example:
content_index: 0
delta: First, we need
item_id: item-1
output_index: 0
sequence_number: 4
type: response.reasoning_text.delta
ReasoningDetailEncrypted:
description: Reasoning detail encrypted schema
example:
data: encrypted data
type: reasoning.encrypted
properties:
data:
type: string
format:
$ref: '#/components/schemas/ReasoningFormat'
id:
nullable: true
type: string
index:
type: integer
type:
enum:
- reasoning.encrypted
type: string
required:
- type
- data
type: object
ReasoningDetailSummary:
description: Reasoning detail summary schema
example:
summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
type: reasoning.summary
properties:
format:
$ref: '#/components/schemas/ReasoningFormat'
id:
nullable: true
type: string
index:
type: integer
summary:
type: string
type:
enum:
- reasoning.summary
type: string
required:
- type
- summary
type: object
ReasoningDetailText:
description: Reasoning detail text schema
example:
signature: signature
text: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
type: reasoning.text
properties:
format:
$ref: '#/components/schemas/ReasoningFormat'
id:
nullable: true
type: string
index:
type: integer
signature:
nullable: true
type: string
text:
nullable: true
type: string
type:
enum:
- reasoning.text
type: string
required:
- type
type: object
ReasoningDetailUnion:
description: Reasoning detail union schema
discriminator:
mapping:
reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted'
reasoning.summary: '#/components/schemas/ReasoningDetailSummary'
reasoning.text: '#/components/schemas/ReasoningDetailText'
propertyName: type
example:
summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
type: reasoning.summary
oneOf:
- $ref: '#/components/schemas/ReasoningDetailSummary'
- $ref: '#/components/schemas/ReasoningDetailEncrypted'
- $ref: '#/components/schemas/ReasoningDetailText'
ReasoningDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningDoneEvent'
- properties: {}
type: object
description: Event emitted when reasoning text streaming is complete
example:
content_index: 0
item_id: item-1
output_index: 0
sequence_number: 6
text: First, we need to identify the key components and then combine them logically.
type: response.reasoning_text.done
ReasoningEffort:
enum:
- xhigh
- high
- medium
- low
- minimal
- none
- null
example: medium
nullable: true
type: string
ReasoningFormat:
enum:
- unknown
- openai-responses-v1
- azure-openai-responses-v1
- xai-responses-v1
- anthropic-claude-v1
- google-gemini-v1
- null
example: unknown
nullable: true
type: string
ReasoningItem:
allOf:
- $ref: '#/components/schemas/OutputItemReasoning'
- properties:
content:
items:
$ref: '#/components/schemas/ReasoningTextContent'
nullable: true
type: array
format:
$ref: '#/components/schemas/ReasoningFormat'
signature:
nullable: true
type: string
type: object
description: Reasoning output item with signature and format extensions
example:
id: reasoning-abc123
summary:
- text: Step by step analysis
type: summary_text
type: reasoning
ReasoningSummaryPartAddedEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent'
- properties: {}
type: object
description: Event emitted when a reasoning summary part is added
example:
item_id: item-1
output_index: 0
part:
text: ''
type: summary_text
sequence_number: 3
summary_index: 0
type: response.reasoning_summary_part.added
ReasoningSummaryPartDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningSummaryPartDoneEvent'
- properties: {}
type: object
description: Event emitted when a reasoning summary part is complete
example:
item_id: item-1
output_index: 0
part:
text: Analyzing the problem step by step to find the optimal solution.
type: summary_text
sequence_number: 7
summary_index: 0
type: response.reasoning_summary_part.done
ReasoningSummaryText:
example:
text: Analyzed the problem using first principles
type: summary_text
properties:
text:
type: string
type:
enum:
- summary_text
type: string
required:
- type
- text
type: object
ReasoningSummaryTextDeltaEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent'
- properties: {}
type: object
description: Event emitted when reasoning summary text delta is streamed
example:
delta: Analyzing
item_id: item-1
output_index: 0
sequence_number: 4
summary_index: 0
type: response.reasoning_summary_text.delta
ReasoningSummaryTextDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseReasoningSummaryTextDoneEvent'
- properties: {}
type: object
description: Event emitted when reasoning summary text streaming is complete
example:
item_id: item-1
output_index: 0
sequence_number: 6
summary_index: 0
text: Analyzing the problem step by step to find the optimal solution.
type: response.reasoning_summary_text.done
ReasoningSummaryVerbosity:
enum:
- auto
- concise
- detailed
- null
example: auto
nullable: true
type: string
ReasoningTextContent:
example:
text: Let me think step by step about this problem...
type: reasoning_text
properties:
text:
type: string
type:
enum:
- reasoning_text
type: string
required:
- type
- text
type: object
RefusalDeltaEvent:
allOf:
- $ref: '#/components/schemas/BaseRefusalDeltaEvent'
- properties: {}
type: object
description: Event emitted when a refusal delta is streamed
example:
content_index: 0
delta: I'm sorry
item_id: item-1
output_index: 0
sequence_number: 4
type: response.refusal.delta
RefusalDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseRefusalDoneEvent'
- properties: {}
type: object
description: Event emitted when refusal streaming is complete
example:
content_index: 0
item_id: item-1
output_index: 0
refusal: I'm sorry, but I can't assist with that request.
sequence_number: 6
type: response.refusal.done
RequestMetadata:
additionalProperties:
maxLength: 512
type: string
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:
session_id: abc-def-ghi
user_id: '123'
nullable: true
type: object
RequestTimeoutResponse:
description: Request Timeout - Operation exceeded time limit
example:
error:
code: 408
message: Operation timed out. Please try again later.
properties:
error:
$ref: '#/components/schemas/RequestTimeoutResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
RequestTimeoutResponseErrorData:
description: Error data for RequestTimeoutResponse
example:
code: 408
message: Operation timed out. Please try again later.
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
ResponseHealingPlugin:
example:
enabled: true
id: response-healing
properties:
enabled:
description: Set to false to disable the response-healing plugin for this request. Defaults to true.
type: boolean
id:
enum:
- response-healing
type: string
required:
- id
type: object
ResponseIncludesEnum:
enum:
- file_search_call.results
- message.input_image.image_url
- computer_call_output.output.image_url
- reasoning.encrypted_content
- code_interpreter_call.outputs
example: file_search_call.results
type: string
ResponseOutputText:
example:
annotations:
- end_index: 42
start_index: 0
title: Paris - Wikipedia
type: url_citation
url: https://en.wikipedia.org/wiki/Paris
text: The capital of France is Paris.
type: output_text
properties:
annotations:
items:
$ref: '#/components/schemas/OpenAIResponsesAnnotation'
type: array
logprobs:
items:
properties:
bytes:
items:
type: integer
type: array
logprob:
format: double
type: number
token:
type: string
top_logprobs:
items:
properties:
bytes:
items:
type: integer
type: array
logprob:
format: double
type: number
token:
type: string
required:
- token
- bytes
- logprob
type: object
type: array
required:
- token
- bytes
- logprob
- top_logprobs
type: object
type: array
text:
type: string
type:
enum:
- output_text
type: string
required:
- type
- text
type: object
ResponsesErrorField:
description: Error information returned from the API
example:
code: rate_limit_exceeded
message: Rate limit exceeded. Please try again later.
nullable: true
properties:
code:
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
type: string
message:
type: string
required:
- code
- message
type: object
ResponsesRequest:
description: Request schema for Responses endpoint
example:
input:
- content: Hello, how are you?
role: user
type: message
model: anthropic/claude-4.5-sonnet-20250929
temperature: 0.7
tools:
- description: Get the current weather in a given location
name: get_current_weather
parameters:
properties:
location:
type: string
type: object
type: function
top_p: 0.9
properties:
background:
nullable: true
type: boolean
frequency_penalty:
format: double
nullable: true
type: number
image_config:
$ref: '#/components/schemas/ImageConfig'
include:
items:
$ref: '#/components/schemas/ResponseIncludesEnum'
nullable: true
type: array
input:
$ref: '#/components/schemas/Inputs'
instructions:
nullable: true
type: string
max_output_tokens:
nullable: true
type: integer
max_tool_calls:
nullable: true
type: integer
metadata:
$ref: '#/components/schemas/RequestMetadata'
modalities:
description: Output modalities for the response. Supported values are "text" and "image".
example:
- text
- image
items:
$ref: '#/components/schemas/OutputModalityEnum'
type: array
model:
type: string
models:
items:
type: string
type: array
parallel_tool_calls:
nullable: true
type: boolean
plugins:
description: Plugins you want to enable for this request, including their settings.
items:
discriminator:
mapping:
auto-router: '#/components/schemas/AutoRouterPlugin'
context-compression: '#/components/schemas/ContextCompressionPlugin'
file-parser: '#/components/schemas/FileParserPlugin'
moderation: '#/components/schemas/ModerationPlugin'
pareto-router: '#/components/schemas/ParetoRouterPlugin'
response-healing: '#/components/schemas/ResponseHealingPlugin'
web: '#/components/schemas/WebSearchPlugin'
propertyName: id
oneOf:
- $ref: '#/components/schemas/AutoRouterPlugin'
- $ref: '#/components/schemas/ModerationPlugin'
- $ref: '#/components/schemas/WebSearchPlugin'
- $ref: '#/components/schemas/FileParserPlugin'
- $ref: '#/components/schemas/ResponseHealingPlugin'
- $ref: '#/components/schemas/ContextCompressionPlugin'
- $ref: '#/components/schemas/ParetoRouterPlugin'
type: array
presence_penalty:
format: double
nullable: true
type: number
previous_response_id:
nullable: true
type: string
prompt:
$ref: '#/components/schemas/StoredPromptTemplate'
prompt_cache_key:
nullable: true
type: string
provider:
$ref: '#/components/schemas/ProviderPreferences'
reasoning:
$ref: '#/components/schemas/ReasoningConfig'
route:
$ref: '#/components/schemas/DeprecatedRoute'
safety_identifier:
nullable: true
type: string
service_tier:
default: auto
enum:
- auto
- default
- flex
- priority
- scale
- null
nullable: true
type: string
session_id:
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 256 characters.
maxLength: 256
type: string
store:
const: false
default: false
type: boolean
stream:
default: false
type: boolean
temperature:
format: double
nullable: true
type: number
text:
$ref: '#/components/schemas/TextExtendedConfig'
tool_choice:
$ref: '#/components/schemas/OpenAIResponsesToolChoice'
tools:
items:
anyOf:
- allOf:
- $ref: '#/components/schemas/FunctionTool'
- properties: {}
type: object
description: Function tool definition
example:
description: Get the current weather in a location
name: get_weather
parameters:
properties:
location:
description: The city and state
type: string
unit:
enum:
- celsius
- fahrenheit
type: string
required:
- location
type: object
type: function
- $ref: '#/components/schemas/Preview_WebSearchServerTool'
- $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool'
- $ref: '#/components/schemas/Legacy_WebSearchServerTool'
- $ref: '#/components/schemas/WebSearchServerTool'
- $ref: '#/components/schemas/FileSearchServerTool'
- $ref: '#/components/schemas/ComputerUseServerTool'
- $ref: '#/components/schemas/CodeInterpreterServerTool'
- $ref: '#/components/schemas/McpServerTool'
- $ref: '#/components/schemas/ImageGenerationServerTool'
- $ref: '#/components/schemas/CodexLocalShellTool'
- $ref: '#/components/schemas/ShellServerTool'
- $ref: '#/components/schemas/ApplyPatchServerTool'
- $ref: '#/components/schemas/CustomTool'
- $ref: '#/components/schemas/DatetimeServerTool'
- $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
- $ref: '#/components/schemas/ChatSearchModelsServerTool'
- $ref: '#/components/schemas/WebFetchServerTool'
- $ref: '#/components/schemas/WebSearchServerTool_OpenRouter'
type: array
top_k:
type: integer
top_logprobs:
nullable: true
type: integer
top_p:
format: double
nullable: true
type: number
trace:
$ref: '#/components/schemas/TraceConfig'
truncation:
$ref: '#/components/schemas/OpenAIResponsesTruncation'
user:
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 256 characters.
maxLength: 256
type: string
type: object
SearchContextSizeEnum:
description: Size of the search context for web search tools
enum:
- low
- medium
- high
example: medium
type: string
SearchModelsServerToolConfig:
description: Configuration for the openrouter:experimental__search_models server tool
example:
max_results: 5
properties:
max_results:
description: Maximum number of models to return. Defaults to 5, max 20.
example: 5
type: integer
type: object
SearchQualityLevel:
description: >-
How much context to retrieve per result. Defaults to medium (15000 chars). Applies to Exa and Parallel engines;
ignored with native provider search and Firecrawl.
enum:
- low
- medium
- high
example: medium
type: string
ServiceTier:
enum:
- auto
- default
- flex
- priority
- scale
- null
example: default
nullable: true
type: string
ServiceUnavailableResponse:
description: Service Unavailable - Service temporarily unavailable
example:
error:
code: 503
message: Service temporarily unavailable
properties:
error:
$ref: '#/components/schemas/ServiceUnavailableResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
ServiceUnavailableResponseErrorData:
description: Error data for ServiceUnavailableResponse
example:
code: 503
message: Service temporarily unavailable
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
ShellServerTool:
description: Shell tool configuration
example:
type: shell
properties:
type:
enum:
- shell
type: string
required:
- type
type: object
SpeechRequest:
description: Text-to-speech request input
example:
input: Hello world
model: elevenlabs/eleven-turbo-v2
response_format: pcm
speed: 1
voice: alloy
properties:
input:
description: Text to synthesize
example: Hello world
type: string
model:
description: TTS model identifier
example: elevenlabs/eleven-turbo-v2
type: string
provider:
description: Provider-specific passthrough configuration
properties:
options:
$ref: '#/components/schemas/ProviderOptions'
type: object
response_format:
default: pcm
description: Audio output format
enum:
- mp3
- pcm
example: pcm
type: string
speed:
description: >-
Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other
providers.
example: 1
format: double
type: number
voice:
description: Voice identifier (provider-specific).
example: alloy
type: string
required:
- model
- input
- voice
type: object
StoredPromptTemplate:
example:
id: prompt-abc123
variables:
name: John
nullable: true
properties:
id:
type: string
variables:
additionalProperties:
anyOf:
- type: string
- $ref: '#/components/schemas/InputText'
- $ref: '#/components/schemas/InputImage'
- $ref: '#/components/schemas/InputFile'
nullable: true
type: object
required:
- id
type: object
StreamEvents:
description: Union of all possible event types emitted during response streaming
discriminator:
mapping:
error: '#/components/schemas/ErrorEvent'
response.completed: '#/components/schemas/StreamEventsResponseCompleted'
response.content_part.added: '#/components/schemas/ContentPartAddedEvent'
response.content_part.done: '#/components/schemas/ContentPartDoneEvent'
response.created: '#/components/schemas/OpenResponsesCreatedEvent'
response.failed: '#/components/schemas/StreamEventsResponseFailed'
response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent'
response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent'
response.image_generation_call.completed: '#/components/schemas/ImageGenCallCompletedEvent'
response.image_generation_call.generating: '#/components/schemas/ImageGenCallGeneratingEvent'
response.image_generation_call.in_progress: '#/components/schemas/ImageGenCallInProgressEvent'
response.image_generation_call.partial_image: '#/components/schemas/ImageGenCallPartialImageEvent'
response.in_progress: '#/components/schemas/OpenResponsesInProgressEvent'
response.incomplete: '#/components/schemas/StreamEventsResponseIncomplete'
response.output_item.added: '#/components/schemas/StreamEventsResponseOutputItemAdded'
response.output_item.done: '#/components/schemas/StreamEventsResponseOutputItemDone'
response.output_text.annotation.added: '#/components/schemas/AnnotationAddedEvent'
response.output_text.delta: '#/components/schemas/TextDeltaEvent'
response.output_text.done: '#/components/schemas/TextDoneEvent'
response.reasoning_summary_part.added: '#/components/schemas/ReasoningSummaryPartAddedEvent'
response.reasoning_summary_part.done: '#/components/schemas/ReasoningSummaryPartDoneEvent'
response.reasoning_summary_text.delta: '#/components/schemas/ReasoningSummaryTextDeltaEvent'
response.reasoning_summary_text.done: '#/components/schemas/ReasoningSummaryTextDoneEvent'
response.reasoning_text.delta: '#/components/schemas/ReasoningDeltaEvent'
response.reasoning_text.done: '#/components/schemas/ReasoningDoneEvent'
response.refusal.delta: '#/components/schemas/RefusalDeltaEvent'
response.refusal.done: '#/components/schemas/RefusalDoneEvent'
response.web_search_call.completed: '#/components/schemas/WebSearchCallCompletedEvent'
response.web_search_call.in_progress: '#/components/schemas/WebSearchCallInProgressEvent'
response.web_search_call.searching: '#/components/schemas/WebSearchCallSearchingEvent'
propertyName: type
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: in_progress
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 0
type: response.created
oneOf:
- $ref: '#/components/schemas/OpenResponsesCreatedEvent'
- $ref: '#/components/schemas/OpenResponsesInProgressEvent'
- $ref: '#/components/schemas/StreamEventsResponseCompleted'
- $ref: '#/components/schemas/StreamEventsResponseIncomplete'
- $ref: '#/components/schemas/StreamEventsResponseFailed'
- $ref: '#/components/schemas/ErrorEvent'
- $ref: '#/components/schemas/StreamEventsResponseOutputItemAdded'
- $ref: '#/components/schemas/StreamEventsResponseOutputItemDone'
- $ref: '#/components/schemas/ContentPartAddedEvent'
- $ref: '#/components/schemas/ContentPartDoneEvent'
- $ref: '#/components/schemas/TextDeltaEvent'
- $ref: '#/components/schemas/TextDoneEvent'
- $ref: '#/components/schemas/RefusalDeltaEvent'
- $ref: '#/components/schemas/RefusalDoneEvent'
- $ref: '#/components/schemas/AnnotationAddedEvent'
- $ref: '#/components/schemas/FunctionCallArgsDeltaEvent'
- $ref: '#/components/schemas/FunctionCallArgsDoneEvent'
- $ref: '#/components/schemas/ReasoningDeltaEvent'
- $ref: '#/components/schemas/ReasoningDoneEvent'
- $ref: '#/components/schemas/ReasoningSummaryPartAddedEvent'
- $ref: '#/components/schemas/ReasoningSummaryPartDoneEvent'
- $ref: '#/components/schemas/ReasoningSummaryTextDeltaEvent'
- $ref: '#/components/schemas/ReasoningSummaryTextDoneEvent'
- $ref: '#/components/schemas/ImageGenCallInProgressEvent'
- $ref: '#/components/schemas/ImageGenCallGeneratingEvent'
- $ref: '#/components/schemas/ImageGenCallPartialImageEvent'
- $ref: '#/components/schemas/ImageGenCallCompletedEvent'
- $ref: '#/components/schemas/WebSearchCallInProgressEvent'
- $ref: '#/components/schemas/WebSearchCallSearchingEvent'
- $ref: '#/components/schemas/WebSearchCallCompletedEvent'
StreamEventsResponseCompleted:
allOf:
- $ref: '#/components/schemas/CompletedEvent'
- properties:
response:
$ref: '#/components/schemas/OpenResponsesResult'
type: object
description: Event emitted when a response has completed successfully
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: completed
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 10
type: response.completed
StreamEventsResponseFailed:
allOf:
- $ref: '#/components/schemas/FailedEvent'
- properties:
response:
$ref: '#/components/schemas/OpenResponsesResult'
type: object
description: Event emitted when a response has failed
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: failed
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 3
type: response.failed
StreamEventsResponseIncomplete:
allOf:
- $ref: '#/components/schemas/IncompleteEvent'
- properties:
response:
$ref: '#/components/schemas/OpenResponsesResult'
type: object
description: Event emitted when a response is incomplete
example:
response:
created_at: 1704067200
error: null
id: resp-abc123
incomplete_details: null
instructions: null
max_output_tokens: null
metadata: null
model: gpt-4
object: response
output: []
parallel_tool_calls: true
status: incomplete
temperature: null
tool_choice: auto
tools: []
top_p: null
sequence_number: 5
type: response.incomplete
StreamEventsResponseOutputItemAdded:
allOf:
- $ref: '#/components/schemas/OutputItemAddedEvent'
- properties:
item:
$ref: '#/components/schemas/OutputItems'
type: object
description: Event emitted when a new output item is added to the response
example:
item:
content: []
id: item-1
role: assistant
status: in_progress
type: message
output_index: 0
sequence_number: 2
type: response.output_item.added
StreamEventsResponseOutputItemDone:
allOf:
- $ref: '#/components/schemas/OutputItemDoneEvent'
- properties:
item:
$ref: '#/components/schemas/OutputItems'
type: object
description: Event emitted when an output item is complete
example:
item:
content:
- annotations: []
text: Hello! How can I help you?
type: output_text
id: item-1
role: assistant
status: completed
type: message
output_index: 0
sequence_number: 8
type: response.output_item.done
StreamLogprob:
allOf:
- $ref: '#/components/schemas/OpenResponsesLogProbs'
- properties:
top_logprobs:
items:
$ref: '#/components/schemas/StreamLogprobTopLogprob'
type: array
type: object
description: Log probability information for a token
example:
bytes:
- 72
- 101
- 108
- 108
- 111
logprob: -0.5
token: Hello
top_logprobs: []
StreamLogprobTopLogprob:
allOf:
- $ref: '#/components/schemas/OpenResponsesTopLogprobs'
- properties: {}
type: object
description: Alternative token with its log probability
example:
bytes:
- 72
- 101
- 108
- 108
- 111
logprob: -0.5
token: Hello
STTInputAudio:
description: Base64-encoded audio to transcribe
example:
data: UklGRiQA...
format: wav
properties:
data:
description: Base64-encoded audio data (raw bytes, not a data URI)
type: string
format:
description: Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider.
type: string
required:
- data
- format
type: object
STTRequest:
description: Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio.
example:
input_audio:
data: UklGRiQA...
format: wav
language: en
model: openai/whisper-large-v3
properties:
input_audio:
$ref: '#/components/schemas/STTInputAudio'
language:
description: ISO-639-1 language code (e.g., "en", "ja"). Auto-detected if omitted.
example: en
type: string
model:
description: STT model identifier
example: openai/whisper-large-v3
type: string
provider:
description: Provider-specific passthrough configuration
properties:
options:
$ref: '#/components/schemas/ProviderOptions'
type: object
temperature:
description: Sampling temperature for transcription
example: 0
format: double
type: number
required:
- model
- input_audio
type: object
STTResponse:
description: STT response containing transcribed text and optional usage statistics
example:
text: Hello, this is a test of OpenAI speech-to-text transcription.
usage:
cost: 0.000508
input_tokens: 83
output_tokens: 30
seconds: 9.2
total_tokens: 113
properties:
text:
description: The transcribed text
example: >-
Hello, this is a test of OpenAI speech-to-text transcription. The weather is sunny today and the temperature
is around 72 degrees.
type: string
usage:
$ref: '#/components/schemas/STTUsage'
required:
- text
type: object
STTUsage:
description: Aggregated usage statistics for the request
example:
cost: 0.000508
input_tokens: 83
output_tokens: 30
seconds: 9.2
total_tokens: 113
properties:
cost:
description: Total cost of the request in USD
example: 0.000508
format: double
type: number
input_tokens:
description: Number of input tokens billed for this request
example: 83
type: integer
output_tokens:
description: Number of output tokens generated
example: 30
type: integer
seconds:
description: Duration of the input audio in seconds
example: 9.2
format: double
type: number
total_tokens:
description: Total number of tokens used (input + output)
example: 113
type: integer
type: object
TextConfig:
description: Text output configuration including format and verbosity
example:
format:
type: text
verbosity: medium
properties:
format:
$ref: '#/components/schemas/Formats'
verbosity:
enum:
- high
- low
- medium
- null
nullable: true
type: string
type: object
TextDeltaEvent:
allOf:
- $ref: '#/components/schemas/BaseTextDeltaEvent'
- properties:
logprobs:
items:
$ref: '#/components/schemas/StreamLogprob'
type: array
type: object
description: Event emitted when a text delta is streamed
example:
content_index: 0
delta: Hello
item_id: item-1
logprobs: []
output_index: 0
sequence_number: 4
type: response.output_text.delta
TextDoneEvent:
allOf:
- $ref: '#/components/schemas/BaseTextDoneEvent'
- properties:
logprobs:
items:
$ref: '#/components/schemas/StreamLogprob'
type: array
type: object
description: Event emitted when text streaming is complete
example:
content_index: 0
item_id: item-1
logprobs: []
output_index: 0
sequence_number: 6
text: Hello! How can I help you?
type: response.output_text.done
TextExtendedConfig:
allOf:
- $ref: '#/components/schemas/TextConfig'
- properties:
verbosity:
enum:
- low
- medium
- high
- xhigh
- max
- null
nullable: true
type: string
type: object
description: Text output configuration including format and verbosity
example:
format:
type: text
ToolCallStatus:
enum:
- in_progress
- completed
- incomplete
example: completed
type: string
ToolChoiceAllowed:
description: Constrains the model to a pre-defined set of allowed tools
example:
mode: auto
tools:
- name: get_weather
type: function
type: allowed_tools
properties:
mode:
anyOf:
- enum:
- auto
type: string
- enum:
- required
type: string
tools:
items:
additionalProperties:
nullable: true
type: object
type: array
type:
enum:
- allowed_tools
type: string
required:
- type
- mode
- tools
type: object
TooManyRequestsResponse:
description: Too Many Requests - Rate limit exceeded
example:
error:
code: 429
message: Rate limit exceeded
properties:
error:
$ref: '#/components/schemas/TooManyRequestsResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
TooManyRequestsResponseErrorData:
description: Error data for TooManyRequestsResponse
example:
code: 429
message: Rate limit exceeded
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
TopProviderInfo:
description: Information about the top provider for this model
example:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
properties:
context_length:
description: Context length from the top provider
example: 8192
nullable: true
type: integer
is_moderated:
description: Whether the top provider moderates content
example: true
type: boolean
max_completion_tokens:
description: Maximum completion tokens from the top provider
example: 4096
nullable: true
type: integer
required:
- is_moderated
type: object
TraceConfig:
additionalProperties:
nullable: true
description: >-
Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name,
parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured
broadcast destinations.
example:
trace_id: trace-abc123
trace_name: my-app-trace
properties:
generation_name:
type: string
parent_span_id:
type: string
span_name:
type: string
trace_id:
type: string
trace_name:
type: string
type: object
Truncation:
enum:
- auto
- disabled
- null
example: auto
nullable: true
type: string
UnauthorizedResponse:
description: Unauthorized - Authentication required or invalid credentials
example:
error:
code: 401
message: Missing Authentication header
properties:
error:
$ref: '#/components/schemas/UnauthorizedResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
UnauthorizedResponseErrorData:
description: Error data for UnauthorizedResponse
example:
code: 401
message: Missing Authentication header
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
UnprocessableEntityResponse:
description: Unprocessable Entity - Semantic validation failure
example:
error:
code: 422
message: Invalid argument
properties:
error:
$ref: '#/components/schemas/UnprocessableEntityResponseErrorData'
user_id:
nullable: true
type: string
required:
- error
type: object
UnprocessableEntityResponseErrorData:
description: Error data for UnprocessableEntityResponse
example:
code: 422
message: Invalid argument
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties:
nullable: true
nullable: true
type: object
required:
- code
- message
type: object
UpdateGuardrailRequest:
example:
description: Updated description
limit_usd: 75
name: Updated Guardrail Name
reset_interval: weekly
properties:
allowed_models:
description: Array of model identifiers (slug or canonical_slug accepted)
example:
- openai/gpt-5.2
items:
type: string
minItems: 1
nullable: true
type: array
allowed_providers:
description: New list of allowed provider IDs
example:
- openai
- anthropic
- deepseek
items:
type: string
minItems: 1
nullable: true
type: array
description:
description: New description for the guardrail
example: Updated description
maxLength: 1000
nullable: true
type: string
enforce_zdr:
description: Whether to enforce zero data retention
example: true
nullable: true
type: boolean
ignored_models:
description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted)
example:
- openai/gpt-4o-mini
items:
type: string
minItems: 1
nullable: true
type: array
ignored_providers:
description: List of provider IDs to exclude from routing
example:
- azure
items:
type: string
minItems: 1
nullable: true
type: array
limit_usd:
description: New spending limit in USD
example: 75
format: double
nullable: true
type: number
name:
description: New name for the guardrail
example: Updated Guardrail Name
maxLength: 200
minLength: 1
type: string
reset_interval:
$ref: '#/components/schemas/GuardrailInterval'
type: object
UpdateGuardrailResponse:
example:
data:
allowed_models: null
allowed_providers:
- openai
created_at: '2025-08-24T10:30:00Z'
description: Updated description
enforce_zdr: true
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 75
name: Updated Guardrail Name
reset_interval: weekly
updated_at: '2025-08-24T16:00:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
allOf:
- $ref: '#/components/schemas/Guardrail'
- description: The updated guardrail
required:
- data
type: object
UpdateWorkspaceRequest:
example:
name: Updated Workspace
slug: updated-workspace
properties:
default_image_model:
description: Default image model for this workspace
example: openai/dall-e-3
nullable: true
type: string
default_provider_sort:
description: Default provider sort preference (price, throughput, latency, exacto)
example: price
nullable: true
type: string
default_text_model:
description: Default text model for this workspace
example: openai/gpt-4o
nullable: true
type: string
description:
description: New description for the workspace
example: Updated description
maxLength: 500
nullable: true
type: string
io_logging_api_key_ids:
description: Optional array of API key IDs to filter I/O logging
example: null
items:
type: integer
nullable: true
type: array
io_logging_sampling_rate:
description: Sampling rate for I/O logging (0.0001-1)
example: 1
format: double
type: number
is_data_discount_logging_enabled:
description: Whether data discount logging is enabled
example: true
type: boolean
is_observability_broadcast_enabled:
description: Whether broadcast is enabled
example: false
type: boolean
is_observability_io_logging_enabled:
description: Whether private logging is enabled
example: false
type: boolean
name:
description: New name for the workspace
example: Updated Workspace
maxLength: 100
minLength: 1
type: string
slug:
description: New URL-friendly slug
example: updated-workspace
maxLength: 50
minLength: 1
pattern: ^[a-z0-9-]+$
type: string
type: object
UpdateWorkspaceResponse:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Updated Workspace
slug: updated-workspace
updated_at: '2025-08-25T10:00:00Z'
properties:
data:
allOf:
- $ref: '#/components/schemas/Workspace'
- description: The updated workspace
required:
- data
type: object
URLCitation:
example:
end_index: 42
start_index: 0
title: OpenRouter Documentation
type: url_citation
url: https://openrouter.ai/docs
properties:
end_index:
type: integer
start_index:
type: integer
title:
type: string
type:
enum:
- url_citation
type: string
url:
type: string
required:
- type
- url
- title
- start_index
- end_index
type: object
Usage:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesUsage'
- nullable: true
properties:
cost:
description: Cost of the completion
format: double
nullable: true
type: number
cost_details:
properties:
upstream_inference_cost:
format: double
nullable: true
type: number
upstream_inference_input_cost:
format: double
type: number
upstream_inference_output_cost:
format: double
type: number
required:
- upstream_inference_input_cost
- upstream_inference_output_cost
type: object
is_byok:
description: Whether a request was made using a Bring Your Own Key configuration
type: boolean
type: object
description: Token usage information for the response
example:
cost: 0.0012
cost_details:
upstream_inference_cost: null
upstream_inference_input_cost: 0.0008
upstream_inference_output_cost: 0.0004
input_tokens: 10
input_tokens_details:
cached_tokens: 0
output_tokens: 25
output_tokens_details:
reasoning_tokens: 0
total_tokens: 35
VideoGenerationRequest:
example:
aspect_ratio: '16:9'
duration: 8
model: google/veo-3.1
prompt: A serene mountain landscape at sunset
resolution: 720p
properties:
aspect_ratio:
description: Aspect ratio of the generated video
enum:
- '16:9'
- '9:16'
- '1:1'
- '4:3'
- '3:4'
- '21:9'
- '9:21'
example: '16:9'
type: string
callback_url:
description: >-
URL to receive a webhook notification when the video generation job completes. Overrides the workspace-level
default callback URL if set. Must be HTTPS.
example: https://example.com/webhook
format: uri
type: string
duration:
description: Duration of the generated video in seconds
example: 8
minimum: 1
type: integer
frame_images:
description: >-
Images to use as the first and/or last frame of the generated video. Each image must specify a frame_type of
first_frame or last_frame.
items:
$ref: '#/components/schemas/FrameImage'
type: array
generate_audio:
description: >-
Whether to generate audio alongside the video. Defaults to the endpoint's generate_audio capability flag,
false if not set.
example: true
type: boolean
input_references:
description: Reference images to guide video generation
items:
$ref: '#/components/schemas/ContentPartImage'
type: array
model:
type: string
prompt:
type: string
provider:
description: Provider-specific passthrough configuration
properties:
options:
allOf:
- $ref: '#/components/schemas/ProviderOptions'
- example:
google-vertex:
output_config:
effort: low
type: object
resolution:
description: Resolution of the generated video
enum:
- 480p
- 720p
- 1080p
- 1K
- 2K
- 4K
example: 720p
type: string
seed:
description: >-
If specified, the generation will sample deterministically, such that repeated requests with the same seed
and parameters should return the same result. Determinism is not guaranteed for all providers.
type: integer
size:
description: >-
Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable
with resolution + aspect_ratio.
example: 1280x720
type: string
required:
- prompt
- model
type: object
VideoGenerationResponse:
example:
generation_id: gen-xyz789
id: job-abc123
polling_url: /api/v1/videos/job-abc123
status: pending
properties:
error:
type: string
generation_id:
description: The generation ID associated with this video generation job. Available once the job has been processed.
type: string
id:
type: string
polling_url:
type: string
status:
enum:
- pending
- in_progress
- completed
- failed
- cancelled
- expired
type: string
unsigned_urls:
items:
type: string
type: array
usage:
$ref: '#/components/schemas/VideoGenerationUsage'
required:
- id
- polling_url
- status
type: object
VideoGenerationUsage:
description: Usage and cost information for the video generation. Available once the job has completed.
example:
cost: 0.5
is_byok: false
properties:
cost:
description: The cost of the video generation in USD.
format: double
nullable: true
type: number
is_byok:
description: Whether the request was made using a Bring Your Own Key configuration.
type: boolean
type: object
VideoModel:
example:
allowed_passthrough_parameters: []
canonical_slug: google/veo-3.1
created: 1700000000
description: Google video generation model
generate_audio: true
id: google/veo-3.1
name: Veo 3.1
pricing_skus:
generate: '0.50'
seed: null
supported_aspect_ratios:
- '16:9'
supported_durations:
- 5
- 8
supported_frame_images:
- first_frame
- last_frame
supported_resolutions:
- 720p
supported_sizes: null
properties:
allowed_passthrough_parameters:
description: List of parameters that are allowed to be passed through to the provider
items:
type: string
type: array
canonical_slug:
description: Canonical slug for the model
example: openai/gpt-4
type: string
created:
description: Unix timestamp of when the model was created
example: 1692901234
type: integer
description:
description: Description of the model
example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
type: string
generate_audio:
description: Whether the model supports generating audio alongside video
nullable: true
type: boolean
hugging_face_id:
description: Hugging Face model identifier, if applicable
example: microsoft/DialoGPT-medium
nullable: true
type: string
id:
description: Unique identifier for the model
example: openai/gpt-4
type: string
name:
description: Display name of the model
example: GPT-4
type: string
pricing_skus:
additionalProperties:
type: string
description: Pricing SKUs with provider prefix stripped, values as strings
nullable: true
type: object
seed:
description: Whether the model supports deterministic generation via seed parameter
nullable: true
type: boolean
supported_aspect_ratios:
description: Supported output aspect ratios
items:
enum:
- '16:9'
- '9:16'
- '1:1'
- '4:3'
- '3:4'
- '21:9'
- '9:21'
type: string
nullable: true
type: array
supported_durations:
description: Supported video durations in seconds
items:
type: integer
nullable: true
type: array
supported_frame_images:
description: Supported frame image types (e.g. first_frame, last_frame)
items:
enum:
- first_frame
- last_frame
type: string
nullable: true
type: array
supported_resolutions:
description: Supported output resolutions
items:
enum:
- 480p
- 720p
- 1080p
- 1K
- 2K
- 4K
type: string
nullable: true
type: array
supported_sizes:
description: Supported output sizes (width x height)
items:
enum:
- 480x480
- 480x640
- 480x854
- 480x1120
- 640x480
- 720x720
- 720x960
- 720x1280
- 720x1680
- 854x480
- 960x720
- 1080x1080
- 1080x1440
- 1080x1920
- 1080x2520
- 1120x480
- 1280x720
- 1440x1080
- 1680x720
- 1920x1080
- 2160x2160
- 2160x2880
- 2160x3840
- 2160x5040
- 2520x1080
- 2880x2160
- 3840x2160
- 5040x2160
type: string
nullable: true
type: array
required:
- id
- canonical_slug
- name
- created
- supported_resolutions
- supported_aspect_ratios
- supported_sizes
- supported_durations
- supported_frame_images
- generate_audio
- seed
- allowed_passthrough_parameters
type: object
VideoModelsListResponse:
example:
data:
- allowed_passthrough_parameters: []
canonical_slug: google/veo-3.1
created: 1700000000
description: Google video generation model
generate_audio: true
id: google/veo-3.1
name: Veo 3.1
pricing_skus:
generate: '0.50'
seed: null
supported_aspect_ratios:
- '16:9'
supported_durations:
- 5
- 8
supported_frame_images:
- first_frame
- last_frame
supported_resolutions:
- 720p
supported_sizes: null
properties:
data:
items:
$ref: '#/components/schemas/VideoModel'
type: array
required:
- data
type: object
WebFetchEngineEnum:
description: >-
Which fetch engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native"
forces the provider's built-in fetch. "exa" uses Exa Contents API (supports BYOK). "openrouter" uses direct HTTP
fetch. "firecrawl" uses Firecrawl scrape (requires BYOK).
enum:
- auto
- native
- openrouter
- firecrawl
- exa
example: auto
type: string
WebFetchServerTool:
description: 'OpenRouter built-in server tool: fetches full content from a URL (web page or PDF)'
example:
parameters:
max_uses: 10
type: openrouter:web_fetch
properties:
parameters:
$ref: '#/components/schemas/WebFetchServerToolConfig'
type:
enum:
- openrouter:web_fetch
type: string
required:
- type
type: object
WebFetchServerToolConfig:
description: Configuration for the openrouter:web_fetch server tool
example:
max_content_tokens: 100000
max_uses: 10
properties:
allowed_domains:
description: Only fetch from these domains.
items:
type: string
type: array
blocked_domains:
description: Never fetch from these domains.
items:
type: string
type: array
engine:
$ref: '#/components/schemas/WebFetchEngineEnum'
max_content_tokens:
description: Maximum content length in approximate tokens. Content exceeding this limit is truncated.
example: 100000
type: integer
max_uses:
description: Maximum number of web fetches per request. Once exceeded, the tool returns an error.
example: 10
type: integer
type: object
WebSearchCallCompletedEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesSearchCompleted'
- properties: {}
type: object
description: Web search call completed
example:
item_id: ws-123
output_index: 0
sequence_number: 3
type: response.web_search_call.completed
WebSearchCallInProgressEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesWebSearchCallInProgress'
- properties: {}
type: object
description: Web search call in progress
example:
item_id: ws-123
output_index: 0
sequence_number: 1
type: response.web_search_call.in_progress
WebSearchCallSearchingEvent:
allOf:
- $ref: '#/components/schemas/OpenAIResponsesWebSearchCallSearching'
- properties: {}
type: object
description: Web search call is searching
example:
item_id: ws-123
output_index: 0
sequence_number: 2
type: response.web_search_call.searching
WebSearchConfig:
example:
max_results: 5
search_context_size: medium
properties:
allowed_domains:
description: >-
Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, and most native providers
(Anthropic, OpenAI, xAI). Not supported with Perplexity. Cannot be used with excluded_domains.
items:
type: string
type: array
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
excluded_domains:
description: >-
Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Anthropic, and xAI. Not
supported with OpenAI (silently ignored) or Perplexity. Cannot be used with allowed_domains.
items:
type: string
type: array
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
max_total_results:
description: >-
Maximum total number of search results across all search calls in a single request. Once this limit is
reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic
loops.
example: 20
type: integer
search_context_size:
$ref: '#/components/schemas/SearchQualityLevel'
user_location:
$ref: '#/components/schemas/WebSearchUserLocationServerTool'
type: object
WebSearchDomainFilter:
example:
allowed_domains:
- example.com
excluded_domains:
- spam.com
nullable: true
properties:
allowed_domains:
items:
type: string
nullable: true
type: array
excluded_domains:
items:
type: string
nullable: true
type: array
type: object
WebSearchEngine:
description: The search engine to use for web search.
enum:
- native
- exa
- firecrawl
- parallel
example: exa
type: string
WebSearchEngineEnum:
description: >-
Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native"
forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires
BYOK). "parallel" uses the Parallel search API.
enum:
- auto
- native
- exa
- firecrawl
- parallel
example: auto
type: string
WebSearchPlugin:
example:
enabled: true
id: web
max_results: 5
properties:
enabled:
description: Set to false to disable the web-search plugin for this request. Defaults to true.
type: boolean
engine:
$ref: '#/components/schemas/WebSearchEngine'
exclude_domains:
description: >-
A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path
filtering (e.g. "openai.com/blog").
example:
- example.com
- '*.substack.com'
- openai.com/blog
items:
type: string
type: array
id:
enum:
- web
type: string
include_domains:
description: >-
A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path
filtering (e.g. "openai.com/blog").
example:
- example.com
- '*.substack.com'
- openai.com/blog
items:
type: string
type: array
max_results:
type: integer
max_uses:
description: >-
Maximum number of times the model can invoke web search in a single turn. Passed through to native providers
that support it (e.g. Anthropic).
type: integer
search_prompt:
type: string
user_location:
allOf:
- $ref: '#/components/schemas/WebSearchUserLocation'
- description: >-
Approximate user location for location-biased search results. Passed through to native providers that
support it (e.g. Anthropic).
example:
city: San Francisco
country: US
region: California
timezone: America/Los_Angeles
type: approximate
required:
- type
required:
- id
type: object
WebSearchServerTool:
description: Web search tool configuration (2025-08-26 version)
example:
engine: auto
filters:
allowed_domains:
- example.com
type: web_search_2025_08_26
properties:
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
filters:
$ref: '#/components/schemas/WebSearchDomainFilter'
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
search_context_size:
$ref: '#/components/schemas/SearchContextSizeEnum'
type:
enum:
- web_search_2025_08_26
type: string
user_location:
$ref: '#/components/schemas/WebSearchUserLocation'
required:
- type
type: object
WebSearchServerTool_OpenRouter:
description: 'OpenRouter built-in server tool: searches the web for current information'
example:
parameters:
max_results: 5
type: openrouter:web_search
properties:
parameters:
$ref: '#/components/schemas/WebSearchServerToolConfig'
type:
enum:
- openrouter:web_search
type: string
required:
- type
type: object
WebSearchServerToolConfig:
description: Configuration for the openrouter:web_search server tool
example:
max_results: 5
search_context_size: medium
properties:
allowed_domains:
description: >-
Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, and most native providers
(Anthropic, OpenAI, xAI). Not supported with Perplexity. Cannot be used with excluded_domains.
items:
type: string
type: array
engine:
$ref: '#/components/schemas/WebSearchEngineEnum'
excluded_domains:
description: >-
Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Anthropic, and xAI. Not
supported with OpenAI (silently ignored) or Perplexity. Cannot be used with allowed_domains.
items:
type: string
type: array
max_results:
description: >-
Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and
Parallel engines; ignored with native provider search.
example: 5
type: integer
max_total_results:
description: >-
Maximum total number of search results across all search calls in a single request. Once this limit is
reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic
loops.
example: 20
type: integer
search_context_size:
$ref: '#/components/schemas/SearchQualityLevel'
user_location:
$ref: '#/components/schemas/WebSearchUserLocationServerTool'
type: object
WebSearchSource:
example:
type: url
url: https://example.com/article
properties:
type:
enum:
- url
type: string
url:
type: string
required:
- type
- url
type: object
WebSearchStatus:
enum:
- completed
- searching
- in_progress
- failed
example: completed
type: string
WebSearchUserLocation:
description: User location information for web search
example:
city: San Francisco
country: USA
region: California
timezone: America/Los_Angeles
type: approximate
nullable: true
properties:
city:
nullable: true
type: string
country:
nullable: true
type: string
region:
nullable: true
type: string
timezone:
nullable: true
type: string
type:
enum:
- approximate
type: string
type: object
WebSearchUserLocationServerTool:
description: Approximate user location for location-biased results.
example:
city: San Francisco
country: US
region: California
timezone: America/Los_Angeles
type: approximate
properties:
city:
nullable: true
type: string
country:
nullable: true
type: string
region:
nullable: true
type: string
timezone:
nullable: true
type: string
type:
enum:
- approximate
type: string
type: object
Workspace:
example:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: '2025-08-24T15:45:00Z'
properties:
created_at:
description: ISO 8601 timestamp of when the workspace was created
example: '2025-08-24T10:30:00Z'
type: string
created_by:
description: User ID of the workspace creator
example: user_abc123
nullable: true
type: string
default_image_model:
description: Default image model for this workspace
example: openai/dall-e-3
nullable: true
type: string
default_provider_sort:
description: Default provider sort preference (price, throughput, latency, exacto)
example: price
nullable: true
type: string
default_text_model:
description: Default text model for this workspace
example: openai/gpt-4o
nullable: true
type: string
description:
description: Description of the workspace
example: Production environment workspace
nullable: true
type: string
id:
description: Unique identifier for the workspace
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
io_logging_api_key_ids:
description: Optional array of API key IDs to filter I/O logging. Null means all keys are logged.
example: null
items:
type: integer
nullable: true
type: array
io_logging_sampling_rate:
description: Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged.
example: 1
format: double
type: number
is_data_discount_logging_enabled:
description: Whether data discount logging is enabled for this workspace
example: true
type: boolean
is_observability_broadcast_enabled:
description: Whether broadcast is enabled for this workspace
example: false
type: boolean
is_observability_io_logging_enabled:
description: Whether private logging is enabled for this workspace
example: false
type: boolean
name:
description: Name of the workspace
example: Production
type: string
slug:
description: URL-friendly slug for the workspace
example: production
type: string
updated_at:
description: ISO 8601 timestamp of when the workspace was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
required:
- id
- name
- slug
- description
- default_text_model
- default_image_model
- default_provider_sort
- is_observability_io_logging_enabled
- is_observability_broadcast_enabled
- is_data_discount_logging_enabled
- io_logging_sampling_rate
- io_logging_api_key_ids
- created_at
- updated_at
- created_by
type: object
WorkspaceMember:
example:
created_at: '2025-08-24T10:30:00Z'
id: 660e8400-e29b-41d4-a716-446655440000
role: member
user_id: user_abc123
workspace_id: 550e8400-e29b-41d4-a716-446655440000
properties:
created_at:
description: ISO 8601 timestamp of when the membership was created
example: '2025-08-24T10:30:00Z'
type: string
id:
description: Unique identifier for the workspace membership
example: 660e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
role:
description: Role of the member in the workspace
enum:
- admin
- member
example: member
type: string
user_id:
description: Clerk user ID of the member
example: user_abc123
type: string
workspace_id:
description: ID of the workspace
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
required:
- id
- workspace_id
- user_id
- role
- created_at
type: object
securitySchemes:
apiKey:
description: API key as bearer token in Authorization header
scheme: bearer
type: http
bearer:
description: API key as bearer token in Authorization header
scheme: bearer
type: http
externalDocs:
description: OpenRouter Documentation
url: https://openrouter.ai/docs
info:
contact:
email: support@openrouter.ai
name: OpenRouter Support
url: https://openrouter.ai/docs
description: OpenAI-compatible API with additional OpenRouter features
license:
name: MIT
url: https://opensource.org/licenses/MIT
title: OpenRouter API
version: 1.0.0
openapi: 3.1.0
paths:
/activity:
get:
description: >-
Returns user activity data grouped by endpoint for the last 30 (completed) UTC days. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: getUserActivity
parameters:
- description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
in: query
name: date
required: false
schema:
description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
example: '2025-08-24'
type: string
- description: Filter by API key hash (SHA-256 hex string, as returned by the keys API).
in: query
name: api_key_hash
required: false
schema:
description: Filter by API key hash (SHA-256 hex string, as returned by the keys API).
example: abc123def456...
type: string
- description: Filter by org member user ID. Only applicable for organization accounts.
in: query
name: user_id
required: false
schema:
description: Filter by org member user ID. Only applicable for organization accounts.
example: user_abc123
type: string
responses:
'200':
content:
application/json:
example:
data:
- byok_usage_inference: 0.012
completion_tokens: 125
date: '2025-08-24'
endpoint_id: 550e8400-e29b-41d4-a716-446655440000
model: openai/gpt-4.1
model_permaslug: openai/gpt-4.1-2025-04-14
prompt_tokens: 50
provider_name: OpenAI
reasoning_tokens: 25
requests: 5
usage: 0.015
schema:
$ref: '#/components/schemas/ActivityResponse'
description: Returns user activity data grouped by endpoint
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get user activity grouped by endpoint
tags:
- Analytics
/audio/speech:
post:
description: >-
Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm,
wav).
operationId: createAudioSpeech
requestBody:
content:
application/json:
example:
input: Hello world
model: elevenlabs/eleven-turbo-v2
response_format: pcm
speed: 1
voice: alloy
schema:
$ref: '#/components/schemas/SpeechRequest'
required: true
responses:
'200':
content:
audio/*:
schema:
description: >-
Raw audio bytestream. Content-Type varies by requested format (audio/mpeg for mp3, audio/pcm for pcm —
16-bit little-endian).
example: <binary audio data>
format: binary
type: string
description: Audio bytes stream
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Create speech
tags:
- TTS
x-speakeasy-max-method-params: 1
x-speakeasy-name-override: createSpeech
/audio/transcriptions:
post:
description: Transcribes audio into text. Accepts base64-encoded audio input and returns the transcribed text.
operationId: createAudioTranscriptions
requestBody:
content:
application/json:
example:
input_audio:
data: UklGRiQA...
format: wav
language: en
model: openai/whisper-large-v3
schema:
$ref: '#/components/schemas/STTRequest'
required: true
responses:
'200':
content:
application/json:
example:
text: Hello, this is a test of OpenAI speech-to-text transcription.
usage:
cost: 0.000508
input_tokens: 83
output_tokens: 30
seconds: 9.2
total_tokens: 113
schema:
$ref: '#/components/schemas/STTResponse'
description: Transcription result
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Create transcription
tags:
- STT
x-speakeasy-max-method-params: 1
x-speakeasy-name-override: createTranscription
/auth/keys:
post:
description: Exchange an authorization code from the PKCE flow for a user-controlled API key
operationId: exchangeAuthCodeForAPIKey
requestBody:
content:
application/json:
example:
code: auth_code_abc123def456
code_challenge_method: S256
code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
schema:
example:
code: auth_code_abc123def456
code_challenge_method: S256
code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
properties:
code:
description: The authorization code received from the OAuth redirect
example: auth_code_abc123def456
type: string
code_challenge_method:
description: The method used to generate the code challenge
enum:
- S256
- plain
- null
example: S256
nullable: true
type: string
code_verifier:
description: The code verifier if code_challenge was used in the authorization request
example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
type: string
required:
- code
type: object
required: true
responses:
'200':
content:
application/json:
example:
key: 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
user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
schema:
example:
key: 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
user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
properties:
key:
description: The API key to use for OpenRouter requests
example: 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
type: string
user_id:
description: User ID associated with the API key
example: user_2yOPcMpKoQhcd4bVgSMlELRaIah
nullable: true
type: string
required:
- key
- user_id
type: object
description: Successfully exchanged code for an API key
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Exchange authorization code for API key
tags:
- OAuth
/auth/keys/code:
post:
description: Create an authorization code for the PKCE flow to generate a user-controlled API key
operationId: createAuthKeysCode
requestBody:
content:
application/json:
example:
callback_url: https://myapp.com/auth/callback
code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
code_challenge_method: S256
limit: 100
schema:
example:
callback_url: https://myapp.com/auth/callback
code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
code_challenge_method: S256
limit: 100
properties:
callback_url:
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
format: uri
type: string
code_challenge:
description: PKCE code challenge for enhanced security
example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
type: string
code_challenge_method:
description: The method used to generate the code challenge
enum:
- S256
- plain
example: S256
type: string
expires_at:
description: Optional expiration time for the API key to be created
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
key_label:
description: Optional custom label for the API key. Defaults to the app name if not provided.
example: My Custom Key
maxLength: 100
type: string
limit:
description: Credit limit for the API key to be created
example: 100
format: double
type: number
spawn_agent:
description: Agent identifier for spawn telemetry
example: my-agent
type: string
x-fern-ignore: true
x-speakeasy-ignore: true
spawn_cloud:
description: Cloud identifier for spawn telemetry
example: aws-us-east-1
type: string
x-fern-ignore: true
x-speakeasy-ignore: true
usage_limit_type:
description: Optional credit limit reset interval. When set, the credit limit resets on this interval.
enum:
- daily
- weekly
- monthly
example: monthly
type: string
required:
- callback_url
type: object
required: true
responses:
'200':
content:
application/json:
example:
data:
app_id: 12345
created_at: '2025-08-24T10:30:00Z'
id: auth_code_xyz789
schema:
example:
data:
app_id: 12345
created_at: '2025-08-24T10:30:00Z'
id: auth_code_xyz789
properties:
data:
description: Auth code data
example:
app_id: 12345
created_at: '2025-08-24T10:30:00Z'
id: auth_code_xyz789
properties:
app_id:
description: The application ID associated with this auth code
example: 12345
type: integer
created_at:
description: ISO 8601 timestamp of when the auth code was created
example: '2025-08-24T10:30:00Z'
type: string
id:
description: The authorization code ID to use in the exchange request
example: auth_code_xyz789
type: string
required:
- id
- app_id
- created_at
type: object
required:
- data
type: object
description: Successfully created authorization code
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'409':
content:
application/json:
example:
error:
code: 409
message: Resource conflict. Please try again later.
schema:
$ref: '#/components/schemas/ConflictResponse'
description: Conflict - Resource conflict or concurrent modification
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Create authorization code
tags:
- OAuth
x-speakeasy-name-override: createAuthCode
/chat/completions:
post:
description: >-
Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming
modes.
operationId: sendChatCompletionRequest
requestBody:
content:
application/json:
example:
max_tokens: 150
messages:
- content: You are a helpful assistant.
role: system
- content: What is the capital of France?
role: user
model: openai/gpt-4
temperature: 0.7
schema:
$ref: '#/components/schemas/ChatRequest'
required: true
responses:
'200':
content:
application/json:
example:
choices:
- finish_reason: stop
index: 0
message:
content: The capital of France is Paris.
role: assistant
created: 1677652288
id: chatcmpl-123
model: openai/gpt-4
object: chat.completion
usage:
completion_tokens: 10
prompt_tokens: 25
total_tokens: 35
schema:
$ref: '#/components/schemas/ChatResult'
text/event-stream:
example:
data:
choices:
- delta:
content: Hello
role: assistant
finish_reason: null
index: 0
created: 1677652288
id: chatcmpl-123
model: openai/gpt-4
object: chat.completion.chunk
schema:
properties:
data:
$ref: '#/components/schemas/ChatStreamChunk'
required:
- data
type: object
x-speakeasy-sse-sentinel: '[DONE]'
description: Successful chat completion response
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'408':
content:
application/json:
example:
error:
code: 408
message: Operation timed out. Please try again later.
schema:
$ref: '#/components/schemas/RequestTimeoutResponse'
description: Request Timeout - Operation exceeded time limit
'413':
content:
application/json:
example:
error:
code: 413
message: Request payload too large
schema:
$ref: '#/components/schemas/PayloadTooLargeResponse'
description: Payload Too Large - Request payload exceeds size limits
'422':
content:
application/json:
example:
error:
code: 422
message: Invalid argument
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity - Semantic validation failure
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Create a chat completion
tags:
- Chat
x-speakeasy-group: chat
x-speakeasy-name-override: send
x-speakeasy-stream-request-field: stream
/credits:
get:
description: >-
Get total credits purchased and used for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: getCredits
responses:
'200':
content:
application/json:
example:
data:
total_credits: 100.5
total_usage: 25.75
schema:
description: Total credits purchased and used
example:
data:
total_credits: 100.5
total_usage: 25.75
properties:
data:
example:
total_credits: 100.5
total_usage: 25.75
properties:
total_credits:
description: Total credits purchased
example: 100.5
format: double
type: number
total_usage:
description: Total credits used
example: 25.75
format: double
type: number
required:
- total_credits
- total_usage
type: object
required:
- data
type: object
description: Returns the total credits purchased and used
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get remaining credits
tags:
- Credits
x-speakeasy-name-override: getCredits
/credits/coinbase:
post:
deprecated: true
description: >-
Deprecated. The Coinbase APIs used by this endpoint have been deprecated, so Coinbase Commerce charges have been
removed. Use the web credits purchase flow instead.
operationId: createCoinbaseCharge
responses:
'200':
description: This endpoint is deprecated and will never return a 200 response.
'410':
content:
application/json:
example:
error:
code: 410
message: >-
The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API
has been removed. Use the web credits purchase flow instead.
schema:
$ref: '#/components/schemas/GoneResponse'
description: Gone - Endpoint has been permanently removed or deprecated
security: []
summary: Deprecated Coinbase Commerce charge endpoint
tags:
- Credits
x-fern-ignore: true
x-speakeasy-ignore: true
x-speakeasy-name-override: createCoinbaseCharge
/embeddings:
post:
description: Submits an embedding request to the embeddings router
operationId: createEmbeddings
requestBody:
content:
application/json:
schema:
description: Embeddings request input
example:
dimensions: 1536
input: The quick brown fox jumps over the lazy dog
model: openai/text-embedding-3-small
properties:
dimensions:
description: The number of dimensions for the output embeddings
example: 1536
minimum: 1
type: integer
encoding_format:
description: The format of the output embeddings
enum:
- float
- base64
example: float
type: string
input:
anyOf:
- type: string
- items:
type: string
type: array
- items:
type: number
type: array
- items:
items:
type: number
type: array
type: array
- items:
properties:
content:
items:
oneOf:
- properties:
text:
type: string
type:
enum:
- text
type: string
required:
- type
- text
type: object
- properties:
image_url:
properties:
url:
type: string
required:
- url
type: object
type:
enum:
- image_url
type: string
required:
- type
- image_url
type: object
type: array
required:
- content
type: object
type: array
description: Text, token, or multimodal input(s) to embed
example: The quick brown fox jumps over the lazy dog
input_type:
description: The type of input (e.g. search_query, search_document)
example: search_query
type: string
model:
description: The model to use for embeddings
example: openai/text-embedding-3-small
type: string
provider:
allOf:
- $ref: '#/components/schemas/ProviderPreferences'
- description: Provider routing preferences for the request.
user:
description: A unique identifier for the end-user
example: user-1234
type: string
required:
- input
- model
type: object
required: true
responses:
'200':
content:
application/json:
schema:
description: Embeddings response containing embedding vectors
example:
data:
- embedding:
- 0.0023064255
- -0.009327292
- 0.015797347
index: 0
object: embedding
model: openai/text-embedding-3-small
object: list
usage:
prompt_tokens: 8
total_tokens: 8
properties:
data:
description: List of embedding objects
example:
- embedding:
- 0.0023064255
- -0.009327292
- 0.015797347
index: 0
object: embedding
items:
description: A single embedding object
example:
embedding:
- 0.0023064255
- -0.009327292
- 0.015797347
index: 0
object: embedding
properties:
embedding:
anyOf:
- items:
type: number
type: array
- type: string
description: Embedding vector as an array of floats or a base64 string
example:
- 0.0023064255
- -0.009327292
- 0.015797347
index:
description: Index of the embedding in the input list
example: 0
type: integer
object:
enum:
- embedding
type: string
required:
- object
- embedding
type: object
type: array
id:
description: Unique identifier for the embeddings response
example: embd-1234567890
type: string
model:
description: The model used for embeddings
example: openai/text-embedding-3-small
type: string
object:
enum:
- list
type: string
usage:
description: Token usage statistics
example:
prompt_tokens: 8
total_tokens: 8
properties:
cost:
description: Cost of the request in credits
example: 0.0001
format: double
type: number
prompt_tokens:
description: Number of tokens in the input
example: 8
type: integer
prompt_tokens_details:
description: >-
Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text +
image) and the upstream provider returns modality-level usage data. Only non-zero modality
counts are included.
properties:
audio_tokens:
description: Number of audio tokens in the input
type: integer
image_tokens:
description: Number of image tokens in the input
example: 258
type: integer
text_tokens:
description: Number of text tokens in the input
example: 8
type: integer
video_tokens:
description: Number of video tokens in the input
type: integer
type: object
total_tokens:
description: Total number of tokens used
example: 8
type: integer
required:
- prompt_tokens
- total_tokens
type: object
required:
- object
- data
- model
type: object
text/event-stream:
example: 'data: [DONE]'
schema:
description: Not used for embeddings - embeddings do not support streaming
type: string
x-speakeasy-sse-sentinel: '[DONE]'
description: Embedding response
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Submit an embedding request
tags:
- Embeddings
x-speakeasy-name-override: generate
/embeddings/models:
get:
description: Returns a list of all available embeddings models and their properties
operationId: listEmbeddingsModels
responses:
'200':
content:
application/json:
example:
data:
- architecture:
input_modalities:
- text
instruct_type: null
modality: text->text
output_modalities:
- embeddings
tokenizer: GPT
canonical_slug: openai/text-embedding-3-small
context_length: 8192
created: 1692901234
default_parameters: null
description: OpenAI text embedding model optimized for performance.
expiration_date: null
id: openai/text-embedding-3-small
knowledge_cutoff: null
links:
details: /api/v1/models/openai/text-embedding-3-small/endpoints
name: Text Embedding 3 Small
per_request_limits: null
pricing:
completion: '0'
image: '0'
prompt: '0.00000002'
request: '0'
supported_parameters: []
supported_voices: null
top_provider:
context_length: 8192
is_moderated: false
max_completion_tokens: null
schema:
$ref: '#/components/schemas/ModelsListResponse'
description: Returns a list of embeddings models
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all embeddings models
tags:
- Embeddings
x-speakeasy-name-override: listModels
/endpoints/zdr:
get:
operationId: listEndpointsZdr
responses:
'200':
content:
application/json:
example:
data:
- context_length: 8192
latency_last_30m:
p50: 0.25
p75: 0.35
p90: 0.48
p99: 0.85
max_completion_tokens: 4096
max_prompt_tokens: 8192
model_id: openai/gpt-4
model_name: GPT-4
name: 'OpenAI: GPT-4'
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
provider_name: OpenAI
quantization: fp16
status: default
supported_parameters:
- temperature
- top_p
- max_tokens
supports_implicit_caching: true
tag: openai
throughput_last_30m:
p50: 45.2
p75: 38.5
p90: 28.3
p99: 15.1
uptime_last_1d: 99.8
uptime_last_30m: 99.5
uptime_last_5m: 100
schema:
example:
data:
- context_length: 8192
latency_last_30m:
p50: 0.25
p75: 0.35
p90: 0.48
p99: 0.85
max_completion_tokens: 4096
max_prompt_tokens: 8192
model_id: openai/gpt-4
model_name: GPT-4
name: 'OpenAI: GPT-4'
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
provider_name: OpenAI
quantization: fp16
status: default
supported_parameters:
- temperature
- top_p
- max_tokens
supports_implicit_caching: true
tag: openai
throughput_last_30m:
p50: 45.2
p75: 38.5
p90: 28.3
p99: 15.1
uptime_last_1d: 99.8
uptime_last_30m: 99.5
uptime_last_5m: 100
properties:
data:
items:
$ref: '#/components/schemas/PublicEndpoint'
type: array
required:
- data
type: object
description: Returns a list of endpoints
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Preview the impact of ZDR on the available endpoints
tags:
- Endpoints
x-speakeasy-name-override: listZdrEndpoints
/generation:
get:
operationId: getGeneration
parameters:
- description: The generation ID
in: query
name: id
required: true
schema:
description: The generation ID
example: gen-1234567890
minLength: 1
type: string
responses:
'200':
content:
application/json:
example:
data:
api_type: completions
app_id: 12345
cache_discount: null
cancelled: false
created_at: '2024-07-15T23:33:19.433273+00:00'
external_user: user-123
finish_reason: stop
generation_time: 1200
http_referer: https://openrouter.ai/
id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
is_byok: false
latency: 1250
model: sao10k/l3-stheno-8b
moderation_latency: 50
native_finish_reason: stop
native_tokens_cached: 3
native_tokens_completion: 25
native_tokens_completion_images: 0
native_tokens_prompt: 10
native_tokens_reasoning: 5
num_input_audio_prompt: 0
num_media_completion: 0
num_media_prompt: 1
num_search_results: 5
origin: https://openrouter.ai/
provider_name: Infermatic
provider_responses: null
request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
router: openrouter/auto
session_id: null
streamed: true
tokens_completion: 25
tokens_prompt: 10
total_cost: 0.0015
upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
upstream_inference_cost: 0.0012
usage: 0.0015
user_agent: Mozilla/5.0
schema:
$ref: '#/components/schemas/GenerationResponse'
description: Returns the request metadata for this generation
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Get request & usage metadata for a generation
tags:
- Generations
/generation/content:
get:
operationId: listGenerationContent
parameters:
- description: The generation ID
in: query
name: id
required: true
schema:
description: The generation ID
example: gen-1234567890
minLength: 1
type: string
responses:
'200':
content:
application/json:
example:
data:
input:
messages:
- content: What is the meaning of life?
role: user
output:
completion: The meaning of life is a philosophical question...
reasoning: null
schema:
$ref: '#/components/schemas/GenerationContentResponse'
description: Returns the stored prompt and completion content
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Get stored prompt and completion content for a generation
tags:
- Generations
/guardrails:
get:
description: >-
List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys)
required.
operationId: listGuardrails
parameters:
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
- description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned.
in: query
name: workspace_id
required: false
schema:
description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
format: uuid
type: string
responses:
'200':
content:
application/json:
example:
data:
- allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: Guardrail for production environment
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 100
name: Production Guardrail
reset_interval: monthly
updated_at: '2025-08-24T15:45:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
total_count: 1
schema:
$ref: '#/components/schemas/ListGuardrailsResponse'
description: List of guardrails
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List guardrails
tags:
- Guardrails
x-speakeasy-name-override: list
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
post:
description: >-
Create a new guardrail for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: createGuardrail
requestBody:
content:
application/json:
example:
allowed_models: null
allowed_providers:
- openai
- anthropic
- deepseek
description: A guardrail for limiting API usage
enforce_zdr: false
ignored_models: null
ignored_providers: null
limit_usd: 50
name: My New Guardrail
reset_interval: monthly
schema:
$ref: '#/components/schemas/CreateGuardrailRequest'
required: true
responses:
'201':
content:
application/json:
example:
data:
allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: A guardrail for limiting API usage
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 50
name: My New Guardrail
reset_interval: monthly
updated_at: null
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
$ref: '#/components/schemas/CreateGuardrailResponse'
description: Guardrail created successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Create a guardrail
tags:
- Guardrails
x-speakeasy-name-override: create
/guardrails/{id}:
delete:
description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: deleteGuardrail
parameters:
- description: The unique identifier of the guardrail to delete
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail to delete
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
responses:
'200':
content:
application/json:
example:
deleted: true
schema:
$ref: '#/components/schemas/DeleteGuardrailResponse'
description: Guardrail deleted successfully
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Delete a guardrail
tags:
- Guardrails
x-speakeasy-name-override: delete
get:
description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: getGuardrail
parameters:
- description: The unique identifier of the guardrail to retrieve
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail to retrieve
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
responses:
'200':
content:
application/json:
example:
data:
allowed_models: null
allowed_providers:
- openai
- anthropic
- google
created_at: '2025-08-24T10:30:00Z'
description: Guardrail for production environment
enforce_zdr: false
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 100
name: Production Guardrail
reset_interval: monthly
updated_at: '2025-08-24T15:45:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
$ref: '#/components/schemas/GetGuardrailResponse'
description: Guardrail details
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get a guardrail
tags:
- Guardrails
x-speakeasy-name-override: get
patch:
description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: updateGuardrail
parameters:
- description: The unique identifier of the guardrail to update
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail to update
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
requestBody:
content:
application/json:
example:
description: Updated description
limit_usd: 75
name: Updated Guardrail Name
reset_interval: weekly
schema:
$ref: '#/components/schemas/UpdateGuardrailRequest'
required: true
responses:
'200':
content:
application/json:
example:
data:
allowed_models: null
allowed_providers:
- openai
created_at: '2025-08-24T10:30:00Z'
description: Updated description
enforce_zdr: true
id: 550e8400-e29b-41d4-a716-446655440000
ignored_models: null
ignored_providers: null
limit_usd: 75
name: Updated Guardrail Name
reset_interval: weekly
updated_at: '2025-08-24T16:00:00Z'
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
$ref: '#/components/schemas/UpdateGuardrailResponse'
description: Guardrail updated successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Update a guardrail
tags:
- Guardrails
x-speakeasy-name-override: update
/guardrails/{id}/assignments/keys:
get:
description: >-
List all API key assignments for a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: listGuardrailKeyAssignments
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
key_label: prod-key
key_name: Production Key
total_count: 1
schema:
$ref: '#/components/schemas/ListKeyAssignmentsResponse'
description: List of key assignments
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List key assignments for a guardrail
tags:
- Guardrails
x-speakeasy-name-override: listGuardrailKeyAssignments
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
post:
description: >-
Assign multiple API keys to a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkAssignKeysToGuardrail
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
requestBody:
content:
application/json:
example:
key_hashes:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
schema:
$ref: '#/components/schemas/BulkAssignKeysRequest'
required: true
responses:
'200':
content:
application/json:
example:
assigned_count: 3
schema:
$ref: '#/components/schemas/BulkAssignKeysResponse'
description: Assignment result
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk assign keys to a guardrail
tags:
- Guardrails
x-speakeasy-name-override: bulkAssignKeys
/guardrails/{id}/assignments/keys/remove:
post:
description: >-
Unassign multiple API keys from a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkUnassignKeysFromGuardrail
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
requestBody:
content:
application/json:
example:
key_hashes:
- c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
schema:
$ref: '#/components/schemas/BulkUnassignKeysRequest'
required: true
responses:
'200':
content:
application/json:
example:
unassigned_count: 3
schema:
$ref: '#/components/schemas/BulkUnassignKeysResponse'
description: Unassignment result
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk unassign keys from a guardrail
tags:
- Guardrails
x-speakeasy-name-override: bulkUnassignKeys
/guardrails/{id}/assignments/members:
get:
description: >-
List all organization member assignments for a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: listGuardrailMemberAssignments
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
organization_id: org_xyz789
user_id: user_abc123
total_count: 1
schema:
$ref: '#/components/schemas/ListMemberAssignmentsResponse'
description: List of member assignments
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List member assignments for a guardrail
tags:
- Guardrails
x-speakeasy-name-override: listGuardrailMemberAssignments
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
post:
description: >-
Assign multiple organization members to a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkAssignMembersToGuardrail
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
requestBody:
content:
application/json:
example:
member_user_ids:
- user_abc123
- user_def456
schema:
$ref: '#/components/schemas/BulkAssignMembersRequest'
required: true
responses:
'200':
content:
application/json:
example:
assigned_count: 2
schema:
$ref: '#/components/schemas/BulkAssignMembersResponse'
description: Assignment result
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk assign members to a guardrail
tags:
- Guardrails
x-speakeasy-name-override: bulkAssignMembers
/guardrails/{id}/assignments/members/remove:
post:
description: >-
Unassign multiple organization members from a specific guardrail. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkUnassignMembersFromGuardrail
parameters:
- description: The unique identifier of the guardrail
in: path
name: id
required: true
schema:
description: The unique identifier of the guardrail
example: 550e8400-e29b-41d4-a716-446655440000
format: uuid
type: string
requestBody:
content:
application/json:
example:
member_user_ids:
- user_abc123
- user_def456
schema:
$ref: '#/components/schemas/BulkUnassignMembersRequest'
required: true
responses:
'200':
content:
application/json:
example:
unassigned_count: 2
schema:
$ref: '#/components/schemas/BulkUnassignMembersResponse'
description: Unassignment result
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk unassign members from a guardrail
tags:
- Guardrails
x-speakeasy-name-override: bulkUnassignMembers
/guardrails/assignments/keys:
get:
description: >-
List all API key guardrail assignments for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: listKeyAssignments
parameters:
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
key_label: prod-key
key_name: Production Key
total_count: 1
schema:
$ref: '#/components/schemas/ListKeyAssignmentsResponse'
description: List of key assignments
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all key assignments
tags:
- Guardrails
x-speakeasy-name-override: listKeyAssignments
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
/guardrails/assignments/members:
get:
description: >-
List all organization member guardrail assignments for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: listMemberAssignments
parameters:
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- assigned_by: user_abc123
created_at: '2025-08-24T10:30:00Z'
guardrail_id: 550e8400-e29b-41d4-a716-446655440001
id: 550e8400-e29b-41d4-a716-446655440000
organization_id: org_xyz789
user_id: user_abc123
total_count: 1
schema:
$ref: '#/components/schemas/ListMemberAssignmentsResponse'
description: List of member assignments
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all member assignments
tags:
- Guardrails
x-speakeasy-name-override: listMemberAssignments
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
/key:
get:
description: Get information on the API key associated with the current authentication session
operationId: getCurrentKey
responses:
'200':
content:
application/json:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: false
is_free_tier: false
is_management_key: false
is_provisioning_key: false
label: sk-or-v1-au7...890
limit: 100
limit_remaining: 74.5
limit_reset: monthly
rate_limit:
interval: 1h
note: This field is deprecated and safe to ignore.
requests: 1000
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
schema:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: false
is_free_tier: false
is_management_key: false
is_provisioning_key: false
label: sk-or-v1-au7...890
limit: 100
limit_remaining: 74.5
limit_reset: monthly
rate_limit:
interval: 1h
note: This field is deprecated and safe to ignore.
requests: 1000
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
properties:
data:
description: Current API key information
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: false
is_free_tier: false
is_management_key: false
is_provisioning_key: false
label: sk-or-v1-au7...890
limit: 100
limit_remaining: 74.5
limit_reset: monthly
rate_limit:
interval: 1h
note: This field is deprecated and safe to ignore.
requests: 1000
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
format: double
type: number
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned keys, this is the member who created
the key. For individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
nullable: true
type: string
expires_at:
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
include_byok_in_limit:
description: Whether to include external BYOK usage in the credit limit
example: false
type: boolean
is_free_tier:
description: Whether this is a free tier API key
example: false
type: boolean
is_management_key:
description: Whether this is a management key
example: false
type: boolean
is_provisioning_key:
deprecated: true
description: Whether this is a management key
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
nullable: true
type: number
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
nullable: true
type: number
limit_reset:
description: Type of limit reset for the API key
example: monthly
nullable: true
type: string
rate_limit:
deprecated: true
description: Legacy rate limit information about a key. Will always return -1.
example:
interval: 1h
note: This field is deprecated and safe to ignore.
requests: 1000
properties:
interval:
description: Rate limit interval
example: 1h
type: string
note:
description: Note about the rate limit
example: This field is deprecated and safe to ignore.
type: string
requests:
description: Number of requests allowed per interval
example: 1000
type: integer
required:
- requests
- interval
- note
type: object
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
format: double
type: number
usage_monthly:
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
format: double
type: number
usage_weekly:
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
format: double
type: number
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_management_key
- is_provisioning_key
- limit_remaining
- limit_reset
- include_byok_in_limit
- creator_user_id
- rate_limit
type: object
required:
- data
type: object
description: API key details
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get current API key
tags:
- API Keys
x-speakeasy-name-override: getCurrentKeyMetadata
/keys:
get:
description: >-
List all API keys for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys)
required.
operationId: list
parameters:
- description: Whether to include disabled API keys in the response
in: query
name: include_disabled
required: false
schema:
description: Whether to include disabled API keys in the response
example: 'false'
type: string
x-openrouter-type: boolean
- description: Number of API keys to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of API keys to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Filter API keys by workspace ID. By default, keys in the default workspace are returned.
in: query
name: workspace_id
required: false
schema:
description: Filter API keys by workspace ID. By default, keys in the default workspace are returned.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
format: uuid
type: string
responses:
'200':
content:
application/json:
example:
data:
- byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: Production API Key
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
example:
data:
- byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: Production API Key
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
description: List of API keys
items:
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: sk-or-v1-0e6...1c96
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
format: double
type: number
created_at:
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
type: string
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned keys, this is the member who created
the key. For individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
nullable: true
type: string
disabled:
description: Whether the API key is disabled
example: false
type: boolean
expires_at:
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
hash:
description: Unique hash identifier for the API key
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
include_byok_in_limit:
description: Whether to include external BYOK usage in the credit limit
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
nullable: true
type: number
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
nullable: true
type: number
limit_reset:
description: Type of limit reset for the API key
example: monthly
nullable: true
type: string
name:
description: Name of the API key
example: My Production Key
type: string
updated_at:
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
format: double
type: number
usage_monthly:
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
format: double
type: number
usage_weekly:
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
format: double
type: number
workspace_id:
description: The workspace ID this API key belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
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
- creator_user_id
- workspace_id
type: object
type: array
required:
- data
type: object
description: List of API keys
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List API keys
tags:
- API Keys
x-speakeasy-name-override: list
post:
description: >-
Create a new API key for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: createKeys
requestBody:
content:
application/json:
example:
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: true
limit: 50
limit_reset: monthly
name: My New API Key
schema:
example:
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: true
limit: 50
limit_reset: monthly
name: My New API Key
properties:
creator_user_id:
description: >-
Optional user ID of the key creator. Only meaningful for organization-owned keys where a specific
member is creating the key.
example: user_2dHFtVWx2n56w6HkM0000000000
minLength: 1
nullable: true
type: string
expires_at:
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'
format: date-time
nullable: true
type: string
include_byok_in_limit:
description: Whether to include BYOK usage in the limit
example: true
type: boolean
limit:
description: Optional spending limit for the API key in USD
example: 50
format: double
nullable: true
type: number
limit_reset:
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.
enum:
- daily
- weekly
- monthly
- null
example: monthly
nullable: true
type: string
name:
description: Name for the new API key
example: My New API Key
minLength: 1
type: string
workspace_id:
description: The workspace to create the API key in. Defaults to the default workspace if not provided.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
format: uuid
type: string
required:
- name
type: object
required: true
responses:
'201':
content:
application/json:
example:
data:
byok_usage: 0
byok_usage_daily: 0
byok_usage_monthly: 0
byok_usage_weekly: 0
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: My New API Key
limit: 50
limit_remaining: 50
limit_reset: monthly
name: My New API Key
updated_at: null
usage: 0
usage_daily: 0
usage_monthly: 0
usage_weekly: 0
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
key: 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
schema:
example:
data:
byok_usage: 0
byok_usage_daily: 0
byok_usage_monthly: 0
byok_usage_weekly: 0
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: My New API Key
limit: 50
limit_remaining: 50
limit_reset: monthly
name: My New API Key
updated_at: null
usage: 0
usage_daily: 0
usage_monthly: 0
usage_weekly: 0
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
key: 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
properties:
data:
description: The created API key information
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: sk-or-v1-0e6...1c96
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
format: double
type: number
created_at:
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
type: string
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned keys, this is the member who created
the key. For individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
nullable: true
type: string
disabled:
description: Whether the API key is disabled
example: false
type: boolean
expires_at:
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
hash:
description: Unique hash identifier for the API key
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
include_byok_in_limit:
description: Whether to include external BYOK usage in the credit limit
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
nullable: true
type: number
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
nullable: true
type: number
limit_reset:
description: Type of limit reset for the API key
example: monthly
nullable: true
type: string
name:
description: Name of the API key
example: My Production Key
type: string
updated_at:
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
format: double
type: number
usage_monthly:
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
format: double
type: number
usage_weekly:
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
format: double
type: number
workspace_id:
description: The workspace ID this API key belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
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
- creator_user_id
- workspace_id
type: object
key:
description: The actual API key string (only shown once)
example: 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
type: string
required:
- data
- key
type: object
description: API key created successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Create a new API key
tags:
- API Keys
x-speakeasy-name-override: create
/keys/{hash}:
delete:
description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: deleteKeys
parameters:
- description: The hash identifier of the API key to delete
in: path
name: hash
required: true
schema:
description: The hash identifier of the API key to delete
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
responses:
'200':
content:
application/json:
example:
deleted: true
schema:
example:
deleted: true
properties:
deleted:
const: true
description: Confirmation that the API key was deleted
example: true
type: boolean
required:
- deleted
type: object
description: API key deleted successfully
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Delete an API key
tags:
- API Keys
x-speakeasy-name-override: delete
get:
description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: getKey
parameters:
- description: The hash identifier of the API key to retrieve
in: path
name: hash
required: true
schema:
description: The hash identifier of the API key to retrieve
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
responses:
'200':
content:
application/json:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: Production API Key
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: Production API Key
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
description: The API key information
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: sk-or-v1-0e6...1c96
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
format: double
type: number
created_at:
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
type: string
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned keys, this is the member who created
the key. For individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
nullable: true
type: string
disabled:
description: Whether the API key is disabled
example: false
type: boolean
expires_at:
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
hash:
description: Unique hash identifier for the API key
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
include_byok_in_limit:
description: Whether to include external BYOK usage in the credit limit
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
nullable: true
type: number
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
nullable: true
type: number
limit_reset:
description: Type of limit reset for the API key
example: monthly
nullable: true
type: string
name:
description: Name of the API key
example: My Production Key
type: string
updated_at:
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
format: double
type: number
usage_monthly:
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
format: double
type: number
usage_weekly:
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
format: double
type: number
workspace_id:
description: The workspace ID this API key belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
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
- creator_user_id
- workspace_id
type: object
required:
- data
type: object
description: API key details
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get a single API key
tags:
- API Keys
x-speakeasy-name-override: get
patch:
description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: updateKeys
parameters:
- description: The hash identifier of the API key to update
in: path
name: hash
required: true
schema:
description: The hash identifier of the API key to update
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
requestBody:
content:
application/json:
example:
disabled: false
include_byok_in_limit: true
limit: 75
limit_reset: daily
name: Updated API Key Name
schema:
example:
disabled: false
include_byok_in_limit: true
limit: 75
limit_reset: daily
name: Updated API Key Name
properties:
disabled:
description: Whether to disable the API key
example: false
type: boolean
include_byok_in_limit:
description: Whether to include BYOK usage in the limit
example: true
type: boolean
limit:
description: New spending limit for the API key in USD
example: 75
format: double
nullable: true
type: number
limit_reset:
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.
enum:
- daily
- weekly
- monthly
- null
example: daily
nullable: true
type: string
name:
description: New name for the API key
example: Updated API Key Name
type: string
type: object
required: true
responses:
'200':
content:
application/json:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: null
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: Updated API Key Name
limit: 75
limit_remaining: 49.5
limit_reset: daily
name: Updated API Key Name
updated_at: '2025-08-24T16:00:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
schema:
example:
data:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: null
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: Updated API Key Name
limit: 75
limit_remaining: 49.5
limit_reset: daily
name: Updated API Key Name
updated_at: '2025-08-24T16:00:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
data:
description: The updated API key information
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: sk-or-v1-0e6...1c96
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
example: 17.38
format: double
type: number
created_at:
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
type: string
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned keys, this is the member who created
the key. For individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
nullable: true
type: string
disabled:
description: Whether the API key is disabled
example: false
type: boolean
expires_at:
description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
nullable: true
type: string
hash:
description: Unique hash identifier for the API key
example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
include_byok_in_limit:
description: Whether to include external BYOK usage in the credit limit
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
nullable: true
type: number
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
nullable: true
type: number
limit_reset:
description: Type of limit reset for the API key
example: monthly
nullable: true
type: string
name:
description: Name of the API key
example: My Production Key
type: string
updated_at:
description: ISO 8601 timestamp of when the API key was last updated
example: '2025-08-24T15:45:00Z'
nullable: true
type: string
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: OpenRouter credit usage (in USD) for the current UTC day
example: 25.5
format: double
type: number
usage_monthly:
description: OpenRouter credit usage (in USD) for the current UTC month
example: 25.5
format: double
type: number
usage_weekly:
description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
example: 25.5
format: double
type: number
workspace_id:
description: The workspace ID this API key belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
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
- creator_user_id
- workspace_id
type: object
required:
- data
type: object
description: API key updated successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Update an API key
tags:
- API Keys
x-speakeasy-name-override: update
/messages:
post:
description: >-
Creates a message using the Anthropic Messages API format. Supports text, images, PDFs, tools, and extended
thinking.
operationId: createMessages
requestBody:
content:
application/json:
example:
max_tokens: 1024
messages:
- content: Hello, how are you?
role: user
model: anthropic/claude-sonnet-4
schema:
$ref: '#/components/schemas/MessagesRequest'
required: true
responses:
'200':
content:
application/json:
example:
content:
- text: I'm doing well, thank you for asking! How can I help you today?
type: text
id: msg_abc123
model: anthropic/claude-sonnet-4
role: assistant
stop_reason: end_turn
type: message
usage:
input_tokens: 12
output_tokens: 18
schema:
$ref: '#/components/schemas/MessagesResult'
text/event-stream:
example:
data:
delta:
text: Hello
type: text_delta
index: 0
type: content_block_delta
event: content_block_delta
schema:
properties:
data:
$ref: '#/components/schemas/MessagesStreamEvents'
event:
type: string
required:
- event
- data
type: object
x-speakeasy-sse-sentinel: '[DONE]'
description: Successful response
'400':
content:
application/json:
example:
error:
message: 'Invalid request: messages is required'
type: invalid_request_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Invalid request error
'401':
content:
application/json:
example:
error:
message: Invalid API key
type: authentication_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Authentication error
'403':
content:
application/json:
example:
error:
message: Permission denied
type: permission_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Permission denied error
'404':
content:
application/json:
example:
error:
message: Model not found
type: not_found_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Not found error
'429':
content:
application/json:
example:
error:
message: Rate limit exceeded
type: rate_limit_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Rate limit error
'500':
content:
application/json:
example:
error:
message: Internal server error
type: api_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: API error
'503':
content:
application/json:
example:
error:
message: Service temporarily overloaded
type: overloaded_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Overloaded error
'529':
content:
application/json:
example:
error:
message: Provider is temporarily overloaded
type: overloaded_error
type: error
schema:
$ref: '#/components/schemas/MessagesErrorResponse'
description: Overloaded error
summary: Create a message
tags:
- Anthropic Messages
x-speakeasy-ignore: true
x-speakeasy-name-override: create
x-speakeasy-stream-request-field: stream
/models:
get:
operationId: getModels
parameters:
- description: Filter models by use case category
in: query
name: category
required: false
schema:
description: Filter models by use case category
enum:
- programming
- roleplay
- marketing
- marketing/seo
- technology
- science
- translation
- legal
- finance
- health
- trivia
- academia
example: programming
type: string
- description: Filter models by supported parameter (comma-separated)
in: query
name: supported_parameters
required: false
schema:
description: Filter models by supported parameter (comma-separated)
example: temperature
type: string
- description: >-
Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio,
embeddings) or "all" to include all models. Defaults to "text".
in: query
name: output_modalities
required: false
schema:
description: >-
Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio,
embeddings) or "all" to include all models. Defaults to "text".
example: text
type: string
- description: Return results as RSS feed
in: query
name: use_rss
required: false
schema:
description: Return results as RSS feed
example: 'true'
type: string
- description: Use chat links in RSS feed items
in: query
name: use_rss_chat_links
required: false
schema:
description: Use chat links in RSS feed items
example: 'true'
type: string
responses:
'200':
content:
application/json:
example:
data:
- architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
canonical_slug: openai/gpt-4
context_length: 8192
created: 1692901234
default_parameters: null
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
expiration_date: null
id: openai/gpt-4
knowledge_cutoff: null
links:
details: /api/v1/models/openai/gpt-5.4/endpoints
name: GPT-4
per_request_limits: null
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
supported_parameters:
- temperature
- top_p
- max_tokens
supported_voices: null
top_provider:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
schema:
$ref: '#/components/schemas/ModelsListResponse'
application/rss+xml:
example: >-
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>OpenRouter
Models</title></channel></rss>
schema:
type: string
description: Returns a list of models or RSS feed
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all models and their properties
tags:
- Models
x-speakeasy-name-override: list
/models/{author}/{slug}/endpoints:
get:
operationId: listEndpoints
parameters:
- description: The author/organization of the model
in: path
name: author
required: true
schema:
description: The author/organization of the model
example: openai
type: string
- description: The model slug
in: path
name: slug
required: true
schema:
description: The model slug
example: gpt-4
type: string
responses:
'200':
content:
application/json:
example:
data:
architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
created: 1692901234
description: GPT-4 is a large multimodal model.
endpoints: []
id: openai/gpt-4
name: GPT-4
schema:
example:
data:
architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
created: 1692901234
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
endpoints:
- context_length: 8192
latency_last_30m:
p50: 0.25
p75: 0.35
p90: 0.48
p99: 0.85
max_completion_tokens: 4096
max_prompt_tokens: 8192
model_id: openai/gpt-4
model_name: GPT-4
name: 'OpenAI: GPT-4'
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
provider_name: OpenAI
quantization: fp16
status: default
supported_parameters:
- temperature
- top_p
- max_tokens
supports_implicit_caching: true
tag: openai
throughput_last_30m:
p50: 45.2
p75: 38.5
p90: 28.3
p99: 15.1
uptime_last_1d: 99.8
uptime_last_30m: 99.5
uptime_last_5m: 100
id: openai/gpt-4
name: GPT-4
properties:
data:
$ref: '#/components/schemas/ListEndpointsResponse'
required:
- data
type: object
description: Returns a list of endpoints
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all endpoints for a model
tags:
- Endpoints
x-speakeasy-name-override: list
/models/count:
get:
operationId: listModelsCount
parameters:
- description: >-
Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio,
embeddings) or "all" to include all models. Defaults to "text".
in: query
name: output_modalities
required: false
schema:
description: >-
Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio,
embeddings) or "all" to include all models. Defaults to "text".
example: text
type: string
responses:
'200':
content:
application/json:
example:
data:
count: 150
schema:
$ref: '#/components/schemas/ModelsCountResponse'
description: Returns the total count of available models
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get total count of available models
tags:
- Models
x-speakeasy-name-override: count
/models/user:
get:
description: >-
List models filtered by user provider preferences, [privacy
settings](https://openrouter.ai/docs/guides/privacy/provider-logging), and
[guardrails](https://openrouter.ai/docs/guides/features/guardrails). If requesting through
`eu.openrouter.ai/api/v1/...` the results will be filtered to models that satisfy [EU in-region
routing](https://openrouter.ai/docs/guides/privacy/provider-logging#enterprise-eu-in-region-routing).
operationId: listModelsUser
responses:
'200':
content:
application/json:
example:
data:
- architecture:
input_modalities:
- text
instruct_type: chatml
modality: text->text
output_modalities:
- text
tokenizer: GPT
canonical_slug: openai/gpt-4
context_length: 8192
created: 1692901234
default_parameters: null
description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
expiration_date: null
id: openai/gpt-4
knowledge_cutoff: null
links:
details: /api/v1/models/openai/gpt-5.4/endpoints
name: GPT-4
per_request_limits: null
pricing:
completion: '0.00006'
image: '0'
prompt: '0.00003'
request: '0'
supported_parameters:
- temperature
- top_p
- max_tokens
supported_voices: null
top_provider:
context_length: 8192
is_moderated: true
max_completion_tokens: 4096
schema:
$ref: '#/components/schemas/ModelsListResponse'
description: Returns a list of models filtered by user provider preferences
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
security:
- bearer: []
summary: List models filtered by user provider preferences, privacy settings, and guardrails
tags:
- Models
x-speakeasy-name-override: listForUser
/organization/members:
get:
description: >-
List all members of the organization associated with the authenticated management key. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: listOrganizationMembers
parameters:
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- email: jane.doe@example.com
first_name: Jane
id: user_2dHFtVWx2n56w6HkM0000000000
last_name: Doe
role: member
total_count: 25
schema:
properties:
data:
description: List of organization members
items:
properties:
email:
description: Email address of the member
example: jane.doe@example.com
type: string
first_name:
description: First name of the member
example: Jane
nullable: true
type: string
id:
description: User ID of the organization member
example: user_2dHFtVWx2n56w6HkM0000000000
type: string
last_name:
description: Last name of the member
example: Doe
nullable: true
type: string
role:
description: Role of the member in the organization
enum:
- org:admin
- org:member
example: org:member
type: string
required:
- id
- first_name
- last_name
- email
- role
type: object
type: array
total_count:
description: Total number of members in the organization
example: 25
type: integer
required:
- data
- total_count
type: object
description: List of organization members
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List organization members
tags:
- Organization
x-speakeasy-name-override: listMembers
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
/providers:
get:
operationId: listProviders
responses:
'200':
content:
application/json:
example:
data:
- datacenters:
- US
- IE
headquarters: US
name: OpenAI
privacy_policy_url: https://openai.com/privacy
slug: openai
status_page_url: https://status.openai.com
terms_of_service_url: https://openai.com/terms
schema:
example:
data:
- datacenters:
- US
- IE
headquarters: US
name: OpenAI
privacy_policy_url: https://openai.com/privacy
slug: openai
status_page_url: https://status.openai.com
terms_of_service_url: https://openai.com/terms
properties:
data:
items:
example:
datacenters:
- US
- IE
headquarters: US
name: OpenAI
privacy_policy_url: https://openai.com/privacy
slug: openai
status_page_url: https://status.openai.com
terms_of_service_url: https://openai.com/terms
properties:
datacenters:
description: ISO 3166-1 Alpha-2 country codes of the provider datacenter locations
example:
- US
- IE
items:
enum:
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CR
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DJ
- DK
- DM
- DO
- DZ
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- FI
- FJ
- FK
- FM
- FO
- FR
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SV
- SX
- SY
- SZ
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- YE
- YT
- ZA
- ZM
- ZW
type: string
nullable: true
type: array
headquarters:
description: ISO 3166-1 Alpha-2 country code of the provider headquarters
enum:
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CR
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DJ
- DK
- DM
- DO
- DZ
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- FI
- FJ
- FK
- FM
- FO
- FR
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SV
- SX
- SY
- SZ
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- YE
- YT
- ZA
- ZM
- ZW
- null
example: US
nullable: true
type: string
name:
description: Display name of the provider
example: OpenAI
type: string
privacy_policy_url:
description: URL to the provider's privacy policy
example: https://openai.com/privacy
nullable: true
type: string
slug:
description: URL-friendly identifier for the provider
example: openai
type: string
status_page_url:
description: URL to the provider's status page
example: https://status.openai.com
nullable: true
type: string
terms_of_service_url:
description: URL to the provider's terms of service
example: https://openai.com/terms
nullable: true
type: string
required:
- name
- slug
- privacy_policy_url
type: object
type: array
required:
- data
type: object
description: Returns a list of providers
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all providers
tags:
- Providers
x-speakeasy-name-override: list
/rerank:
post:
description: Submits a rerank request to the rerank router
operationId: createRerank
requestBody:
content:
application/json:
schema:
description: Rerank request input
example:
documents:
- Paris is the capital of France.
- Berlin is the capital of Germany.
model: cohere/rerank-v3.5
query: What is the capital of France?
top_n: 3
properties:
documents:
description: The list of documents to rerank
example:
- Paris is the capital of France.
- Berlin is the capital of Germany.
items:
type: string
type: array
model:
description: The rerank model to use
example: cohere/rerank-v3.5
type: string
provider:
allOf:
- $ref: '#/components/schemas/ProviderPreferences'
- description: Provider routing preferences for the request.
query:
description: The search query to rerank documents against
example: What is the capital of France?
type: string
top_n:
description: Number of most relevant documents to return
example: 3
minimum: 1
type: integer
required:
- model
- query
- documents
type: object
required: true
responses:
'200':
content:
application/json:
schema:
description: Rerank response containing ranked results
example:
id: gen-rerank-1234567890-abc
model: cohere/rerank-v3.5
results:
- document:
text: Paris is the capital of France.
index: 0
relevance_score: 0.98
usage:
search_units: 1
total_tokens: 150
properties:
id:
description: Unique identifier for the rerank response (ORID format)
example: gen-rerank-1234567890-abc
type: string
model:
description: The model used for reranking
example: cohere/rerank-v3.5
type: string
provider:
description: The provider that served the rerank request
example: Cohere
type: string
results:
description: List of rerank results sorted by relevance
example:
- document:
text: Paris is the capital of France.
index: 0
relevance_score: 0.98
items:
description: A single rerank result
example:
document:
text: Paris is the capital of France.
index: 0
relevance_score: 0.98
properties:
document:
description: The document object containing the original text
properties:
text:
description: The document text
example: Paris is the capital of France.
type: string
required:
- text
type: object
index:
description: Index of the document in the original input list
example: 0
type: integer
relevance_score:
description: Relevance score of the document to the query
example: 0.98
format: double
type: number
required:
- index
- relevance_score
- document
type: object
type: array
usage:
description: Usage statistics
example:
search_units: 1
total_tokens: 150
properties:
cost:
description: Cost of the request in credits
example: 0.001
format: double
type: number
search_units:
description: Number of search units consumed (Cohere billing)
example: 1
type: integer
total_tokens:
description: Total number of tokens used
example: 150
type: integer
type: object
required:
- model
- results
type: object
text/event-stream:
example: 'data: [DONE]'
schema:
description: Not used for rerank - rerank does not support streaming
type: string
x-speakeasy-sse-sentinel: '[DONE]'
description: Rerank response
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Submit a rerank request
tags:
- Rerank
x-speakeasy-name-override: rerank
/responses:
post:
description: Creates a streaming or non-streaming response using OpenResponses API format
operationId: createResponses
requestBody:
content:
application/json:
example:
input: Tell me a joke
model: openai/gpt-4o
schema:
$ref: '#/components/schemas/ResponsesRequest'
required: true
responses:
'200':
content:
application/json:
example:
created_at: 1700000000
id: resp_abc123
model: openai/gpt-4o
object: response
output:
- content:
- text: Why did the chicken cross the road? To get to the other side!
type: output_text
role: assistant
type: message
status: completed
usage:
completion_tokens: 20
prompt_tokens: 10
total_tokens: 30
schema:
$ref: '#/components/schemas/OpenResponsesResult'
text/event-stream:
example:
data:
delta: Hello
type: response.output_text.delta
schema:
properties:
data:
$ref: '#/components/schemas/StreamEvents'
required:
- data
type: object
x-speakeasy-sse-sentinel: '[DONE]'
description: Successful response
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'408':
content:
application/json:
example:
error:
code: 408
message: Operation timed out. Please try again later.
schema:
$ref: '#/components/schemas/RequestTimeoutResponse'
description: Request Timeout - Operation exceeded time limit
'413':
content:
application/json:
example:
error:
code: 413
message: Request payload too large
schema:
$ref: '#/components/schemas/PayloadTooLargeResponse'
description: Payload Too Large - Request payload exceeds size limits
'422':
content:
application/json:
example:
error:
code: 422
message: Invalid argument
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity - Semantic validation failure
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
'503':
content:
application/json:
example:
error:
code: 503
message: Service temporarily unavailable
schema:
$ref: '#/components/schemas/ServiceUnavailableResponse'
description: Service Unavailable - Service temporarily unavailable
'524':
content:
application/json:
example:
error:
code: 524
message: Request timed out. Please try again later.
schema:
$ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
description: Infrastructure Timeout - Provider request timed out at edge network
'529':
content:
application/json:
example:
error:
code: 529
message: Provider returned error
schema:
$ref: '#/components/schemas/ProviderOverloadedResponse'
description: Provider Overloaded - Provider is temporarily overloaded
summary: Create a response
tags:
- beta.responses
x-speakeasy-name-override: send
x-speakeasy-stream-request-field: stream
/videos:
post:
description: Submits a video generation request and returns a polling URL to check status
operationId: createVideos
requestBody:
content:
application/json:
example:
aspect_ratio: '16:9'
duration: 8
model: google/veo-3.1
prompt: A serene mountain landscape at sunset
resolution: 720p
schema:
$ref: '#/components/schemas/VideoGenerationRequest'
required: true
responses:
'202':
content:
application/json:
example:
generation_id: gen-xyz789
id: job-abc123
polling_url: /api/v1/videos/job-abc123
status: pending
schema:
$ref: '#/components/schemas/VideoGenerationResponse'
description: Video generation request accepted
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'402':
content:
application/json:
example:
error:
code: 402
message: Insufficient credits. Add more using https://openrouter.ai/credits
schema:
$ref: '#/components/schemas/PaymentRequiredResponse'
description: Payment Required - Insufficient credits or quota to complete request
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Submit a video generation request
tags:
- Video Generation
x-speakeasy-name-override: generate
/videos/{jobId}:
get:
description: Returns job status and content URLs when completed
operationId: getVideos
parameters:
- in: path
name: jobId
required: true
schema:
example: job-abc123
minLength: 1
type: string
responses:
'200':
content:
application/json:
example:
generation_id: gen-xyz789
id: job-abc123
polling_url: /api/v1/videos/job-abc123
status: complete
unsigned_urls:
- https://storage.example.com/video.mp4
usage:
cost: 0.5
schema:
$ref: '#/components/schemas/VideoGenerationResponse'
description: Video generation status
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Poll video generation status
tags:
- Video Generation
x-speakeasy-name-override: getGeneration
/videos/{jobId}/content:
get:
description: Streams the generated video content from the upstream provider
operationId: listVideosContent
parameters:
- in: path
name: jobId
required: true
schema:
example: job-abc123
minLength: 1
type: string
- in: query
name: index
required: false
schema:
default: 0
example: 0
minimum: 0
nullable: true
type: integer
responses:
'200':
content:
application/octet-stream:
example: <binary video data>
schema:
format: binary
type: string
description: Video content stream
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
'502':
content:
application/json:
example:
error:
code: 502
message: Provider returned error
schema:
$ref: '#/components/schemas/BadGatewayResponse'
description: Bad Gateway - Provider/upstream API failure
summary: Download generated video content
tags:
- Video Generation
x-speakeasy-name-override: getVideoContent
/videos/models:
get:
description: Returns a list of all available video generation models and their properties
operationId: listVideosModels
responses:
'200':
content:
application/json:
example:
data:
- allowed_passthrough_parameters: []
canonical_slug: google/veo-3.1
created: 1700000000
description: Google video generation model
generate_audio: true
id: google/veo-3.1
name: Veo 3.1
pricing_skus:
generate: '0.50'
seed: null
supported_aspect_ratios:
- '16:9'
supported_durations:
- 5
- 8
supported_frame_images:
- first_frame
- last_frame
supported_resolutions:
- 720p
supported_sizes: null
schema:
$ref: '#/components/schemas/VideoModelsListResponse'
description: Returns a list of video generation models
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List all video generation models
tags:
- Video Generation
/workspaces:
get:
description: >-
List all workspaces for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys)
required.
operationId: listWorkspaces
parameters:
- description: Number of records to skip for pagination
in: query
name: offset
required: false
schema:
description: Number of records to skip for pagination
example: 0
minimum: 0
nullable: true
type: integer
- description: Maximum number of records to return (max 100)
in: query
name: limit
required: false
schema:
description: Maximum number of records to return (max 100)
example: 50
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
example:
data:
- created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: '2025-08-24T15:45:00Z'
total_count: 1
schema:
$ref: '#/components/schemas/ListWorkspacesResponse'
description: List of workspaces
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: List workspaces
tags:
- Workspaces
x-speakeasy-name-override: list
x-speakeasy-pagination:
inputs:
- in: parameters
name: offset
type: offset
- in: parameters
name: limit
type: limit
outputs:
results: $.data
type: offsetLimit
post:
description: >-
Create a new workspace for the authenticated user. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: createWorkspace
requestBody:
content:
application/json:
example:
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
name: Production
slug: production
schema:
$ref: '#/components/schemas/CreateWorkspaceRequest'
required: true
responses:
'201':
content:
application/json:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: null
schema:
$ref: '#/components/schemas/CreateWorkspaceResponse'
description: Workspace created successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Create a workspace
tags:
- Workspaces
x-speakeasy-name-override: create
/workspaces/{id}:
delete:
description: >-
Delete an existing workspace. The default workspace cannot be deleted. Workspaces with active API keys cannot be
deleted. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: deleteWorkspace
parameters:
- description: The workspace ID (UUID) or slug
in: path
name: id
required: true
schema:
description: The workspace ID (UUID) or slug
example: production
minLength: 1
type: string
responses:
'200':
content:
application/json:
example:
deleted: true
schema:
$ref: '#/components/schemas/DeleteWorkspaceResponse'
description: Workspace deleted successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Delete a workspace
tags:
- Workspaces
x-speakeasy-name-override: delete
get:
description: Get a single workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: getWorkspace
parameters:
- description: The workspace ID (UUID) or slug
in: path
name: id
required: true
schema:
description: The workspace ID (UUID) or slug
example: production
minLength: 1
type: string
responses:
'200':
content:
application/json:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Production
slug: production
updated_at: '2025-08-24T15:45:00Z'
schema:
$ref: '#/components/schemas/GetWorkspaceResponse'
description: Workspace details
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Get a workspace
tags:
- Workspaces
x-speakeasy-name-override: get
patch:
description: >-
Update an existing workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys)
required.
operationId: updateWorkspace
parameters:
- description: The workspace ID (UUID) or slug
in: path
name: id
required: true
schema:
description: The workspace ID (UUID) or slug
example: production
minLength: 1
type: string
requestBody:
content:
application/json:
example:
name: Updated Workspace
slug: updated-workspace
schema:
$ref: '#/components/schemas/UpdateWorkspaceRequest'
required: true
responses:
'200':
content:
application/json:
example:
data:
created_at: '2025-08-24T10:30:00Z'
created_by: user_abc123
default_image_model: openai/dall-e-3
default_provider_sort: price
default_text_model: openai/gpt-4o
description: Production environment workspace
id: 550e8400-e29b-41d4-a716-446655440000
io_logging_api_key_ids: null
io_logging_sampling_rate: 1
is_data_discount_logging_enabled: true
is_observability_broadcast_enabled: false
is_observability_io_logging_enabled: false
name: Updated Workspace
slug: updated-workspace
updated_at: '2025-08-25T10:00:00Z'
schema:
$ref: '#/components/schemas/UpdateWorkspaceResponse'
description: Workspace updated successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Update a workspace
tags:
- Workspaces
x-speakeasy-name-override: update
/workspaces/{id}/members/add:
post:
description: >-
Add multiple organization members to a workspace. Members are assigned the same role they hold in the
organization. [Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkAddWorkspaceMembers
parameters:
- description: The workspace ID (UUID) or slug
in: path
name: id
required: true
schema:
description: The workspace ID (UUID) or slug
example: production
minLength: 1
type: string
requestBody:
content:
application/json:
example:
user_ids:
- user_abc123
- user_def456
schema:
$ref: '#/components/schemas/BulkAddWorkspaceMembersRequest'
required: true
responses:
'200':
content:
application/json:
example:
added_count: 1
data:
- created_at: '2025-08-24T10:30:00Z'
id: 660e8400-e29b-41d4-a716-446655440000
role: member
user_id: user_abc123
workspace_id: 550e8400-e29b-41d4-a716-446655440000
schema:
$ref: '#/components/schemas/BulkAddWorkspaceMembersResponse'
description: Members added successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk add members to a workspace
tags:
- Workspaces
x-speakeasy-name-override: bulkAddMembers
/workspaces/{id}/members/remove:
post:
description: >-
Remove multiple members from a workspace. Members with active API keys in the workspace cannot be removed.
[Management key](/docs/guides/overview/auth/management-api-keys) required.
operationId: bulkRemoveWorkspaceMembers
parameters:
- description: The workspace ID (UUID) or slug
in: path
name: id
required: true
schema:
description: The workspace ID (UUID) or slug
example: production
minLength: 1
type: string
requestBody:
content:
application/json:
example:
user_ids:
- user_abc123
- user_def456
schema:
$ref: '#/components/schemas/BulkRemoveWorkspaceMembersRequest'
required: true
responses:
'200':
content:
application/json:
example:
removed_count: 2
schema:
$ref: '#/components/schemas/BulkRemoveWorkspaceMembersResponse'
description: Members removed successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'404':
content:
application/json:
example:
error:
code: 404
message: Resource not found
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found - Resource does not exist
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
summary: Bulk remove members from a workspace
tags:
- Workspaces
x-speakeasy-name-override: bulkRemoveMembers
security:
- apiKey: []
servers:
- description: Production server
url: https://openrouter.ai/api/v1
x-speakeasy-server-id: production
tags:
- description: API key management endpoints
name: API Keys
- description: Analytics and usage endpoints
name: Analytics
- description: Anthropic Messages endpoints
name: Anthropic Messages
- description: Chat completion endpoints
name: Chat
- description: Credit management endpoints
name: Credits
- description: Text embedding endpoints
name: Embeddings
- description: Endpoint information
name: Endpoints
- description: Generation history endpoints
name: Generations
- description: Guardrails endpoints
name: Guardrails
- description: Model information endpoints
name: Models
- description: OAuth authentication endpoints
name: OAuth
- description: Organization endpoints
name: Organization
- description: Provider information endpoints
name: Providers
- description: Rerank endpoints
name: Rerank
- description: Speech-to-text endpoints
name: STT
- description: Text-to-speech endpoints
name: TTS
- description: Video Generation endpoints
name: Video Generation
- description: Workspaces endpoints
name: Workspaces
- description: beta.responses endpoints
name: beta.responses
x-retry-strategy:
initialDelay: 500
maxAttempts: 3
maxDelay: 60000
type: exponential
x-speakeasy-retries:
backoff:
exponent: 1.5
initialInterval: 500
maxElapsedTime: 3600000
maxInterval: 60000
retryConnectionErrors: true
statusCodes:
- 5XX
strategy: backoff