mirror of
https://github.com/wassname/openrouter-python-sdk-retry-errors.git
synced 2026-07-29 11:23:49 +08:00
21734 lines
680 KiB
YAML
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
|