components: parameters: {} schemas: AABenchmarkEntry: description: Artificial Analysis benchmark index scores. example: agentic_index: 55.8 coding_index: 63.2 intelligence_index: 71.4 properties: agentic_index: description: Artificial Analysis Agentic Index score example: 55.8 format: double nullable: true type: number coding_index: description: Artificial Analysis Coding Index score example: 63.2 format: double nullable: true type: number intelligence_index: description: Artificial Analysis Intelligence Index score example: 71.4 format: double nullable: true type: number required: - intelligence_index - coding_index - agentic_index type: object 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 AdvisorNestedTool: additionalProperties: nullable: true description: >- A tool made available to the advisor sub-agent. Only OpenRouter server tools (e.g. openrouter:web_search) are supported; function tools are rejected because the advisor has no way to execute them. The advisor tool may not list itself. example: type: openrouter:web_search properties: parameters: additionalProperties: nullable: true type: object type: type: string required: - type type: object AdvisorReasoning: description: >- Reasoning configuration forwarded to the advisor call. Use this to control reasoning effort and token budget for models that support extended thinking. example: effort: high properties: effort: description: Reasoning effort level for the advisor call. enum: - max - xhigh - high - medium - low - minimal - none type: string max_tokens: description: Maximum number of reasoning tokens the advisor may use. type: integer type: object AdvisorServerTool_OpenRouter: description: >- OpenRouter built-in server tool: consults a higher-intelligence advisor model (any OpenRouter model) for guidance mid-generation and returns its response. The advisor may run as a sub-agent with its own tools. Include multiple entries to offer several named advisors; at most one entry may omit `name` to act as the default advisor. example: parameters: model: ~anthropic/claude-opus-latest name: reviewer type: openrouter:advisor properties: parameters: $ref: '#/components/schemas/AdvisorServerToolConfig' type: enum: - openrouter:advisor type: string required: - type type: object AdvisorServerToolConfig: description: Configuration for one openrouter:advisor server tool entry. example: model: ~anthropic/claude-opus-latest name: reviewer properties: forward_transcript: description: >- When true, the full parent conversation is forwarded to the advisor so it sees the same context the executor does (and the tool-call `prompt`, if given, is appended as a final user turn). When false or omitted, the advisor receives only the `prompt` the executor passes in the tool call. example: false type: boolean instructions: description: >- System instructions for the advisor sub-agent. When omitted, the advisor responds with no system prompt of its own. example: You are a senior staff engineer. Give a focused, decisive plan. type: string max_completion_tokens: description: >- Maximum number of output tokens (including reasoning) the advisor may produce. When omitted, the provider's default applies. example: 2048 type: integer max_tool_calls: description: >- Maximum number of tool-calling steps the advisor sub-agent may take during its agentic loop. Capped at 25. Only relevant when the advisor is given tools. example: 5 maximum: 25 minimum: 1 type: integer model: description: >- Slug of the advisor model to consult (any OpenRouter model). When omitted, the executor can choose it via the tool call's `model` argument; if neither is set, the model from the outer API request is used. The advisor tool itself cannot be the advisor model. example: ~anthropic/claude-opus-latest type: string name: description: >- Optional name for this advisor. The model sees one tool per named advisor (and one default for an unnamed entry). Names must be unique across advisor entries. Letters, digits, spaces, underscores, and dashes; trimmed; 1–64 chars. example: reviewer maxLength: 64 minLength: 1 pattern: ^[a-zA-Z0-9 _-]+$ type: string reasoning: $ref: '#/components/schemas/AdvisorReasoning' stream: description: >- When true, the advisor's advice streams incrementally as it is produced. In the Responses API this emits `response.output_text.delta` events targeting the advisor output item; the final `advice` field is still set on the completed item. Has no effect on the Chat Completions API (where the advice arrives only as the final tool result). When false or omitted, the advice arrives only as the final result. example: false type: boolean temperature: description: Sampling temperature forwarded to the advisor call. When omitted, the provider's default applies. example: 0.7 format: double type: number tools: description: >- Tools the advisor sub-agent may use while forming its advice. The advisor runs as an agentic sub-agent over these tools, then returns its text. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the advisor tool itself. items: $ref: '#/components/schemas/AdvisorNestedTool' type: array 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 AnthropicAdvisorMessageUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: model: type: string type: enum: - advisor_message type: string required: - type - model type: object example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 823 model: claude-opus-4-6 output_tokens: 1612 type: advisor_message AnthropicAdvisorToolResult: example: content: text: Advisor response text type: advisor_result tool_use_id: srvtoolu_01abc type: advisor_tool_result properties: content: additionalProperties: nullable: true type: object tool_use_id: type: string type: enum: - advisor_tool_result type: string required: - type - tool_use_id - content type: object AnthropicAllowedCallers: example: - direct items: enum: - direct - code_execution_20250825 - code_execution_20260120 type: string type: array 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: description: >- Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. 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: default: null 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: - 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' - $ref: '#/components/schemas/AnthropicFileDocumentSource' 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 AnthropicFileDocumentSource: example: file_id: file_011CNha8iCJcU1wXNR6q4V8w type: file properties: file_id: type: string type: enum: - file type: string required: - type - file_id 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: model: type: string 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 AnthropicOutputTokensDetails: example: thinking_tokens: 0 nullable: true properties: thinking_tokens: type: integer required: - thinking_tokens type: object 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 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 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 output_tokens_details: null 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 output_tokens_details: $ref: '#/components/schemas/AnthropicOutputTokensDetails' server_tool_use: $ref: '#/components/schemas/AnthropicServerToolUsage' service_tier: $ref: '#/components/schemas/AnthropicServiceTier' required: - input_tokens - output_tokens - output_tokens_details - 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/AnthropicAdvisorMessageUsageIteration' - $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 ApiErrorType: description: Canonical OpenRouter error type, stable across all API formats enum: - context_length_exceeded - max_tokens_exceeded - token_limit_exceeded - string_too_long - authentication - permission_denied - payment_required - rate_limit_exceeded - provider_overloaded - provider_unavailable - invalid_request - invalid_prompt - not_found - precondition_failed - payload_too_large - unprocessable - content_policy_violation - refusal - invalid_image - image_too_large - image_too_small - unsupported_image_format - image_not_found - image_download_failed - server - timeout - unmapped example: rate_limit_exceeded type: string ApplyPatchCallItem: description: >- A tool call emitted by the model requesting a V4A patch operation. The client applies the patch and echoes an `apply_patch_call_output` on the next turn. example: call_id: call_abc123 id: apc_abc123 operation: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file status: completed type: apply_patch_call properties: call_id: type: string id: nullable: true type: string operation: $ref: '#/components/schemas/ApplyPatchCallOperation' status: $ref: '#/components/schemas/ApplyPatchCallStatus' type: enum: - apply_patch_call type: string required: - type - call_id - status - operation type: object ApplyPatchCallOperation: description: >- The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it. discriminator: mapping: create_file: '#/components/schemas/ApplyPatchCreateFileOperation' delete_file: '#/components/schemas/ApplyPatchDeleteFileOperation' update_file: '#/components/schemas/ApplyPatchUpdateFileOperation' propertyName: type example: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file oneOf: - $ref: '#/components/schemas/ApplyPatchCreateFileOperation' - $ref: '#/components/schemas/ApplyPatchUpdateFileOperation' - $ref: '#/components/schemas/ApplyPatchDeleteFileOperation' ApplyPatchCallOperationDiffDeltaEvent: description: Incremental chunk of `operation.diff` for an `apply_patch_call`. Matches OpenAI's streaming shape. example: delta: | +console.log("hi"); item_id: apc_abc123 output_index: 0 sequence_number: 5 type: response.apply_patch_call_operation_diff.delta properties: delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.apply_patch_call_operation_diff.delta type: string required: - type - item_id - output_index - delta - sequence_number type: object ApplyPatchCallOperationDiffDoneEvent: description: Emitted when `operation.diff` streaming completes for an `apply_patch_call`. example: diff: | @@ +console.log("hi"); item_id: apc_abc123 output_index: 0 sequence_number: 12 type: response.apply_patch_call_operation_diff.done properties: diff: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.apply_patch_call_operation_diff.done type: string required: - type - item_id - output_index - diff - sequence_number type: object ApplyPatchCallOutputItem: description: >- The client's echo of an `apply_patch_call` after applying the patch. `output` is an optional human-readable log; `status` is `completed` when the patch was applied successfully, `failed` otherwise. example: call_id: call_abc123 output: Applied patch to /src/main.ts status: completed type: apply_patch_call_output properties: call_id: type: string id: nullable: true type: string output: nullable: true type: string status: enum: - completed - failed type: string type: enum: - apply_patch_call_output type: string required: - type - call_id - status type: object ApplyPatchCallStatus: description: Lifecycle state of an `apply_patch_call` output item. enum: - in_progress - completed example: completed type: string ApplyPatchCreateFileOperation: description: >- The `create_file` variant of an `apply_patch_call.operation`. Carries a V4A diff describing the new file contents. example: diff: | @@ +console.log("hi"); path: /src/main.ts type: create_file properties: diff: type: string path: type: string type: enum: - create_file type: string required: - type - path - diff type: object ApplyPatchDeleteFileOperation: description: >- The `delete_file` variant of an `apply_patch_call.operation`. Identifies the file to remove; no diff is required. example: path: /src/main.ts type: delete_file properties: path: type: string type: enum: - delete_file type: string required: - type - path type: object ApplyPatchEngineEnum: description: >- Which apply_patch engine to use. "auto" (default) uses native passthrough when the endpoint advertises native apply_patch support, otherwise falls back to OpenRouter's HITL validator. "native" forces native passthrough — when the endpoint does not support native, the request falls back to HITL. "openrouter" always runs the HITL validator. Native passthrough streams the diff incrementally via `apply_patch_call_operation_diff.delta` events; HITL buffers the diff for atomic delivery as a single delta. enum: - auto - native - openrouter example: auto type: string ApplyPatchServerTool: description: Apply patch tool configuration example: type: apply_patch properties: type: enum: - apply_patch type: string required: - type type: object ApplyPatchServerTool_OpenRouter: description: >- OpenRouter built-in server tool: validates V4A diff patches for file operations (create, update, delete). Restricted to the Responses API. example: type: openrouter:apply_patch properties: parameters: $ref: '#/components/schemas/ApplyPatchServerToolConfig' type: enum: - openrouter:apply_patch type: string required: - type type: object ApplyPatchServerToolConfig: description: Configuration for the openrouter:apply_patch server tool example: engine: auto properties: engine: $ref: '#/components/schemas/ApplyPatchEngineEnum' type: object ApplyPatchUpdateFileOperation: description: >- The `update_file` variant of an `apply_patch_call.operation`. Carries a V4A diff describing edits to an existing file. example: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file properties: diff: type: string path: type: string type: enum: - update_file type: string required: - type - path - diff type: object AppRankingsItem: example: app_id: 12345 app_name: Cline rank: 1 total_requests: 4321 total_tokens: '12345678' properties: app_id: description: Stable numeric identifier of the app on OpenRouter. example: 12345 type: integer app_name: description: Public display name of the app. example: Cline type: string rank: description: 1-based position of the app within this response, per the requested `sort`. example: 1 type: integer total_requests: description: Number of requests attributed to the app inside the date window. example: 4321 type: integer total_tokens: description: >- Sum of `prompt_tokens + completion_tokens` attributed to the app inside the date window, returned as a decimal string so 64-bit values are not truncated. example: '12345678' type: string required: - rank - app_id - app_name - total_tokens - total_requests type: object AppRankingsResponse: example: data: - app_id: 12345 app_name: Cline rank: 1 total_requests: 4321 total_tokens: '12345678' - app_id: 67890 app_name: Roo Code rank: 2 total_requests: 2109 total_tokens: '9876543' meta: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' version: v1 properties: data: description: >- Apps ranked per the requested `sort`, re-numbered 1..N after category filtering. `popular` sorts by `total_tokens` descending; `trending` sorts by absolute excess token growth descending and may return fewer than `limit` rows when few apps are growing. items: $ref: '#/components/schemas/AppRankingsItem' type: array meta: $ref: '#/components/schemas/RankingsDailyMeta' required: - data - meta type: object AutoRouterPlugin: example: allowed_models: - anthropic/* - openai/gpt-4o cost_quality_tradeoff: 7 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 cost_quality_tradeoff: description: >- Controls cost vs. quality routing tradeoff (0–10). 0 = pure quality (best model regardless of cost), 10 = maximize for cost (cheapest model wins). Intermediate values blend quality and cost signals continuously. Defaults to 7. example: 7 maximum: 10 minimum: 0 type: integer 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 BaseCustomToolCallInputDeltaEvent: description: >- Event emitted when a custom tool call's freeform input is being streamed. Mirrors `response.function_call_arguments.delta` but for `custom` tools whose input is opaque text rather than JSON arguments. example: delta: '*** Begin Patch' item_id: item-1 output_index: 0 sequence_number: 4 type: response.custom_tool_call_input.delta properties: delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.custom_tool_call_input.delta type: string required: - type - item_id - output_index - delta - sequence_number type: object BaseCustomToolCallInputDoneEvent: description: >- Event emitted when a custom tool call's freeform input streaming is complete. Mirrors `response.function_call_arguments.done` but for `custom` tools. example: input: |- *** Begin Patch *** End Patch item_id: item-1 output_index: 0 sequence_number: 6 type: response.custom_tool_call_input.done properties: input: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.custom_tool_call_input.done type: string required: - type - item_id - output_index - input - 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' - $ref: '#/components/schemas/OpenAIResponseCustomToolCall' - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput' - $ref: '#/components/schemas/ApplyPatchCallItem' - $ref: '#/components/schemas/ApplyPatchCallOutputItem' 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: [] 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 output_tokens_details: null 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: apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall' custom_tool_call: '#/components/schemas/OutputItemCustomToolCall' 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/OutputItemCustomToolCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' 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 BashServerTool: description: 'OpenRouter built-in server tool: runs shell commands server-side in a sandboxed container' example: parameters: environment: type: container_auto type: openrouter:bash properties: parameters: $ref: '#/components/schemas/BashServerToolConfig' type: enum: - openrouter:bash type: string required: - type type: object BashServerToolConfig: description: Configuration for the openrouter:bash server tool example: environment: type: container_auto properties: engine: $ref: '#/components/schemas/BashServerToolEngine' environment: $ref: '#/components/schemas/BashServerToolEnvironment' sleep_after_seconds: $ref: '#/components/schemas/SandboxSleepAfterSeconds' type: object BashServerToolEngine: description: >- Which bash engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) and "native" use native passthrough, returning the tool call to your application to run client-side; OpenRouter does not execute the commands. enum: - auto - native - openrouter example: auto type: string BashServerToolEnvironment: description: Execution environment for the bash server tool. discriminator: mapping: container_auto: '#/components/schemas/ContainerAutoEnvironment' container_reference: '#/components/schemas/ContainerReferenceEnvironment' propertyName: type example: type: container_auto oneOf: - $ref: '#/components/schemas/ContainerAutoEnvironment' - $ref: '#/components/schemas/ContainerReferenceEnvironment' BooleanCapability: description: A supported-or-not flag. Present means the parameter is accepted. example: type: boolean properties: type: enum: - boolean type: string required: - type type: object 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 BYOKKey: example: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: allowed_api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means no restriction. example: - f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 items: type: string maxItems: 100 nullable: true type: array allowed_models: description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array allowed_user_ids: description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array created_at: description: ISO timestamp of when the credential was created. example: '2025-08-24T10:30:00Z' type: string disabled: description: Whether this credential is currently disabled. example: false type: boolean id: description: Stable public identifier for this BYOK credential. example: 11111111-2222-3333-4444-555555555555 format: uuid type: string is_fallback: description: >- Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. example: false type: boolean label: description: Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI. example: sk-...AbCd type: string name: description: Optional human-readable name for the credential. example: Production OpenAI Key nullable: true type: string provider: $ref: '#/components/schemas/BYOKProviderSlug' sort_order: description: Position within the provider — credentials are tried in ascending sort order. example: 0 type: integer workspace_id: description: ID of the workspace this credential belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - provider - workspace_id - label - disabled - is_fallback - allowed_models - allowed_api_key_hashes - allowed_user_ids - sort_order - created_at type: object BYOKProviderSlug: description: >- The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). enum: - ai21 - aion-labs - akashml - alibaba - amazon-bedrock - amazon-nova - ambient - anthropic - arcee-ai - atlas-cloud - avian - azure - baidu - baseten - black-forest-labs - byteplus - cerebras - chutes - cirrascale - clarifai - cloudflare - cohere - crusoe - darkbloom - decart - deepinfra - deepseek - dekallm - digitalocean - featherless - fireworks - friendli - gmicloud - google-ai-studio - google-vertex - groq - heygen - inception - inceptron - inferact-vllm - inference-net - infermatic - inflection - io-net - ionstream - liquid - mancer - mara - minimax - mistral - modelrun - modular - moonshotai - morph - ncompass - nebius - nex-agi - nextbit - novita - nvidia - open-inference - openai - parasail - perceptron - perplexity - phala - poolside - quiver - recraft - reka - relace - sakana-ai - sambanova - seed - siliconflow - sourceful - stepfun - streamlake - switchpoint - tenstorrent - together - upstage - venice - wafer - wandb - xai - xiaomi - z-ai example: openai type: string CapabilityDescriptor: description: A typed descriptor for one supported request parameter. discriminator: mapping: boolean: '#/components/schemas/BooleanCapability' enum: '#/components/schemas/EnumCapability' range: '#/components/schemas/RangeCapability' propertyName: type example: type: enum values: - 1K - 2K - 4K oneOf: - $ref: '#/components/schemas/EnumCapability' - $ref: '#/components/schemas/RangeCapability' - $ref: '#/components/schemas/BooleanCapability' 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. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier. enum: - auto - low - high - original 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/AdvisorServerTool_OpenRouter' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/FilesServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/SubagentServerTool_OpenRouter' - $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: $ref: '#/components/schemas/AnthropicCacheControlDirective' 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 min_p: description: >- Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. example: 0.1 format: double nullable: true type: number 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' fusion: '#/components/schemas/FusionPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/WebFetchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' 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: - max - xhigh - high - medium - low - minimal - none - null example: medium nullable: true type: string summary: $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum' type: object reasoning_effort: description: >- Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. enum: - max - xhigh - high - medium - low - minimal - none - null example: medium nullable: true type: string repetition_penalty: description: >- Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. example: 1 format: double nullable: true type: number 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). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. 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: - |+ stop_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' 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_a: description: >- Consider only tokens with "sufficiently high" probabilities based on the probability of the most likely token. Not all providers support this parameter. example: 0 format: double nullable: true type: number top_k: description: >- Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. example: 40 nullable: true type: integer 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 openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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 ChatServerToolChoice: description: >- OpenRouter extension: force a specific server tool by naming it directly in `tool_choice.type` instead of wrapping it in `{ type: "function", function: { name } }`. example: type: openrouter:web_search properties: type: description: OpenRouter server-tool type to force (e.g. `openrouter:web_search`, `web_search`, `web_search_preview`). example: openrouter:web_search 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 metadata: error_type: rate_limit_exceeded properties: code: description: Error code example: 429 format: int32 type: integer message: description: Error message example: Rate limit exceeded type: string metadata: description: Structured error metadata properties: error_type: $ref: '#/components/schemas/ApiErrorType' provider_code: description: Upstream provider-specific error code, when available type: string required: - error_type type: object 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 openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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 ChatStreamingResponse: 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 properties: data: $ref: '#/components/schemas/ChatStreamChunk' required: - data 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' - $ref: '#/components/schemas/ChatServerToolChoice' 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 server_tool_use_details: tool_calls_executed: 2 tool_calls_requested: 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 server_tool_use_details: description: Usage for server-side tool execution (e.g., web search) nullable: true properties: tool_calls_executed: description: Number of OpenRouter server tool calls that executed and produced a result nullable: true type: integer tool_calls_requested: description: >- Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here. nullable: true type: integer web_search_requests: description: >- Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two. nullable: true 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, Perplexity, and most native providers (Anthropic, OpenAI, xAI). 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, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. items: type: string type: array max_characters: description: >- Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). example: 2000 type: integer max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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. Defaults to 50 when not specified. example: 50 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 CompactionItem: description: A context compaction marker with encrypted summary example: encrypted_content: enc_abc123... type: compaction properties: encrypted_content: type: string id: nullable: true type: string type: enum: - compaction type: string required: - type - encrypted_content 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 ContainerAutoEnvironment: description: An OpenRouter-managed, auto-provisioned ephemeral container. example: type: container_auto properties: type: enum: - container_auto type: string required: - type type: object ContainerReferenceEnvironment: description: Reference to a previously created container to reuse. example: container_id: cntr_abc123 type: container_reference properties: container_id: description: Identifier of an existing container to reuse (max 20 characters). example: cntr_abc123 maxLength: 20 minLength: 1 pattern: ^[\w-]+$ type: string type: enum: - container_reference type: string required: - type - container_id type: object ContentFilterAction: description: Action taken when the pattern matches enum: - redact - block example: block type: string ContentFilterBuiltinAction: description: Action taken when the builtin filter triggers enum: - redact - block - flag example: block type: string ContentFilterBuiltinEntry: description: >- A builtin content filter entry. Builtin filters include PII detectors and the regex-based prompt injection detector. example: action: redact label: '[EMAIL]' slug: email properties: action: $ref: '#/components/schemas/ContentFilterBuiltinAction' label: description: >- Read-only, system-assigned redaction placeholder derived from the slug (e.g. "[EMAIL]", "[PHONE]"). Not settable by the caller. example: '[EMAIL]' maxLength: 100 type: string scan_scope: $ref: '#/components/schemas/PromptInjectionScanScope' slug: $ref: '#/components/schemas/ContentFilterBuiltinSlug' required: - slug - action type: object ContentFilterBuiltinEntryInput: description: >- A builtin content filter entry for create/update requests. Labels are system-assigned and cannot be set by the caller. example: action: redact slug: email properties: action: $ref: '#/components/schemas/ContentFilterBuiltinAction' label: deprecated: true description: >- Deprecated: labels are system-assigned and cannot be set by the caller. Accepted for backward compatibility but silently ignored. maxLength: 100 type: string scan_scope: $ref: '#/components/schemas/PromptInjectionScanScope' slug: $ref: '#/components/schemas/ContentFilterBuiltinSlug' required: - slug - action type: object ContentFilterBuiltinSlug: description: The builtin filter identifier enum: - email - phone - ssn - credit-card - ip-address - person-name - address - regex-prompt-injection example: regex-prompt-injection type: string ContentFilterEntry: description: A custom regex content filter that scans request messages for matching patterns. example: action: redact label: '[API_KEY]' pattern: \b(sk-[a-zA-Z0-9]{48})\b properties: action: $ref: '#/components/schemas/ContentFilterAction' label: description: Optional label used in redaction placeholders or error messages example: '[API_KEY]' maxLength: 100 nullable: true type: string pattern: description: A regex pattern to match against request content example: \b(sk-[a-zA-Z0-9]{48})\b minLength: 1 type: string required: - pattern - action 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 ContentPartAudio: example: audio_url: url: https://example.com/audio.mp3 type: audio_url properties: audio_url: properties: url: type: string required: - url type: object type: enum: - audio_url type: string required: - type - audio_url type: object 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 ContentPartInputAudio: example: input_audio: data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA... format: wav type: input_audio properties: input_audio: $ref: '#/components/schemas/MultimodalMedia' type: enum: - input_audio type: string required: - type - input_audio type: object ContentPartInputFile: example: input_file: data: data:application/pdf;base64,JVBERi0xLjQKJeLjz9MKMyAw... format: pdf type: input_file properties: input_file: $ref: '#/components/schemas/MultimodalMedia' type: enum: - input_file type: string required: - type - input_file type: object ContentPartInputVideo: example: input_video: data: data:video/mp4;base64,AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQy... format: mp4 type: input_video properties: input_video: $ref: '#/components/schemas/MultimodalMedia' type: enum: - input_video type: string required: - type - input_video type: object ContentPartVideo: example: type: video_url video_url: url: https://example.com/clip.mp4 properties: type: enum: - video_url type: string video_url: properties: url: type: string required: - url type: object required: - type - video_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 CreateBYOKKeyRequest: example: key: sk-proj-abc123... name: Production OpenAI Key provider: openai properties: allowed_models: description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array allowed_user_ids: description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array disabled: description: Whether this credential should be created in a disabled state. example: false type: boolean is_fallback: description: >- Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. example: false type: boolean key: description: The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. example: sk-proj-abc123... minLength: 1 type: string name: description: Optional human-readable name for the credential. example: Production OpenAI Key maxLength: 255 nullable: true type: string provider: $ref: '#/components/schemas/BYOKProviderSlug' workspace_id: description: Optional workspace ID. Defaults to the authenticated entity's default workspace. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - provider - key type: object CreateBYOKKeyResponse: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - description: The created BYOK credential. required: - data 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 content_filter_builtins: - action: block slug: regex-prompt-injection content_filters: null description: A guardrail for limiting API usage enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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 content_filter_builtins: description: >- Builtin content filters to apply. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. example: - action: block slug: regex-prompt-injection items: $ref: '#/components/schemas/ContentFilterBuiltinEntryInput' nullable: true type: array content_filters: description: Custom regex content filters to apply to request messages example: - action: redact label: '[API_KEY]' pattern: \b(sk-[a-zA-Z0-9]{48})\b items: $ref: '#/components/schemas/ContentFilterEntry' 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: deprecated: true description: >- Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. example: false nullable: true type: boolean enforce_zdr_anthropic: description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_google: description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_openai: description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_other: description: >- Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. 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 content_filter_builtins: - action: redact label: '[EMAIL]' slug: email content_filters: null created_at: '2025-08-24T10:30:00Z' description: A guardrail for limiting API usage enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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 CreateObservabilityDestinationRequest: example: config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd name: Production Langfuse type: langfuse properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. example: null items: type: string minItems: 1 nullable: true type: array config: additionalProperties: nullable: true description: Provider-specific configuration. The shape depends on `type` and is validated server-side. example: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd type: object enabled: default: true description: Whether this destination should be enabled immediately. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' name: description: Human-readable name for the destination. example: Production Langfuse type: string privacy_mode: default: false description: When true, request/response bodies are not forwarded — only metadata. example: false type: boolean sampling_rate: description: Sampling rate between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: description: The destination type. Only stable destination types are accepted. enum: - arize - braintrust - clickhouse - datadog - grafana - langfuse - langsmith - newrelic - opik - otel-collector - posthog - ramp - s3 - sentry - snowflake - weave - webhook example: langfuse type: string workspace_id: description: Optional workspace ID. Defaults to the authenticated entity's default workspace. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - type - name - config type: object CreateObservabilityDestinationResponse: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - description: The newly created observability destination. required: - data type: object CreatePresetFromInferenceResponse: description: Response containing the created preset with its designated version. example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 properties: data: $ref: '#/components/schemas/PresetWithDesignatedVersion' 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 segments separated by single hyphens, no leading/trailing hyphens) example: production maxLength: 50 minLength: 1 pattern: ^[a-z0-9]+(?:-[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 CustomToolCallInputDeltaEvent: allOf: - $ref: '#/components/schemas/BaseCustomToolCallInputDeltaEvent' - properties: {} type: object description: >- Event emitted when a custom tool call's freeform input is being streamed. Mirrors `response.function_call_arguments.delta` but for `custom` tools whose input is opaque text rather than JSON arguments. example: delta: '*** Begin Patch' item_id: item-1 output_index: 0 sequence_number: 4 type: response.custom_tool_call_input.delta CustomToolCallInputDoneEvent: allOf: - $ref: '#/components/schemas/BaseCustomToolCallInputDoneEvent' - properties: {} type: object description: >- Event emitted when a custom tool call's freeform input streaming is complete. Mirrors `response.function_call_arguments.done` but for `custom` tools. example: input: |- *** Begin Patch *** End Patch item_id: item-1 output_index: 0 sequence_number: 6 type: response.custom_tool_call_input.done CustomToolCallItem: description: >- A call to a custom (freeform-grammar) tool created by the model — distinct from `function_call`. Used for tools like Codex CLI's `apply_patch` whose payload is opaque text rather than JSON arguments. example: call_id: call-abc123 id: ctc-abc123 input: |- *** Begin Patch *** End Patch name: apply_patch type: custom_tool_call properties: call_id: type: string id: type: string input: type: string name: type: string namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) type: string type: enum: - custom_tool_call type: string required: - type - call_id - name - input type: object CustomToolCallOutputItem: allOf: - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput' - 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 custom (freeform-grammar) tool call execution. Mirrors `function_call_output` but is matched to a `custom_tool_call` rather than a `function_call`. example: call_id: call-abc123 id: ctco-abc123 output: patch applied successfully type: custom_tool_call_output DABenchmarkEntry: description: A single Design Arena benchmark entry for a specific arena+category example: arena: models category: website elo: 1385.2 rank: 5 win_rate: 62.5 properties: arena: description: Arena type (e.g. models, builders, agents) example: models type: string category: description: Category within the arena (e.g. website, gamedev, uicomponent) example: website type: string elo: description: ELO rating from head-to-head arena battles example: 1385.2 format: double type: number rank: description: Rank position within this arena+category among models available on OpenRouter (1 = highest ELO) example: 5 type: integer win_rate: description: Win rate percentage in arena battles example: 62.5 format: double type: number required: - arena - category - elo - win_rate - rank 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 DebugEvent: description: >- Debug event emitted when debug.echo_upstream_body is true. Contains the transformed upstream request body or timing milestones. example: debug: echo_upstream_body: messages: [] model: anthropic/claude-sonnet-4 sequence_number: 1 type: response.debug properties: debug: properties: echo_upstream_body: additionalProperties: nullable: true type: object timings: properties: epoch_ms: type: integer event: enum: - adapter_request - upstream_headers_received - first_token_received - upstream_body_ended type: string start_ms: type: integer required: - start_ms - event - epoch_ms type: object type: object sequence_number: type: integer type: enum: - response.debug type: string required: - type - debug - sequence_number 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 DeleteBYOKKeyResponse: example: deleted: true properties: deleted: const: true description: Confirmation that the BYOK credential was deleted. example: true type: boolean required: - deleted 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 DeleteObservabilityDestinationResponse: example: deleted: true properties: deleted: const: true description: Always `true` on success. type: boolean required: - deleted type: object DeleteWorkspaceBudgetResponse: example: deleted: true properties: deleted: const: true description: Confirmation that the budget was deleted (or did not exist) 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 EndpointInfo: example: model: openai/gpt-4o provider: OpenAI selected: true properties: model: type: string provider: type: string selected: type: boolean required: - provider - model - selected type: object EndpointsMetadata: example: available: - model: openai/gpt-4o provider: OpenAI selected: true total: 3 properties: available: items: $ref: '#/components/schemas/EndpointInfo' type: array total: type: integer required: - total - available type: object EndpointStatus: enum: - 0 - -1 - -2 - -3 - -5 - -10 example: 0 type: integer EnumCapability: description: A parameter that accepts one of a discrete set of string values. example: type: enum values: - 1K - 2K - 4K properties: type: enum: - enum type: string values: items: type: string type: array required: - type - values type: object 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 FileDeleteResponse: description: Confirmation that a file was deleted. example: id: file_011CNha8iCJcU1wXNR6q4V8w type: file_deleted properties: id: type: string type: enum: - file_deleted type: string required: - id - type type: object FileListResponse: description: A page of files belonging to the requesting workspace. example: cursor: null data: - created_at: '2025-01-01T00:00:00Z' downloadable: false filename: document.pdf id: file_011CNha8iCJcU1wXNR6q4V8w mime_type: application/pdf size_bytes: 1024000 type: file first_id: file_011CNha8iCJcU1wXNR6q4V8w has_more: false last_id: file_011CNha8iCJcU1wXNR6q4V8w properties: cursor: description: Opaque cursor for the next page; null when there are no more results. nullable: true type: string data: items: $ref: '#/components/schemas/FileMetadata' type: array first_id: nullable: true type: string has_more: type: boolean last_id: nullable: true type: string required: - data - has_more - first_id - last_id - cursor type: object FileMetadata: description: Metadata describing a stored file. example: created_at: '2025-01-01T00:00:00Z' downloadable: false filename: document.pdf id: file_011CNha8iCJcU1wXNR6q4V8w mime_type: application/pdf size_bytes: 1024000 type: file properties: created_at: type: string downloadable: type: boolean filename: type: string id: type: string mime_type: type: string size_bytes: type: integer type: enum: - file type: string required: - id - type - filename - mime_type - size_bytes - created_at - downloadable 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 FilesServerTool: description: >- OpenRouter built-in server tool: read, write, edit, and list workspace files via the Files API. Requires the `x-openrouter-file-ids: openrouter` request header. example: parameters: {} type: openrouter:files properties: parameters: $ref: '#/components/schemas/FilesServerToolConfig' type: enum: - openrouter:files type: string required: - type type: object FilesServerToolConfig: description: Configuration for the openrouter:files server tool example: {} properties: {} 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 FusionAnalysisResult: description: Structured analysis produced by the fusion judge model. example: blind_spots: - No model considered the impact on existing API consumers. consensus: - All panel models agree the request is asking for a concise summary. contradictions: - stances: - model: openai/gpt-5 stance: Favors an incremental rollout. - model: anthropic/claude-sonnet-4.5 stance: Favors a single coordinated migration. topic: Recommended approach partial_coverage: - models: - openai/gpt-5 point: Only one model addressed the rollback strategy. unique_insights: - insight: Highlighted a backwards-compatibility risk the other models missed. model: anthropic/claude-sonnet-4.5 properties: blind_spots: items: type: string type: array consensus: items: type: string type: array contradictions: items: properties: stances: items: properties: model: type: string stance: type: string required: - model - stance type: object type: array topic: type: string required: - topic - stances type: object type: array partial_coverage: items: properties: models: items: type: string type: array point: type: string required: - models - point type: object type: array unique_insights: items: properties: insight: type: string model: type: string required: - model - insight type: object type: array required: - consensus - contradictions - partial_coverage - unique_insights - blind_spots type: object FusionCallAnalysisCompletedEvent: description: Emitted when the fusion judge completes with the structured analysis. example: analysis: blind_spots: [] consensus: [] contradictions: [] partial_coverage: [] unique_insights: [] item_id: st_fusion_abc output_index: 0 sequence_number: 40 type: response.fusion_call.analysis.completed properties: analysis: $ref: '#/components/schemas/FusionAnalysisResult' item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.analysis.completed type: string required: - type - analysis - output_index - item_id - sequence_number type: object FusionCallAnalysisInProgressEvent: description: Emitted when the fusion judge starts producing the structured analysis. example: item_id: st_fusion_abc judge_model: openai/gpt-5 output_index: 0 sequence_number: 25 type: response.fusion_call.analysis.in_progress properties: item_id: type: string judge_model: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.analysis.in_progress type: string required: - type - judge_model - output_index - item_id - sequence_number type: object FusionCallCompletedEvent: description: Emitted when the openrouter:fusion tool call finishes. example: item_id: st_fusion_abc output_index: 0 sequence_number: 41 type: response.fusion_call.completed properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.completed type: string required: - type - output_index - item_id - sequence_number type: object FusionCallInProgressEvent: description: Emitted when an openrouter:fusion tool call begins executing. example: item_id: st_fusion_abc output_index: 0 sequence_number: 3 type: response.fusion_call.in_progress properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.in_progress type: string required: - type - output_index - item_id - sequence_number type: object FusionCallPanelAddedEvent: description: Emitted when a fusion analysis-panel model starts. example: item_id: st_fusion_abc model: openai/gpt-5 output_index: 0 sequence_number: 4 type: response.fusion_call.panel.added properties: item_id: type: string model: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.panel.added type: string required: - type - model - output_index - item_id - sequence_number type: object FusionCallPanelCompletedEvent: description: Emitted when a fusion panel model finishes with its full content. example: content: Full panel response text... item_id: st_fusion_abc model: openai/gpt-5 output_index: 0 sequence_number: 20 type: response.fusion_call.panel.completed properties: content: type: string item_id: type: string model: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.panel.completed type: string required: - type - model - content - output_index - item_id - sequence_number type: object FusionCallPanelDeltaEvent: description: Incremental content token from a fusion panel model. example: delta: Carbon taxes item_id: st_fusion_abc model: openai/gpt-5 output_index: 0 sequence_number: 5 type: response.fusion_call.panel.delta properties: delta: type: string item_id: type: string model: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.panel.delta type: string required: - type - model - delta - output_index - item_id - sequence_number type: object FusionCallPanelFailedEvent: description: Emitted when a fusion panel model fails. example: error: Upstream provider error item_id: st_fusion_abc model: openai/gpt-5 output_index: 0 sequence_number: 18 status_code: 502 type: response.fusion_call.panel.failed properties: error: type: string item_id: type: string model: type: string output_index: type: integer sequence_number: type: integer status_code: type: integer type: enum: - response.fusion_call.panel.failed type: string required: - type - model - error - output_index - item_id - sequence_number type: object FusionCallPanelReasoningDeltaEvent: description: Incremental reasoning token from a fusion panel model. example: delta: Considering both sides item_id: st_fusion_abc model: openai/gpt-5 output_index: 0 sequence_number: 6 type: response.fusion_call.panel.reasoning.delta properties: delta: type: string item_id: type: string model: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.fusion_call.panel.reasoning.delta type: string required: - type - model - delta - output_index - item_id - sequence_number type: object FusionPlugin: example: analysis_models: - ~anthropic/claude-opus-latest - ~openai/gpt-latest - ~google/gemini-pro-latest enabled: true id: fusion model: ~anthropic/claude-opus-latest properties: analysis_models: description: >- Slugs of models to run in parallel as the "expert panel" the judge analyzes. Each model receives the same user prompt with web_search + web_fetch enabled. Capped at 8 models to bound cost amplification. When omitted, defaults to the Quality preset from the /labs/fusion UI (~anthropic/claude-opus-latest, ~openai/gpt-latest, ~google/gemini-pro-latest). example: - ~anthropic/claude-opus-latest - ~openai/gpt-latest - ~google/gemini-pro-latest items: type: string maxItems: 8 minItems: 1 type: array enabled: description: Set to false to disable the fusion plugin for this request. Defaults to true. type: boolean id: enum: - fusion type: string max_tool_calls: description: >- Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16. example: 12 maximum: 16 minimum: 1 type: integer model: description: >- Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset. example: ~anthropic/claude-opus-latest type: string preset: description: >- A curated OpenRouter fusion preset (slugs follow `-`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and judge model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence. enum: - general-high - general-budget - general-fast example: general-high type: string tools: description: >- Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only). example: - parameters: excluded_domains: - example.com type: openrouter:web_search - type: openrouter:web_fetch items: properties: parameters: additionalProperties: anyOf: - type: string - format: double type: number - type: boolean - nullable: true - items: anyOf: - type: string - format: double type: number - type: boolean - nullable: true - nullable: true type: array - additionalProperties: anyOf: - type: string - format: double type: number - type: boolean - nullable: true - nullable: true type: object - nullable: true description: Optional configuration forwarded as the tool's `parameters` object. type: object type: description: Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch"). type: string required: - type type: object maxItems: 8 type: array required: - id type: object FusionServerTool_OpenRouter: description: >- OpenRouter built-in server tool: fans out the user prompt to a panel of analysis models, then asks a judge model to summarize their collective output as structured JSON the outer model can synthesize from. example: parameters: analysis_models: - ~anthropic/claude-opus-latest - ~openai/gpt-latest type: openrouter:fusion properties: parameters: $ref: '#/components/schemas/FusionServerToolConfig' type: enum: - openrouter:fusion type: string required: - type type: object FusionServerToolConfig: description: Configuration for the openrouter:fusion server tool. example: analysis_models: - ~anthropic/claude-opus-latest - ~openai/gpt-latest - ~google/gemini-pro-latest properties: analysis_models: description: >- Slugs of models to run in parallel as the analysis panel. Each model receives the user prompt with openrouter:web_search and openrouter:web_fetch enabled, then a judge model summarizes the collective output into structured analysis JSON. Capped at 8 models to bound cost amplification. Defaults to the Quality preset from /labs/fusion. example: - ~anthropic/claude-opus-latest - ~openai/gpt-latest - ~google/gemini-pro-latest items: type: string maxItems: 8 minItems: 1 type: array cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' max_completion_tokens: description: >- Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, the provider's default applies. example: 16384 type: integer max_tool_calls: description: >- Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16. example: 12 maximum: 16 minimum: 1 type: integer model: description: >- Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request. example: ~anthropic/claude-opus-latest type: string reasoning: description: >- Reasoning configuration forwarded to panelist and judge inner calls. Use this to control reasoning effort and token budget for models that support extended thinking. properties: effort: description: Reasoning effort level for panelist and judge inner calls. enum: - max - xhigh - high - medium - low - minimal - none type: string max_tokens: description: >- Maximum number of reasoning tokens each panelist and judge model may use. Helps bound cost when models allocate too much budget to chain-of-thought. type: integer type: object temperature: description: >- Temperature forwarded to panelist inner calls. The judge always runs at temperature 0 regardless of this value. When omitted, the provider's default applies. example: 0.7 format: double type: number tools: description: >- Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only). example: - parameters: excluded_domains: - example.com type: openrouter:web_search - type: openrouter:web_fetch items: properties: parameters: additionalProperties: nullable: true description: Optional configuration forwarded as the tool's `parameters` object. type: object type: description: Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch"). type: string required: - type type: object maxItems: 8 type: array type: object FusionSource: description: A web page retrieved via web search during a fusion run. example: title: Example article title url: https://example.com/article properties: title: description: Title of the retrieved web page. type: string url: description: URL of the web page a panel or the judge retrieved during the run. type: string required: - url - title 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 service_tier: priority 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 - image - 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 data_region: description: The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise. enum: - global - europe example: global 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 preset_id: description: ID of the preset used for this generation, null if no preset was used example: a9e8d400-592a-494f-908c-375efa66cafd nullable: true 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 service_tier: description: Service tier the upstream provider reported running this request on, or null if it did not report one. example: priority 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 - service_tier - 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 - preset_id - router - provider_responses - user_agent - http_referer - data_region type: object required: - data type: object GetBYOKKeyResponse: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - description: The BYOK credential. required: - data type: object GetGuardrailResponse: example: data: allowed_models: null allowed_providers: - openai - anthropic - google content_filter_builtins: - action: redact label: '[EMAIL]' slug: email content_filters: null created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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 GetObservabilityDestinationResponse: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - description: The observability destination. required: - data type: object GetPresetResponse: description: A preset with its currently designated version. example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 properties: data: $ref: '#/components/schemas/PresetWithDesignatedVersion' required: - data type: object GetPresetVersionResponse: description: A single version of a preset. example: data: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 properties: data: $ref: '#/components/schemas/PresetDesignatedVersion' 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 content_filter_builtins: - action: redact label: '[EMAIL]' slug: email content_filters: null created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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 content_filter_builtins: description: >- Builtin content filters applied to requests. Includes PII detectors and the regex-based prompt injection detector. example: - action: redact label: '[EMAIL]' slug: email items: $ref: '#/components/schemas/ContentFilterBuiltinEntry' nullable: true type: array content_filters: description: Custom regex content filters applied to request messages example: - action: redact label: '[API_KEY]' pattern: \b(sk-[a-zA-Z0-9]{48})\b items: $ref: '#/components/schemas/ContentFilterEntry' 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: deprecated: true description: >- Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. example: false nullable: true type: boolean enforce_zdr_anthropic: description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_google: description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_openai: description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. example: false nullable: true type: boolean enforce_zdr_other: description: >- Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. 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 ImageEndpoint: description: An endpoint that serves a given image model. example: allowed_passthrough_parameters: [] pricing: - billable: output_image cost_usd: 0.05 unit: image provider_name: Bytedance provider_slug: bytedance provider_tag: bytedance supported_parameters: resolution: type: enum values: - 1K - 2K - 4K seed: type: boolean supports_streaming: false properties: allowed_passthrough_parameters: description: Provider-specific options accepted under provider.options[provider_slug]. example: [] items: type: string type: array pricing: description: Billable pricing lines for this endpoint. example: - billable: output_image cost_usd: 0.05 unit: image items: $ref: '#/components/schemas/ImagePricingEntry' type: array provider_name: description: Provider display name example: Bytedance type: string provider_slug: description: Provider slug example: bytedance type: string provider_tag: description: Provider tag for request-side selection example: bytedance nullable: true type: string supported_parameters: allOf: - $ref: '#/components/schemas/SupportedParameters' - description: The definitive set of parameters this endpoint accepts for this model. supports_streaming: description: 'Whether this endpoint supports native SSE streaming (`stream: true` in the request).' example: false type: boolean required: - provider_name - provider_slug - provider_tag - supported_parameters - allowed_passthrough_parameters - supports_streaming - pricing 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 ImageGenCompletedEvent: description: Emitted when generation completes and the final image is available example: b64_json: created: 1748372400 type: image_generation.completed usage: completion_tokens: 4175 cost: 0.04 prompt_tokens: 0 total_tokens: 4175 properties: b64_json: description: Base64-encoded final image data type: string created: description: Unix timestamp (seconds) when the image was generated type: integer media_type: description: >- Media type (MIME type) of the image. Omitted when the output is a standard raster format (PNG). Present for non-raster outputs such as SVG (`image/svg+xml`). example: image/svg+xml type: string type: description: The event type enum: - image_generation.completed type: string usage: $ref: '#/components/schemas/ImageGenerationUsage' required: - type - b64_json - created type: object ImageGenerationRequest: description: Image generation request input example: model: bytedance-seed/seedream-4.5 prompt: a red panda astronaut floating in space, studio lighting properties: aspect_ratio: description: Normalized aspect ratio of the generated image. Providers clamp to their supported subset. enum: - '1:1' - '1:2' - '1:4' - '1:8' - '2:1' - '2:3' - '3:2' - '3:4' - '4:1' - '4:3' - '4:5' - '5:4' - '8:1' - '9:16' - '16:9' - '9:19.5' - 19.5:9 - '9:20' - '20:9' - '9:21' - '21:9' - auto example: '16:9' type: string background: description: Background treatment. `transparent` requires an output_format that supports alpha (png or webp). enum: - auto - transparent - opaque example: auto type: string input_references: description: Reference images to guide image-to-image generation, as base64 data URLs or HTTP(S) URLs. items: $ref: '#/components/schemas/ContentPartImage' maxItems: 16 type: array model: description: The image generation model to use example: bytedance-seed/seedream-4.5 type: string 'n': description: Number of images to generate (1-10). Providers that only support single-image generation reject n > 1. example: 1 type: integer output_compression: description: Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. example: 100 type: integer output_format: description: >- Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. enum: - png - jpeg - webp - svg example: png type: string prompt: description: Text description of the desired image example: a red panda astronaut floating in space, studio lighting minLength: 1 type: string provider: description: Provider-specific passthrough configuration properties: options: allOf: - $ref: '#/components/schemas/ProviderOptions' - example: black-forest-labs: guidance: 3 steps: 40 type: object quality: description: Rendering quality. Providers without a quality knob ignore this. enum: - auto - low - medium - high example: high type: string resolution: description: Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. enum: - '512' - 1K - 2K - 4K example: 2K 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: >- Optional. A convenience shorthand for output dimensions — pass a tier ("2K", "4K") or explicit pixels ("2048x2048") and we normalize it to the right dimensions for the chosen provider. Interchangeable with resolution + aspect_ratio; use those directly for enumerated, per-model discoverable values. Conflicting size + resolution/aspect_ratio is rejected. example: 2K type: string stream: description: >- If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response. type: boolean required: - model - prompt type: object ImageGenerationResponse: description: Image generation response example: created: 1748372400 data: - b64_json: usage: completion_tokens: 4175 cost: 0.04 prompt_tokens: 0 total_tokens: 4175 properties: created: description: Unix timestamp (seconds) when the image was generated example: 1748372400 type: integer data: description: Generated images items: properties: b64_json: description: Base64-encoded image bytes type: string media_type: description: >- Media type (MIME type) of the image. Omitted when the output is a standard raster format (PNG). Present for non-raster outputs such as SVG (`image/svg+xml`). example: image/svg+xml type: string required: - b64_json type: object type: array usage: $ref: '#/components/schemas/ImageGenerationUsage' required: - created - data type: object 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-5-image 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 ImageGenerationUsage: description: Token and cost usage for the image generation request, when available example: completion_tokens: 4175 cost: 0.04 prompt_tokens: 0 total_tokens: 4175 properties: completion_tokens: description: The tokens generated type: integer completion_tokens_details: nullable: true properties: audio_tokens: description: Tokens generated by the model for audio output. nullable: true type: integer image_tokens: description: Tokens generated by the model for image output. nullable: true type: integer reasoning_tokens: description: Tokens generated by the model for reasoning. 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 iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' nullable: true type: array prompt_tokens: description: Including images, input audio, and tools if any type: integer prompt_tokens_details: description: Breakdown of tokens used in the prompt. nullable: true properties: audio_tokens: description: Tokens used for input audio. nullable: true type: integer cache_write_tokens: description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing. nullable: true type: integer cached_tokens: description: Tokens cached by the endpoint. nullable: true type: integer file_tokens: description: Tokens used for input files/documents. nullable: true type: integer video_tokens: description: Tokens used for input video. nullable: true type: integer type: object server_tool_use: description: Usage for server-side tool execution (e.g., web search) nullable: true properties: tool_calls_executed: description: Number of OpenRouter server tool calls that executed and produced a result. nullable: true type: integer tool_calls_requested: description: >- Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here. nullable: true type: integer web_search_requests: description: >- Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two. nullable: true type: integer type: object service_tier: description: The service tier used by the upstream provider for this request nullable: true type: string speed: $ref: '#/components/schemas/AnthropicSpeed' total_tokens: description: Sum of the above two fields type: integer required: - prompt_tokens - completion_tokens - total_tokens type: object ImageGenPartialImageEvent: description: Emitted when a partial image becomes available during streaming generation example: b64_json: partial_image_index: 0 type: image_generation.partial_image properties: b64_json: description: Base64-encoded partial image data type: string partial_image_index: description: 0-based index indicating which partial image this is in the sequence type: integer type: description: The event type enum: - image_generation.partial_image type: string required: - type - partial_image_index - b64_json type: object ImageGenStreamErrorEvent: description: Emitted when streaming generation fails after the SSE response starts example: error: code: upstream_error message: The upstream provider returned an error param: null type: provider_error type: error properties: error: description: Provider error details properties: code: description: Provider error code, when supplied nullable: true type: string message: description: Provider error message type: string param: description: Request parameter associated with the error, when supplied nullable: true type: string type: description: Provider error type, when supplied nullable: true type: string required: - message type: object type: description: The event type enum: - error type: string required: - type - error type: object ImageModelArchitecture: example: input_modalities: - text - image output_modalities: - image properties: input_modalities: description: Supported input modalities items: $ref: '#/components/schemas/InputModality' type: array output_modalities: description: Supported output modalities items: $ref: '#/components/schemas/ImageOutputModality' type: array required: - input_modalities - output_modalities type: object ImageModelEndpointsResponse: description: The full per-endpoint records for an image model. example: endpoints: - allowed_passthrough_parameters: [] pricing: - billable: output_image cost_usd: 0.05 unit: image provider_name: Bytedance provider_slug: bytedance provider_tag: bytedance supported_parameters: resolution: type: enum values: - 1K - 2K - 4K supports_streaming: false id: bytedance-seed/seedream-4.5 properties: endpoints: items: $ref: '#/components/schemas/ImageEndpoint' type: array id: description: Model slug example: bytedance-seed/seedream-4.5 type: string required: - id - endpoints type: object ImageModelListItem: description: A single image model in the discovery listing. example: architecture: input_modalities: - text - image output_modalities: - image created: 1692901234 description: A text-to-image model. endpoints: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints id: bytedance-seed/seedream-4.5 name: Seedream 4.5 supported_parameters: resolution: type: enum values: - 1K - 2K - 4K seed: type: boolean supports_streaming: false properties: architecture: $ref: '#/components/schemas/ImageModelArchitecture' created: description: Unix timestamp (seconds) of when the model was created example: 1692901234 type: integer description: example: A text-to-image model. type: string endpoints: description: Relative URL to the full per-endpoint records for this model example: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints type: string id: description: Model slug example: bytedance-seed/seedream-4.5 type: string name: description: Display name example: Seedream 4.5 type: string supported_parameters: $ref: '#/components/schemas/SupportedParameters' supports_streaming: description: >- Whether any endpoint of this model supports native SSE streaming on the dedicated Image API (i.e. `stream: true` in the request). OR across endpoints. example: false type: boolean required: - id - name - description - created - architecture - supported_parameters - supports_streaming - endpoints type: object ImageModelsListResponse: description: List of image generation models. example: data: - architecture: input_modalities: - text output_modalities: - image created: 1692901234 description: A text-to-image model. endpoints: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints id: bytedance-seed/seedream-4.5 name: Seedream 4.5 supported_parameters: resolution: type: enum values: - 1K - 2K - 4K supports_streaming: false properties: data: items: $ref: '#/components/schemas/ImageModelListItem' type: array required: - data type: object ImageOutputModality: enum: - text - image - embeddings - audio - video - rerank - speech - transcription example: image type: string ImagePricingEntry: description: One billable pricing line for an image provider. example: billable: output_image cost_usd: 0.05 unit: image properties: billable: enum: - output_image - input_image - input_font - input_reference - input_text type: string cost_usd: format: double type: number unit: enum: - image - megapixel - token type: string variant: type: string required: - billable - unit - cost_usd type: object ImageStreamingResponse: example: data: b64_json: partial_image_index: 0 type: image_generation.partial_image properties: data: anyOf: - $ref: '#/components/schemas/ImageGenPartialImageEvent' - $ref: '#/components/schemas/ImageGenCompletedEvent' - $ref: '#/components/schemas/ImageGenStreamErrorEvent' required: - data type: object 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 - original 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 InputReference: description: >- A reference asset used to guide video generation. Image references are supported by all providers; audio and video references are only honored by providers that support them (currently BytePlus Seedance 2.0). discriminator: mapping: audio_url: '#/components/schemas/ContentPartAudio' image_url: '#/components/schemas/ContentPartImage' video_url: '#/components/schemas/ContentPartVideo' propertyName: type example: image_url: url: https://example.com/image.png type: image_url oneOf: - $ref: '#/components/schemas/ContentPartImage' - $ref: '#/components/schemas/ContentPartAudio' - $ref: '#/components/schemas/ContentPartVideo' 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' - $ref: '#/components/schemas/ApplyPatchCallItem' - $ref: '#/components/schemas/ApplyPatchCallOutputItem' - 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/OutputCustomToolCallItem' - $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' - $ref: '#/components/schemas/OutputFusionServerToolItem' - $ref: '#/components/schemas/OutputAdvisorServerToolItem' - $ref: '#/components/schemas/OutputSubagentServerToolItem' - $ref: '#/components/schemas/OutputFilesServerToolItem' - $ref: '#/components/schemas/LocalShellCallItem' - $ref: '#/components/schemas/LocalShellCallOutputItem' - $ref: '#/components/schemas/ShellCallItem' - $ref: '#/components/schemas/ShellCallOutputItem' - $ref: '#/components/schemas/McpListToolsItem' - $ref: '#/components/schemas/McpApprovalRequestItem' - $ref: '#/components/schemas/McpApprovalResponseItem' - $ref: '#/components/schemas/McpCallItem' - $ref: '#/components/schemas/CustomToolCallItem' - $ref: '#/components/schemas/CustomToolCallOutputItem' - $ref: '#/components/schemas/CompactionItem' - $ref: '#/components/schemas/ItemReferenceItem' 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 ItemReferenceItem: description: A reference to a previous response item by ID example: id: msg-abc123 type: item_reference properties: id: type: string type: enum: - item_reference type: string required: - type - id 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, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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 ListBYOKKeysResponse: example: data: - allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 total_count: 1 properties: data: description: List of BYOK credentials. items: $ref: '#/components/schemas/BYOKKey' type: array total_count: description: Total number of BYOK credentials matching the filters. example: 1 type: integer required: - data - total_count 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 content_filter_builtins: - action: redact label: '[EMAIL]' slug: email content_filters: null created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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 ListObservabilityDestinationsResponse: example: data: - api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 total_count: 1 properties: data: description: List of observability destinations. items: $ref: '#/components/schemas/ObservabilityDestination' type: array total_count: description: Total number of destinations matching the filters. example: 1 type: integer required: - data - total_count type: object ListPresetsResponse: description: A paginated list of presets. example: data: - created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 total_count: 1 properties: data: items: $ref: '#/components/schemas/Preset' type: array total_count: type: integer required: - data - total_count type: object ListPresetVersionsResponse: description: A paginated list of preset versions. example: data: - config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 total_count: 1 properties: data: items: $ref: '#/components/schemas/PresetDesignatedVersion' type: array total_count: type: integer required: - data - total_count type: object ListWorkspaceBudgetsResponse: example: data: - created_at: '2025-08-24T10:30:00Z' id: 770e8400-e29b-41d4-a716-446655440000 limit_usd: 100 reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: description: List of budgets configured for the workspace items: $ref: '#/components/schemas/WorkspaceBudget' type: array required: - data type: object ListWorkspaceMembersResponse: example: 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 total_count: 1 properties: data: description: List of workspace members items: $ref: '#/components/schemas/WorkspaceMember' type: array total_count: description: Total number of members in the workspace example: 5 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 LocalShellCallItem: description: A local shell command execution call example: action: command: - ls - '-la' env: PATH: /usr/bin timeout_ms: 5000 type: exec call_id: call-abc123 id: shell-abc123 status: completed type: local_shell_call properties: action: properties: command: items: type: string type: array env: additionalProperties: type: string type: object timeout_ms: nullable: true type: integer type: enum: - exec type: string user: nullable: true type: string working_directory: nullable: true type: string required: - type - command - env type: object call_id: type: string id: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - local_shell_call type: string required: - type - id - call_id - action - status type: object LocalShellCallOutputItem: description: Output from a local shell command execution example: id: output-abc123 output: |- total 24 drwxr-xr-x 5 user staff 160 Jan 1 12:00 . status: completed type: local_shell_call_output properties: id: type: string output: type: string status: allOf: - $ref: '#/components/schemas/ToolCallStatus' - nullable: true type: enum: - local_shell_call_output type: string required: - type - id - output type: object McpApprovalRequestItem: description: Request for approval to execute an MCP tool example: arguments: '{"id":"123"}' id: approval-abc123 name: delete_record server_label: database-server type: mcp_approval_request properties: arguments: type: string id: type: string name: type: string server_label: type: string type: enum: - mcp_approval_request type: string required: - type - id - name - arguments - server_label type: object McpApprovalResponseItem: description: User response to an MCP tool approval request example: approval_request_id: approval-abc123 approve: true reason: Approved for execution type: mcp_approval_response properties: approval_request_id: type: string approve: type: boolean id: nullable: true type: string reason: nullable: true type: string type: enum: - mcp_approval_response type: string required: - type - approval_request_id - approve type: object McpCallItem: description: An MCP tool call with its output or error example: arguments: '{"query":"SELECT * FROM users"}' id: mcp-call-abc123 name: query_database output: '[{"id":1,"name":"Alice"}]' server_label: database-server type: mcp_call properties: arguments: type: string error: nullable: true type: string id: type: string name: type: string output: nullable: true type: string server_label: type: string type: enum: - mcp_call type: string required: - type - id - name - arguments - server_label type: object McpListToolsItem: description: List of available MCP tools from a server example: id: mcp-list-abc123 server_label: database-server tools: - description: Execute a database query input_schema: properties: query: type: string type: object name: query_database type: mcp_list_tools properties: error: nullable: true type: string id: type: string server_label: type: string tools: items: properties: annotations: nullable: true description: nullable: true type: string input_schema: additionalProperties: nullable: true type: object name: type: string required: - name - input_schema type: object type: array type: enum: - mcp_list_tools type: string required: - type - id - server_label - tools 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 MessagesAdvisorToolResultBlock: description: >- Advisor tool result from a prior assistant turn, replayed back to the model on the next turn. Mirrors the block Anthropic returns in assistant content when the `advisor_20260301` tool runs. example: content: text: Advisor response text type: advisor_result tool_use_id: srvtoolu_01abc type: advisor_tool_result properties: content: additionalProperties: nullable: true type: object tool_use_id: type: string type: enum: - advisor_tool_result type: string required: - type - tool_use_id - content 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/ORAnthropicServerToolUseBlock' - $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' - $ref: '#/components/schemas/AnthropicAdvisorToolResult' - 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 output_tokens_details: $ref: '#/components/schemas/AnthropicOutputTokensDetails' 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 - output_tokens_details - cache_creation_input_tokens - cache_read_input_tokens - server_tool_use type: object required: - type - delta - usage type: object MessagesErrorDetail: example: error_type: invalid_request message: Invalid request parameters type: invalid_request_error properties: error_type: $ref: '#/components/schemas/ApiErrorType' message: type: string type: type: string required: - type - message type: object MessagesErrorEvent: description: Error event in the stream example: error: error_type: provider_overloaded message: Overloaded type: overloaded_error type: error properties: error: properties: error_type: $ref: '#/components/schemas/ApiErrorType' message: type: string type: type: string required: - type - message type: object openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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 MessagesFallbackParam: additionalProperties: nullable: true description: >- Fallback model to try when the primary model fails or refuses. Only the `model` field is supported; per-attempt overrides are rejected. example: model: claude-opus-4-8 properties: model: type: string required: - model 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: type: string 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 - $ref: '#/components/schemas/MessagesAdvisorToolResultBlock' type: array role: enum: - user - assistant - system 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 fallbacks: description: >- Fallback models to try if the primary model fails or refuses, in order. Handled by OpenRouter multi-model routing rather than Anthropic server-side fallbacks; cannot be combined with `models`. Each entry accepts only `model`. Maximum of 3 entries. example: - model: claude-opus-4-8 items: $ref: '#/components/schemas/MessagesFallbackParam' nullable: true type: array 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' fusion: '#/components/schemas/FusionPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/WebFetchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' type: array provider: $ref: '#/components/schemas/ProviderPreferences' route: $ref: '#/components/schemas/DeprecatedRoute' service_tier: type: string session_id: description: >- A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. 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 stop_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' 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: $ref: '#/components/schemas/AnthropicAllowedCallers' 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 - properties: allowed_callers: $ref: '#/components/schemas/AnthropicAllowedCallers' cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' caching: allOf: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - nullable: true defer_loading: type: boolean max_uses: type: integer model: type: string name: enum: - advisor type: string type: enum: - advisor_20260301 type: string required: - type - name - model type: object - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - additionalProperties: nullable: true properties: type: type: string required: - type type: object 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 openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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: [] 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 - 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 - Crucible - Crusoe - Darkbloom - Decart - DeepInfra - DeepSeek - DekaLLM - DigitalOcean - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - HeyGen - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inferact vLLM - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perceptron - Perplexity - Phala - Recraft - Reka - Relace - Sakana AI - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Tenstorrent - Together - Upstage - Venice - Wafer - WandB - Quiver - 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: openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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' MessagesStreamingResponse: example: data: delta: text: Hello type: text_delta index: 0 type: content_block_delta event: content_block_delta properties: data: $ref: '#/components/schemas/MessagesStreamEvents' event: type: string required: - event - data type: object MetadataLevel: description: Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`. enum: - disabled - enabled example: enabled type: string 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' reasoning: default_effort: medium default_enabled: true mandatory: false supported_efforts: - high - medium - low - minimal 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' benchmarks: $ref: '#/components/schemas/ModelBenchmarks' 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' reasoning: $ref: '#/components/schemas/ModelReasoning' 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 ModelBenchmarks: description: Third-party benchmark rankings for this model. Omitted when no benchmark data is available. example: artificial_analysis: agentic_index: 55.8 coding_index: 63.2 intelligence_index: 71.4 design_arena: - arena: models category: website elo: 1385.2 rank: 5 win_rate: 62.5 properties: artificial_analysis: $ref: '#/components/schemas/AABenchmarkEntry' design_arena: description: Design Arena ELO rankings across arena+category pairs. example: - arena: models category: website elo: 1385.2 rank: 5 win_rate: 62.5 items: $ref: '#/components/schemas/DABenchmarkEntry' type: array required: - design_arena 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 ModelReasoning: description: Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models. example: default_effort: medium default_enabled: true mandatory: false supported_efforts: - high - medium - low - minimal properties: default_effort: allOf: - $ref: '#/components/schemas/ReasoningEffort' - description: >- Default reasoning effort when the client enables reasoning without specifying effort. Maps to `reasoning.effort` in chat requests. When `"none"`, prefer omitting effort unless the user explicitly disables reasoning. default_enabled: description: Default reasoning enabled state when the client does not set `reasoning.enabled`. type: boolean mandatory: description: When true, reasoning cannot be disabled and effort "none" is rejected. type: boolean supported_efforts: description: >- Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted. items: $ref: '#/components/schemas/ReasoningEffort' nullable: true type: array supports_max_tokens: description: >- Present and `true` when the model accepts `reasoning.max_tokens` in requests (Anthropic-style) instead of or in addition to `reasoning.effort`. Omitted otherwise. type: boolean required: - mandatory type: object ModelResponse: description: Single model response example: data: architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT context_length: 8192 created: 1692901234 description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. id: openai/gpt-4 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 top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 properties: data: $ref: '#/components/schemas/Model' required: - data type: object 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 MultimodalMedia: example: data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA... format: wav properties: data: type: string format: type: string required: - data type: object NotFoundResponse: description: Not Found - Resource does not exist example: error: code: 404 message: Resource not found properties: error: $ref: '#/components/schemas/NotFoundResponseErrorData' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 ObservabilityArizeDestination: example: api_key_hashes: null config: apiKey: arize_...AbCd baseUrl: https://otlp.arize.com modelId: openrouter-prod spaceKey: space_...EfGh created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Arize privacy_mode: false sampling_rate: 1 type: arize updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string baseUrl: default: https://otlp.arize.com type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object modelId: description: The name of the tracing project in Arize AX minLength: 1 type: string spaceKey: minLength: 1 type: string required: - apiKey - spaceKey - modelId type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - arize type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityBraintrustDestination: example: api_key_hashes: null config: apiKey: sk-...AbCd baseUrl: https://api.braintrust.dev projectId: proj_... created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Braintrust privacy_mode: false sampling_rate: 1 type: braintrust updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string baseUrl: default: https://api.braintrust.dev type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object projectId: minLength: 1 type: string required: - apiKey - projectId type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - braintrust type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityClickhouseDestination: example: api_key_hashes: null config: database: analytics host: https://clickhouse.example.com:8123 password: '********' table: OPENROUTER_TRACES username: default created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production ClickHouse privacy_mode: false sampling_rate: 1 type: clickhouse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: database: minLength: 1 type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object host: minLength: 1 type: string password: minLength: 1 type: string table: default: OPENROUTER_TRACES type: string username: description: If you have not set a specific username in ClickHouse, simply type in 'default' below. minLength: 1 type: string required: - host - database - username - password type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - clickhouse type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityDatadogDestination: example: api_key_hashes: null config: apiKey: '************...AbCd' mlApp: my-llm-app url: https://api.us5.datadoghq.com created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Datadog privacy_mode: false sampling_rate: 1 type: datadog updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: description: 'Datadog API key must have LLM Observability permissions. Create at: ' minLength: 1 type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object mlApp: description: Name to identify your application in Datadog LLM Observability minLength: 1 type: string url: default: https://api.us5.datadoghq.com description: >- Datadog API URL for your region (e.g., https://api.datadoghq.com, https://api.us3.datadoghq.com, https://api.datadoghq.eu) type: string required: - apiKey - mlApp type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - datadog type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityDestination: discriminator: mapping: arize: '#/components/schemas/ObservabilityArizeDestination' braintrust: '#/components/schemas/ObservabilityBraintrustDestination' clickhouse: '#/components/schemas/ObservabilityClickhouseDestination' datadog: '#/components/schemas/ObservabilityDatadogDestination' grafana: '#/components/schemas/ObservabilityGrafanaDestination' langfuse: '#/components/schemas/ObservabilityLangfuseDestination' langsmith: '#/components/schemas/ObservabilityLangsmithDestination' newrelic: '#/components/schemas/ObservabilityNewrelicDestination' opik: '#/components/schemas/ObservabilityOpikDestination' otel-collector: '#/components/schemas/ObservabilityOtelCollectorDestination' posthog: '#/components/schemas/ObservabilityPosthogDestination' ramp: '#/components/schemas/ObservabilityRampDestination' s3: '#/components/schemas/ObservabilityS3Destination' sentry: '#/components/schemas/ObservabilitySentryDestination' snowflake: '#/components/schemas/ObservabilitySnowflakeDestination' weave: '#/components/schemas/ObservabilityWeaveDestination' webhook: '#/components/schemas/ObservabilityWebhookDestination' propertyName: type example: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 oneOf: - $ref: '#/components/schemas/ObservabilityArizeDestination' - $ref: '#/components/schemas/ObservabilityBraintrustDestination' - $ref: '#/components/schemas/ObservabilityClickhouseDestination' - $ref: '#/components/schemas/ObservabilityDatadogDestination' - $ref: '#/components/schemas/ObservabilityGrafanaDestination' - $ref: '#/components/schemas/ObservabilityLangfuseDestination' - $ref: '#/components/schemas/ObservabilityLangsmithDestination' - $ref: '#/components/schemas/ObservabilityNewrelicDestination' - $ref: '#/components/schemas/ObservabilityOpikDestination' - $ref: '#/components/schemas/ObservabilityOtelCollectorDestination' - $ref: '#/components/schemas/ObservabilityPosthogDestination' - $ref: '#/components/schemas/ObservabilityRampDestination' - $ref: '#/components/schemas/ObservabilityS3Destination' - $ref: '#/components/schemas/ObservabilitySentryDestination' - $ref: '#/components/schemas/ObservabilitySnowflakeDestination' - $ref: '#/components/schemas/ObservabilityWeaveDestination' - $ref: '#/components/schemas/ObservabilityWebhookDestination' ObservabilityFilterRulesConfig: description: Optional structured filter rules controlling which events are forwarded. example: null nullable: true properties: enabled: default: true type: boolean groups: items: properties: logic: default: and enum: - and - or type: string rules: items: properties: field: enum: - model - provider - session_id - user_id - api_key_name - finish_reason - input - output - total_cost - total_tokens - prompt_tokens - completion_tokens type: string operator: enum: - equals - not_equals - contains - not_contains - regex - starts_with - ends_with - gt - lt - gte - lte - exists - not_exists type: string value: anyOf: - type: string - type: number required: - field - operator type: object type: array required: - rules type: object type: array required: - groups type: object ObservabilityGrafanaDestination: example: api_key_hashes: null config: apiKey: glc_...AbCd baseUrl: https://otlp-gateway-prod-us-west-0.grafana.net instanceId: '123456' created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Grafana privacy_mode: false sampling_rate: 1 type: grafana updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string baseUrl: default: https://otlp-gateway-prod-us-west-0.grafana.net type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object instanceId: minLength: 1 type: string required: - apiKey - instanceId type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - grafana type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityLangfuseDestination: example: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: baseUrl: default: https://us.cloud.langfuse.com type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object publicKey: minLength: 1 type: string secretKey: minLength: 1 type: string required: - secretKey - publicKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - langfuse type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityLangsmithDestination: example: api_key_hashes: null config: apiKey: lsv2_...AbCd endpoint: https://api.smith.langchain.com project: main created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production LangSmith privacy_mode: false sampling_rate: 1 type: langsmith updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string endpoint: default: https://api.smith.langchain.com type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object project: default: main description: The name for this project, such as pr-openrouter-demo. Defaults to "main" if not set. minLength: 1 type: string workspaceId: description: Required for org-scoped API keys. Find this in your LangSmith workspace settings. type: string required: - apiKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - langsmith type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityNewrelicDestination: example: api_key_hashes: null config: licenseKey: '****...AbCd' region: US created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production New Relic privacy_mode: false sampling_rate: 1 type: newrelic updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object licenseKey: minLength: 1 type: string region: default: us enum: - us - eu type: string required: - licenseKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - newrelic type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityOpikDestination: example: api_key_hashes: null config: apiKey: '****...AbCd' projectName: openrouter-prod workspace: my-workspace created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Opik privacy_mode: false sampling_rate: 1 type: opik updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object projectName: minLength: 1 type: string workspace: minLength: 1 type: string required: - apiKey - workspace - projectName type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - opik type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityOtelCollectorDestination: example: api_key_hashes: null config: endpoint: https://otel.example.com:4318 created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production OTel Collector privacy_mode: false sampling_rate: 1 type: otel-collector updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: endpoint: type: string headers: additionalProperties: type: string description: >- Custom HTTP headers as a JSON object. For Axiom, use {"Authorization": "Bearer xaat-xxx", "X-Axiom-Dataset": "your-dataset"} type: object required: - endpoint type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - otel-collector type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityPosthogDestination: example: api_key_hashes: null config: apiKey: phc_...AbCd endpoint: https://us.i.posthog.com created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production PostHog privacy_mode: false sampling_rate: 1 type: posthog updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string endpoint: default: https://us.i.posthog.com type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object required: - apiKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - posthog type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityRampDestination: example: api_key_hashes: null config: apiKey: rmp_...AbCd baseUrl: https://api.ramp.com/developer/v1/ai-usage/openrouter created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Ramp privacy_mode: false sampling_rate: 1 type: ramp updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: description: Generate this in your Ramp integration settings. minLength: 1 type: string baseUrl: default: https://api.ramp.com/developer/v1/ai-usage/openrouter type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to Ramp. type: object required: - apiKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - ramp type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityS3Destination: example: api_key_hashes: null config: accessKeyId: AKIA...AbCd bucketName: openrouter-traces secretAccessKey: '****...EfGh' created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production S3 privacy_mode: false sampling_rate: 1 type: s3 updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: accessKeyId: minLength: 1 type: string bucketName: minLength: 1 type: string endpoint: description: >- Only for S3-compatible services like Cloudflare R2 (https://account-id.r2.cloudflarestorage.com) or MinIO. Leave blank for standard AWS S3. format: uri type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object pathTemplate: default: '{prefix}/{date}' description: >- Template for S3 object path. The filename ({traceId}-{timestamp}.json) is automatically appended. Available variables: {prefix}, {date}, {year}, {month}, {day}, {apiKeyName} type: string prefix: default: openrouter-traces type: string region: type: string secretAccessKey: minLength: 1 type: string sessionToken: type: string required: - bucketName - accessKeyId - secretAccessKey type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - s3 type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilitySentryDestination: example: api_key_hashes: null config: otlpEndpoint: https://o0.ingest.sentry.io/api/0/otlp created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Sentry privacy_mode: false sampling_rate: 1 type: sentry updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: dsn: minLength: 1 pattern: ^https:\/\/([^:@]+)(?::[^@]*)?@([^/]+)(?:\/[^/]+)*\/(\d+)\/?$ type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object otlpEndpoint: type: string required: - otlpEndpoint - dsn type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - sentry type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilitySnowflakeDestination: example: api_key_hashes: null config: account: xy12345.us-east-1 token: '****...AbCd' created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Snowflake privacy_mode: false sampling_rate: 1 type: snowflake updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: account: minLength: 1 type: string database: default: SNOWFLAKE_LEARNING_DB type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object schema: default: PUBLIC type: string table: default: OPENROUTER_TRACES type: string token: minLength: 1 type: string warehouse: default: COMPUTE_WH type: string required: - account - token type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - snowflake type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityWeaveDestination: example: api_key_hashes: null config: apiKey: '****...AbCd' baseUrl: https://trace.wandb.ai entity: my-team project: openrouter-prod created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Weave privacy_mode: false sampling_rate: 1 type: weave updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: apiKey: minLength: 1 type: string baseUrl: default: https://trace.wandb.ai type: string entity: minLength: 1 type: string headers: additionalProperties: type: string description: Custom HTTP headers to include in requests to this destination. type: object project: minLength: 1 type: string required: - apiKey - entity - project type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - weave type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object ObservabilityWebhookDestination: example: api_key_hashes: null config: url: https://example.com/openrouter-events created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Webhook privacy_mode: false sampling_rate: 1 type: webhook updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. example: null items: type: string nullable: true type: array config: properties: headers: additionalProperties: type: string type: object method: default: POST enum: - POST - PUT type: string url: type: string required: - url type: object created_at: description: ISO timestamp of when the destination was created. example: '2025-08-24T10:30:00Z' type: string enabled: description: Whether this destination is currently enabled. example: true type: boolean filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfig' id: description: Stable public identifier for this destination. example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string name: description: Human-readable name for the destination. example: Production Langfuse nullable: true type: string privacy_mode: description: When true, request/response bodies are not forwarded to this destination — only metadata. example: false type: boolean sampling_rate: description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: enum: - webhook type: string updated_at: description: ISO timestamp of when the destination was last updated. example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace this destination belongs to. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - name - enabled - privacy_mode - sampling_rate - api_key_hashes - filter_rules - created_at - updated_at - type - config type: object OpenAIResponseCustomToolCall: example: call_id: call-abc123 id: ctc-abc123 input: |- *** Begin Patch *** End Patch name: apply_patch type: custom_tool_call properties: call_id: type: string id: type: string input: type: string name: type: string namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) type: string type: enum: - custom_tool_call type: string required: - type - call_id - name - input type: object OpenAIResponseCustomToolCallOutput: example: call_id: call-abc123 output: patch applied successfully type: custom_tool_call_output properties: call_id: type: string id: 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 type: enum: - custom_tool_call_output type: string required: - type - call_id - output 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 namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) 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' - properties: type: enum: - apply_patch type: string required: - type type: object - properties: type: enum: - shell type: string required: - type type: object 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: error_type: $ref: '#/components/schemas/ApiErrorType' openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' 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 OpenRouterMetadata: example: attempt: 1 endpoints: available: - model: openai/gpt-4o provider: OpenAI selected: true total: 1 is_byok: false region: iad requested: openai/gpt-4o strategy: direct summary: available=1, selected=OpenAI properties: attempt: type: integer attempts: items: $ref: '#/components/schemas/RouterAttempt' type: array endpoints: $ref: '#/components/schemas/EndpointsMetadata' is_byok: type: boolean params: $ref: '#/components/schemas/RouterParams' pipeline: items: $ref: '#/components/schemas/PipelineStage' type: array region: nullable: true type: string requested: type: string strategy: $ref: '#/components/schemas/RoutingStrategy' summary: type: string required: - requested - strategy - region - summary - attempt - is_byok - endpoints 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: advisor_tool_result: '#/components/schemas/AnthropicAdvisorToolResult' 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/ORAnthropicServerToolUseBlock' 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/ORAnthropicServerToolUseBlock' - $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' - $ref: '#/components/schemas/AnthropicAdvisorToolResult' ORAnthropicNullableCaller: discriminator: mapping: code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' direct: '#/components/schemas/AnthropicDirectCaller' propertyName: type example: null oneOf: - $ref: '#/components/schemas/AnthropicDirectCaller' - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' - nullable: true ORAnthropicServerToolUseBlock: example: caller: null id: srvtoolu_01abc input: {} name: advisor type: server_tool_use properties: caller: $ref: '#/components/schemas/ORAnthropicNullableCaller' id: type: string input: nullable: true name: type: string type: enum: - server_tool_use type: string required: - type - id - name type: object ORAnthropicStopReason: enum: - end_turn - max_tokens - stop_sequence - tool_use - pause_turn - refusal - compaction - null example: end_turn nullable: true type: string OutputAdvisorServerToolItem: description: An openrouter:advisor server tool output item example: id: st_tmp_abc123 status: completed type: openrouter:advisor properties: advice: description: The advisor model's response (the advice text returned to the executor). type: string error: description: Error message when the advisor call did not produce advice. type: string id: type: string instance_name: description: >- Provider-safe function name of the specific advisor instance that produced this item (e.g. `openrouter_advisor__1`). Present only when more than one advisor tool is configured; omitted for the default single advisor. Echo this field back unchanged so the advisor's cross-request memory stays namespaced to the correct instance. This identity is positional: it is derived from the index of the advisor entry in the request `tools` array, so clients must keep the order of advisor tool entries stable across requests in a conversation. Reordering or inserting advisor entries shifts these names and causes each advisor's cross-request memory to be attributed to the wrong instance. example: openrouter_advisor__1 type: string model: description: Slug of the advisor model that was consulted. type: string prompt: description: The prompt the executor sent to the advisor. type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:advisor type: string required: - status - type type: object OutputApplyPatchCallItem: description: >- A native `apply_patch_call` output item matching OpenAI's Responses API shape. Emitted when the client requested the `apply_patch` shorthand. example: call_id: call_abc123 id: apc_abc123 operation: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file status: completed type: apply_patch_call properties: call_id: type: string id: type: string operation: $ref: '#/components/schemas/ApplyPatchCallOperation' status: $ref: '#/components/schemas/ApplyPatchCallStatus' type: enum: - apply_patch_call type: string required: - type - id - call_id - status - operation type: object OutputApplyPatchServerToolItem: description: >- An openrouter:apply_patch server tool output item. The turn halts when validation succeeds so the client can apply the patch and echo an `apply_patch_call_output` on the next turn. example: call_id: call_abc123 id: apc_abc123 operation: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file status: completed type: openrouter:apply_patch properties: call_id: type: string id: type: string operation: $ref: '#/components/schemas/ApplyPatchCallOperation' 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 OutputCustomToolCallItem: description: >- A call to a custom (freeform-grammar) tool created by the model — distinct from `function_call`. Used for tools like Codex CLI's `apply_patch` whose payload is opaque text rather than JSON arguments. example: call_id: call-abc123 id: ctc-abc123 input: |- *** Begin Patch *** End Patch name: apply_patch type: custom_tool_call properties: call_id: type: string id: type: string input: type: string name: type: string namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) type: string type: enum: - custom_tool_call type: string required: - type - name - input - call_id 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 OutputFilesServerToolItem: description: An openrouter:files server tool output item example: filename: notes.txt id: fl_tmp_abc123 operation: read result: '{"id":"file_abc","filename":"notes.txt","content":"hello"}' status: completed type: openrouter:files properties: error: description: Error message when the file operation failed. type: string file_id: description: The target file id supplied in the tool-call arguments. type: string filename: description: The target filename supplied in the tool-call arguments. type: string id: type: string operation: description: The file operation performed (list, read, write, or edit). type: string result: description: JSON-serialized result of the file operation. type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:files 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 OutputFusionServerToolItem: description: An openrouter:fusion server tool output item example: id: st_tmp_abc123 status: completed type: openrouter:fusion properties: analysis: $ref: '#/components/schemas/FusionAnalysisResult' error: description: Error message when the fusion run did not produce an analysis result. type: string failed_models: description: >- Models that were requested as part of the analysis panel but did not produce a response. Present when at least one requested analysis model failed. The fusion result is still usable but was produced from a degraded panel. items: properties: error: description: Error message describing why the model failed. type: string model: description: Slug of the analysis model that failed. type: string status_code: description: HTTP status code from the upstream response, when available (e.g. 402, 429). type: integer required: - model - error type: object type: array failure_reason: description: >- Typed failure reason when the fusion run failed. Possible values include: all_panels_failed, insufficient_credits, rate_limited, judge_not_valid_json, judge_schema_mismatch, judge_upstream_error, judge_empty_completion. type: string id: type: string responses: description: Analysis models that produced a response in this fusion run, with each model's full panel content. items: properties: content: type: string model: type: string required: - model type: object type: array sources: description: >- Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source. items: $ref: '#/components/schemas/FusionSource' type: array status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:fusion type: string required: - status - type type: object 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: apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall' custom_tool_call: '#/components/schemas/OutputItemCustomToolCall' 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/OutputItemCustomToolCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' 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 OutputItemApplyPatchCall: example: call_id: call_abc123 id: apc_abc123 operation: diff: |- @@ function main() { + console.log("hi"); } path: /src/main.ts type: update_file status: completed type: apply_patch_call properties: call_id: type: string created_by: type: string id: type: string operation: discriminator: mapping: create_file: '#/components/schemas/ApplyPatchCreateFileOperation' delete_file: '#/components/schemas/ApplyPatchDeleteFileOperation' update_file: '#/components/schemas/ApplyPatchUpdateFileOperation' propertyName: type oneOf: - $ref: '#/components/schemas/ApplyPatchCreateFileOperation' - $ref: '#/components/schemas/ApplyPatchUpdateFileOperation' - $ref: '#/components/schemas/ApplyPatchDeleteFileOperation' status: enum: - in_progress - completed type: string type: enum: - apply_patch_call type: string required: - type - id - call_id - operation - status type: object OutputItemCustomToolCall: example: call_id: call-abc123 id: ctc-abc123 input: |- *** Begin Patch *** End Patch name: apply_patch type: custom_tool_call properties: call_id: type: string id: type: string input: type: string name: type: string namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) type: string type: enum: - custom_tool_call type: string required: - type - name - input - call_id 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: apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall' custom_tool_call: '#/components/schemas/OutputItemCustomToolCall' 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/OutputItemCustomToolCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' 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 namespace: description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) 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: apply_patch_call: '#/components/schemas/OutputApplyPatchCallItem' code_interpreter_call: '#/components/schemas/OutputCodeInterpreterCallItem' computer_call: '#/components/schemas/OutputComputerCallItem' custom_tool_call: '#/components/schemas/OutputCustomToolCallItem' file_search_call: '#/components/schemas/OutputFileSearchCallItem' function_call: '#/components/schemas/OutputFunctionCallItem' image_generation_call: '#/components/schemas/OutputImageGenerationCallItem' message: '#/components/schemas/OutputMessageItem' openrouter:advisor: '#/components/schemas/OutputAdvisorServerToolItem' 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:files: '#/components/schemas/OutputFilesServerToolItem' openrouter:fusion: '#/components/schemas/OutputFusionServerToolItem' openrouter:image_generation: '#/components/schemas/OutputImageGenerationServerToolItem' openrouter:mcp: '#/components/schemas/OutputMcpServerToolItem' openrouter:memory: '#/components/schemas/OutputMemoryServerToolItem' openrouter:subagent: '#/components/schemas/OutputSubagentServerToolItem' 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' shell_call: '#/components/schemas/OutputShellCallItem' shell_call_output: '#/components/schemas/OutputShellCallOutputItem' 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/OutputApplyPatchCallItem' - $ref: '#/components/schemas/OutputShellCallItem' - $ref: '#/components/schemas/OutputShellCallOutputItem' - $ref: '#/components/schemas/OutputWebFetchServerToolItem' - $ref: '#/components/schemas/OutputToolSearchServerToolItem' - $ref: '#/components/schemas/OutputMemoryServerToolItem' - $ref: '#/components/schemas/OutputMcpServerToolItem' - $ref: '#/components/schemas/OutputSearchModelsServerToolItem' - $ref: '#/components/schemas/OutputFusionServerToolItem' - $ref: '#/components/schemas/OutputAdvisorServerToolItem' - $ref: '#/components/schemas/OutputSubagentServerToolItem' - $ref: '#/components/schemas/OutputFilesServerToolItem' - $ref: '#/components/schemas/OutputCustomToolCallItem' 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 - 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 OutputShellCallItem: description: >- A native `shell_call` output item matching OpenAI's Responses API shape. Emitted for the sandbox-backed `shell` tool. example: action: commands: - echo hello max_output_length: null timeout_ms: null call_id: call_abc123 id: shc_abc123 status: completed type: shell_call properties: action: properties: commands: items: type: string type: array max_output_length: nullable: true type: integer timeout_ms: nullable: true type: integer required: - commands - max_output_length - timeout_ms type: object call_id: type: string id: type: string status: $ref: '#/components/schemas/ShellCallStatus' type: enum: - shell_call type: string required: - type - id - call_id - status type: object OutputShellCallOutputItem: description: >- A native `shell_call_output` item matching OpenAI's Responses API shape. Carries per-command stdout, stderr, and the exit/timeout outcome. example: call_id: call_abc123 id: sho_abc123 output: - outcome: exit_code: 0 type: exit stderr: '' stdout: | hello status: completed type: shell_call_output properties: call_id: type: string id: type: string max_output_length: nullable: true type: integer output: items: properties: outcome: oneOf: - properties: exit_code: type: integer type: enum: - exit type: string required: - type - exit_code type: object - properties: type: enum: - timeout type: string required: - type type: object stderr: type: string stdout: type: string required: - stdout - stderr - outcome type: object type: array status: $ref: '#/components/schemas/ShellCallStatus' type: enum: - shell_call_output type: string required: - type - id - call_id - status - output type: object OutputSubagentServerToolItem: description: An openrouter:subagent server tool output item example: id: st_tmp_abc123 status: completed type: openrouter:subagent properties: error: description: Error message when the subagent task did not produce an outcome. type: string id: type: string model: description: Slug of the worker model that executed the task. type: string outcome: description: The worker model's result (the outcome text returned to the delegating model). type: string status: $ref: '#/components/schemas/ToolCallStatus' task_description: description: The task description the delegating model sent to the worker. type: string task_name: description: The short task identifier the delegating model supplied. type: string type: enum: - openrouter:subagent 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 PipelineStage: example: data: action: redacted engines: - presidio flagged: true matched_entity_types: - EMAIL - PHONE name: content-filter summary: PII redacted via Presidio (EMAIL, PHONE) type: guardrail properties: cost_usd: format: double nullable: true type: number data: additionalProperties: nullable: true type: object guardrail_id: type: string guardrail_scope: type: string name: type: string summary: type: string type: $ref: '#/components/schemas/PipelineStageType' required: - type - name type: object PipelineStageType: description: >- Categorical kind of a pipeline stage. Multiple plugins can share a type (e.g. all guardrail-level plugins emit `guardrail`); the `name` field disambiguates which plugin emitted it. enum: - guardrail - plugin - server_tools - response_healing - context_compression example: guardrail type: string 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 Preset: description: A preset without version details. example: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 properties: created_at: type: string creator_user_id: nullable: true type: string description: nullable: true type: string designated_version_id: nullable: true type: string id: type: string name: type: string slug: type: string status: $ref: '#/components/schemas/PresetStatus' status_updated_at: nullable: true type: string updated_at: type: string workspace_id: nullable: true type: string required: - id - creator_user_id - workspace_id - name - slug - description - status - designated_version_id - created_at - updated_at - status_updated_at type: object PresetDesignatedVersion: description: A specific version of a preset, containing config and optional system prompt. example: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 nullable: true properties: config: additionalProperties: nullable: true type: object created_at: type: string creator_id: type: string id: type: string preset_id: type: string system_prompt: nullable: true type: string updated_at: type: string version: type: integer required: - id - preset_id - creator_id - version - system_prompt - config - created_at - updated_at type: object PresetStatus: description: The status of a preset. enum: - active - disabled - archived example: active type: string PresetWithDesignatedVersion: allOf: - $ref: '#/components/schemas/Preset' - properties: designated_version: $ref: '#/components/schemas/PresetDesignatedVersion' required: - designated_version type: object description: A preset with its currently designated version. example: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 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, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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 PromptInjectionScanScope: description: >- Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages. enum: - user_only - all_messages example: user_only type: string 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 - Crucible - Crusoe - Darkbloom - Decart - DeepInfra - DeepSeek - DekaLLM - DigitalOcean - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - HeyGen - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inferact vLLM - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perceptron - Perplexity - Phala - Recraft - Reka - Relace - Sakana AI - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Tenstorrent - Together - Upstage - Venice - Wafer - WandB - Quiver - Xiaomi - xAI - Z.AI - FakeProvider example: OpenAI type: string ProviderOptions: description: >- Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. 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 crucible: additionalProperties: nullable: true type: object crusoe: additionalProperties: nullable: true type: object darkbloom: additionalProperties: nullable: true type: object decart: additionalProperties: nullable: true type: object deepinfra: additionalProperties: nullable: true type: object deepseek: additionalProperties: nullable: true type: object dekallm: additionalProperties: nullable: true type: object digitalocean: 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 heygen: 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 inferact-vllm: 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 perceptron: additionalProperties: nullable: true type: object perplexity: additionalProperties: nullable: true type: object phala: additionalProperties: nullable: true type: object poolside: additionalProperties: nullable: true type: object quiver: 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 sakana-ai: 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 tenstorrent: 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 wafer: 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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: description: Maximum price in USD per audio unit type: string completion: description: Maximum price in USD per million completion tokens type: string image: description: Maximum price in USD per image type: string prompt: description: Maximum price in USD per million prompt tokens type: string request: description: Maximum price in USD per request type: string 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 format: double 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 - 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 - Crucible - Crusoe - Darkbloom - Decart - DeepInfra - DeepSeek - DekaLLM - DigitalOcean - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - HeyGen - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inferact vLLM - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perceptron - Perplexity - Phala - Recraft - Reka - Relace - Sakana AI - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Tenstorrent - Together - Upstage - Venice - Wafer - WandB - Quiver - Xiaomi - xAI - Z.AI - FakeProvider example: OpenAI type: string status: description: HTTP status code from the provider example: 200 nullable: true type: integer 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: description: Price in USD per audio input token type: string audio_output: description: Price in USD per audio output token type: string completion: description: Price in USD per token for completion (output) generation type: string discount: description: >- Fractional discount applied to this endpoint's pricing; the price is multiplied by (1 - discount) (0 = no discount, 1 = free) format: double type: number image: description: Price in USD per input image type: string image_output: description: Price in USD per output image type: string image_token: description: Price in USD per image token type: string input_audio_cache: description: Price in USD per cached audio input token type: string input_cache_read: description: Price in USD per cached input token (read) type: string input_cache_write: description: >- Price per cache-write token, in USD per token. For providers with multiple cache TTLs (e.g. Anthropic), this is the default (5-minute) cache-write rate. type: string input_cache_write_1h: description: >- Price per 1-hour cache-write token, in USD per token. Only present for providers that price an extended (1-hour) cache TTL separately, such as Anthropic. type: string internal_reasoning: description: Price in USD per internal reasoning token type: string prompt: description: Price in USD per token for prompt (input) processing type: string request: description: Price in USD per request type: string web_search: description: Price in USD per web search type: string 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: description: Price in USD per audio input token type: string audio_output: description: Price in USD per audio output token type: string completion: description: Price in USD per token for completion (output) generation type: string discount: description: >- Fractional discount applied to this endpoint's pricing; the price is multiplied by (1 - discount) (0 = no discount, 1 = free) format: double type: number image: description: Price in USD per input image type: string image_output: description: Price in USD per output image type: string image_token: description: Price in USD per image token type: string input_audio_cache: description: Price in USD per cached audio input token type: string input_cache_read: description: Price in USD per cached input token (read) type: string input_cache_write: description: >- Price per cache-write token, in USD per token. For providers with multiple cache TTLs (e.g. Anthropic), this is the default (5-minute) cache-write rate. type: string input_cache_write_1h: description: >- Price per 1-hour cache-write token, in USD per token. Only present for providers that price an extended (1-hour) cache TTL separately, such as Anthropic. type: string internal_reasoning: description: Price in USD per internal reasoning token type: string prompt: description: Price in USD per token for prompt (input) processing type: string request: description: Price in USD per request type: string web_search: description: Price in USD per web search type: string required: - prompt - completion type: object Quantization: enum: - int4 - int8 - fp4 - fp6 - fp8 - fp16 - bf16 - fp32 - unknown example: fp16 type: string RangeCapability: description: A parameter that accepts any value within an inclusive numeric range. example: max: 100 min: 0 type: range properties: max: type: number min: type: number type: enum: - range type: string required: - type - min - max type: object RankingsDailyItem: example: date: '2026-05-11' model_permaslug: openai/gpt-4o-2024-05-13 total_tokens: '12345678' properties: date: description: UTC calendar date the row is aggregated over (YYYY-MM-DD). example: '2026-05-11' type: string model_permaslug: description: >- Model variant permaslug (e.g. `openai/gpt-4o-2024-05-13`, `openai/gpt-4o-2024-05-13:free`). Non-default variants include a `:variant` suffix and are ranked as their own entry. The reserved value `other` denotes the aggregated row covering every model outside the daily top 50 for that date — always sorted last within its date. example: openai/gpt-4o-2024-05-13 type: string total_tokens: description: >- Sum of `prompt_tokens + completion_tokens` for the day, returned as a decimal string so 64-bit values are not truncated. example: '12345678' type: string required: - date - model_permaslug - total_tokens type: object RankingsDailyMeta: example: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' version: v1 properties: as_of: description: >- ISO-8601 timestamp of when the response was generated. Reflects data-freshness because the underlying materialized view continuously ingests upstream events. example: '2026-05-12T02:00:00Z' type: string end_date: description: Resolved end of the date window (UTC, inclusive). example: '2026-05-11' type: string start_date: description: Resolved start of the date window (UTC, inclusive). example: '2026-04-12' type: string version: description: Dataset version. Field names and grain are stable for the life of `v1`. enum: - v1 type: string required: - as_of - version - start_date - end_date type: object RankingsDailyResponse: example: data: - date: '2026-05-11' model_permaslug: openai/gpt-4o-2024-05-13 total_tokens: '12345678' - date: '2026-05-11' model_permaslug: anthropic/claude-3.5-sonnet-20241022 total_tokens: '9876543' meta: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' version: v1 properties: data: description: >- Up to 51 rows per day — the top 50 public models by `total_tokens` for each UTC calendar date in the window, plus one aggregated `other` row summing every model outside that top 50 (omitted when the long tail is empty). Rows are sorted by `date` ascending, then by `total_tokens` descending, with `other` pinned last within its date. Ties between real models break alphabetically on `model_permaslug` so the order is stable across requests. items: $ref: '#/components/schemas/RankingsDailyItem' type: array meta: $ref: '#/components/schemas/RankingsDailyMeta' required: - data - meta type: object 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: - max - 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' debug: $ref: '#/components/schemas/ChatDebugOptions' 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' fusion: '#/components/schemas/FusionPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/WebFetchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' 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). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. 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_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' 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/AdvisorServerTool_OpenRouter' - $ref: '#/components/schemas/SubagentServerTool_OpenRouter' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/FilesServerTool' - $ref: '#/components/schemas/FusionServerTool_OpenRouter' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/ShellServerTool_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 ResponsesStreamingResponse: example: data: delta: Hello type: response.output_text.delta properties: data: $ref: '#/components/schemas/StreamEvents' required: - data type: object RouterAttempt: example: model: openai/gpt-4o provider: OpenAI status: 200 properties: model: type: string provider: type: string status: type: integer required: - provider - model - status type: object RouterParams: additionalProperties: nullable: true example: version_group: anthropic/claude-sonnet-4 properties: quality_floor: format: double type: number throughput_floor: format: double type: number version_group: type: string type: object RoutingStrategy: enum: - direct - auto - free - latest - alias - fallback - pareto - bodybuilder - fusion example: direct type: string SandboxSleepAfterSeconds: description: >- How long (in seconds) the container stays warm after its last command before sleeping, freeing its capacity slot. Idle-based: each command renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30 days). example: 900 type: integer 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. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set. 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 ShellCallItem: description: A shell command execution call (newer variant) example: action: commands: - ls - '-la' max_output_length: 10000 call_id: call-abc123 status: completed type: shell_call properties: action: properties: commands: items: type: string type: array max_output_length: nullable: true type: integer timeout_ms: nullable: true type: integer required: - commands type: object call_id: type: string environment: nullable: true id: nullable: true type: string status: allOf: - $ref: '#/components/schemas/ToolCallStatus' - nullable: true type: enum: - shell_call type: string required: - type - call_id - action type: object ShellCallOutputItem: description: Output from a shell command execution (newer variant) example: call_id: call-abc123 output: - content: | total 0 type: stdout status: completed type: shell_call_output properties: call_id: type: string id: nullable: true type: string max_output_length: nullable: true type: integer output: items: additionalProperties: nullable: true properties: content: nullable: true type: string exit_code: nullable: true type: integer type: type: string required: - type type: object type: array status: allOf: - $ref: '#/components/schemas/ToolCallStatus' - nullable: true type: enum: - shell_call_output type: string required: - type - call_id - output type: object ShellCallStatus: description: Status of a shell call or its output. enum: - in_progress - completed - incomplete example: completed type: string ShellServerTool: description: Shell tool configuration example: type: shell properties: type: enum: - shell type: string required: - type type: object ShellServerTool_OpenRouter: description: >- OpenRouter built-in server tool: runs shell commands server-side in a sandboxed container (a sandbox-backed clone of OpenAI's hosted shell tool) example: parameters: engine: openrouter environment: type: container_auto type: openrouter:shell properties: parameters: $ref: '#/components/schemas/ShellServerToolConfig' type: enum: - openrouter:shell type: string required: - type type: object ShellServerToolConfig: description: Configuration for the openrouter:shell server tool example: engine: openrouter environment: type: container_auto properties: engine: $ref: '#/components/schemas/ShellServerToolEngine' environment: $ref: '#/components/schemas/ShellServerToolEnvironment' sleep_after_seconds: $ref: '#/components/schemas/SandboxSleepAfterSeconds' type: object ShellServerToolEngine: description: >- Which shell engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) keeps the provider's native hosted shell when available (OpenAI); on other providers the call is routed to the OpenRouter sandbox. enum: - auto - openrouter example: openrouter type: string ShellServerToolEnvironment: description: >- Server-side execution environment for the shell tool. Only container-backed environments are supported; "local" shells are not. discriminator: mapping: container_auto: '#/components/schemas/ContainerAutoEnvironment' container_reference: '#/components/schemas/ContainerReferenceEnvironment' propertyName: type example: type: container_auto oneOf: - $ref: '#/components/schemas/ContainerAutoEnvironment' - $ref: '#/components/schemas/ContainerReferenceEnvironment' 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 StopServerToolsWhen: description: >- Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. example: - step_count: 5 type: step_count_is - max_cost_in_dollars: 0.5 type: max_cost items: $ref: '#/components/schemas/StopServerToolsWhenCondition' minItems: 1 type: array StopServerToolsWhenCondition: description: A single condition that, when met, halts the server-tool agent loop. discriminator: mapping: finish_reason_is: '#/components/schemas/StopServerToolsWhenFinishReasonIs' has_tool_call: '#/components/schemas/StopServerToolsWhenHasToolCall' max_cost: '#/components/schemas/StopServerToolsWhenMaxCost' max_tokens_used: '#/components/schemas/StopServerToolsWhenMaxTokensUsed' step_count_is: '#/components/schemas/StopServerToolsWhenStepCountIs' propertyName: type example: step_count: 5 type: step_count_is oneOf: - $ref: '#/components/schemas/StopServerToolsWhenStepCountIs' - $ref: '#/components/schemas/StopServerToolsWhenHasToolCall' - $ref: '#/components/schemas/StopServerToolsWhenMaxTokensUsed' - $ref: '#/components/schemas/StopServerToolsWhenMaxCost' - $ref: '#/components/schemas/StopServerToolsWhenFinishReasonIs' StopServerToolsWhenFinishReasonIs: description: Stop when the upstream model emits this finish reason (e.g. `length`). example: reason: length type: finish_reason_is properties: reason: minLength: 1 type: string type: enum: - finish_reason_is type: string required: - type - reason type: object StopServerToolsWhenHasToolCall: description: Stop after a tool with this name has been called. example: tool_name: finalize type: has_tool_call properties: tool_name: minLength: 1 type: string type: enum: - has_tool_call type: string required: - type - tool_name type: object StopServerToolsWhenMaxCost: description: Stop once cumulative cost across the loop exceeds this dollar threshold. example: max_cost_in_dollars: 0.5 type: max_cost properties: max_cost_in_dollars: format: double type: number type: enum: - max_cost type: string required: - type - max_cost_in_dollars type: object StopServerToolsWhenMaxTokensUsed: description: Stop once cumulative token usage across the loop exceeds this threshold. example: max_tokens: 10000 type: max_tokens_used properties: max_tokens: type: integer type: enum: - max_tokens_used type: string required: - type - max_tokens type: object StopServerToolsWhenStepCountIs: description: Stop after the agent loop has executed this many steps. example: step_count: 5 type: step_count_is properties: step_count: type: integer type: enum: - step_count_is type: string required: - type - step_count 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.apply_patch_call_operation_diff.delta: '#/components/schemas/ApplyPatchCallOperationDiffDeltaEvent' response.apply_patch_call_operation_diff.done: '#/components/schemas/ApplyPatchCallOperationDiffDoneEvent' 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.custom_tool_call_input.delta: '#/components/schemas/CustomToolCallInputDeltaEvent' response.custom_tool_call_input.done: '#/components/schemas/CustomToolCallInputDoneEvent' response.debug: '#/components/schemas/DebugEvent' response.failed: '#/components/schemas/StreamEventsResponseFailed' response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent' response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent' response.fusion_call.analysis.completed: '#/components/schemas/FusionCallAnalysisCompletedEvent' response.fusion_call.analysis.in_progress: '#/components/schemas/FusionCallAnalysisInProgressEvent' response.fusion_call.completed: '#/components/schemas/FusionCallCompletedEvent' response.fusion_call.in_progress: '#/components/schemas/FusionCallInProgressEvent' response.fusion_call.panel.added: '#/components/schemas/FusionCallPanelAddedEvent' response.fusion_call.panel.completed: '#/components/schemas/FusionCallPanelCompletedEvent' response.fusion_call.panel.delta: '#/components/schemas/FusionCallPanelDeltaEvent' response.fusion_call.panel.failed: '#/components/schemas/FusionCallPanelFailedEvent' response.fusion_call.panel.reasoning.delta: '#/components/schemas/FusionCallPanelReasoningDeltaEvent' 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' - $ref: '#/components/schemas/CustomToolCallInputDeltaEvent' - $ref: '#/components/schemas/CustomToolCallInputDoneEvent' - $ref: '#/components/schemas/ApplyPatchCallOperationDiffDeltaEvent' - $ref: '#/components/schemas/ApplyPatchCallOperationDiffDoneEvent' - $ref: '#/components/schemas/FusionCallInProgressEvent' - $ref: '#/components/schemas/FusionCallPanelAddedEvent' - $ref: '#/components/schemas/FusionCallPanelDeltaEvent' - $ref: '#/components/schemas/FusionCallPanelReasoningDeltaEvent' - $ref: '#/components/schemas/FusionCallPanelCompletedEvent' - $ref: '#/components/schemas/FusionCallPanelFailedEvent' - $ref: '#/components/schemas/FusionCallAnalysisInProgressEvent' - $ref: '#/components/schemas/FusionCallAnalysisCompletedEvent' - $ref: '#/components/schemas/FusionCallCompletedEvent' - $ref: '#/components/schemas/DebugEvent' 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 SubagentNestedTool: additionalProperties: nullable: true description: >- A tool made available to the subagent. Only OpenRouter server tools (e.g. openrouter:web_search) are supported; function tools are rejected because the worker has no way to execute them. The subagent tool may not list itself. example: type: openrouter:web_search properties: parameters: additionalProperties: nullable: true type: object type: type: string required: - type type: object SubagentReasoning: description: >- Reasoning configuration forwarded to the subagent call. Use this to control reasoning effort and token budget for models that support extended thinking. example: effort: low properties: effort: description: Reasoning effort level for the subagent call. enum: - max - xhigh - high - medium - low - minimal - none type: string max_tokens: description: >- Maximum number of reasoning tokens the subagent may use. Accepted and validated but not yet forwarded to the subagent call. type: integer type: object SubagentServerTool_OpenRouter: description: >- OpenRouter built-in server tool: delegates self-contained tasks to a smaller, cheaper, faster worker model (any OpenRouter model) mid-generation and returns its outcome. The worker may run as a sub-agent with its own tools. example: parameters: model: ~anthropic/claude-haiku-latest type: openrouter:subagent properties: parameters: $ref: '#/components/schemas/SubagentServerToolConfig' type: enum: - openrouter:subagent type: string required: - type type: object SubagentServerToolConfig: description: Configuration for the openrouter:subagent server tool. example: model: ~anthropic/claude-haiku-latest properties: instructions: description: System instructions for the subagent. When omitted, the subagent responds with no system prompt of its own. example: You are a fast, focused worker. Complete the task exactly as described. type: string max_completion_tokens: description: >- Maximum number of output tokens (including reasoning) the subagent may produce. When omitted, the provider's default applies. example: 2048 type: integer max_tool_calls: description: >- Maximum number of tool-calling steps the subagent may take during its agentic loop. Capped at 25. Only relevant when the subagent is given tools. Accepted and validated but not yet enforced on the subagent call. example: 5 maximum: 25 minimum: 1 type: integer model: description: >- Slug of the model that executes delegated tasks (any OpenRouter model). Typically a smaller, cheaper, faster model than the one delegating. When omitted, the model from the outer API request is used. The subagent tool itself cannot be the subagent model. example: ~anthropic/claude-haiku-latest type: string reasoning: $ref: '#/components/schemas/SubagentReasoning' temperature: description: Sampling temperature forwarded to the subagent call. When omitted, the provider's default applies. example: 0.7 format: double type: number tools: description: >- Tools the subagent may use while executing a delegated task. The subagent runs as an agentic sub-agent over these tools, then returns its outcome. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the subagent tool itself. items: $ref: '#/components/schemas/SubagentNestedTool' type: array type: object SupportedParameters: additionalProperties: $ref: '#/components/schemas/CapabilityDescriptor' description: >- Union of supported parameters across every endpoint of this model. Coarse discovery aid; the definitive per-endpoint set is behind the endpoints URL. example: output_compression: max: 100 min: 0 type: range resolution: type: enum values: - 1K - 2K - 4K seed: type: boolean type: object TaskClassificationItem: example: category_token_share: 0.48 category_usage_share: 0.51 display_name: Code Generation macro_category: code models: - id: openai/gpt-4.1-mini tag_token_share: 0.75 tag_usage_share: 0.55 - id: anthropic/claude-sonnet-4 tag_token_share: 0.12 tag_usage_share: 0.2 tag: code:general_impl token_share: 0.31 usage_share: 0.23 properties: category_token_share: description: >- Fraction of this classification's token volume within its macro-category (0–1). Sums to 1 across all classifications sharing the same `macro_category`. example: 0.48 format: double type: number category_usage_share: description: >- Fraction of this classification's usage within its macro-category (0–1). Sums to 1 across all classifications sharing the same `macro_category`. example: 0.51 format: double type: number display_name: description: Human-readable label for the classification. example: Code Generation type: string macro_category: description: 'Coarse grouping derived from the tag prefix: `code`, `data`, `agent`, or `general`.' example: code type: string models: description: >- Top models for this classification by request volume, sorted descending. Each entry reports the model's share of this classification's requests and tokens. items: $ref: '#/components/schemas/TaskClassificationModel' type: array tag: description: Classification tag identifier (e.g. `code:general_impl`, `agent:web_search`). example: code:general_impl type: string token_share: description: >- Fraction of classified sampled token volume (prompt + completion) attributed to this classification (0–1). The unclassified `other` bucket is excluded from the denominator. example: 0.31 format: double type: number usage_share: description: >- Fraction of classified sampled requests attributed to this classification (0–1). The unclassified `other` bucket is excluded from the denominator. example: 0.23 format: double type: number required: - tag - display_name - macro_category - usage_share - token_share - category_usage_share - category_token_share - models type: object TaskClassificationMacroCategory: example: key: code label: Code token_share: 0.52 usage_share: 0.45 properties: key: description: Macro-category identifier. example: code type: string label: description: Human-readable label for the macro-category. example: Code type: string token_share: description: Combined token share of all classifications in this macro-category (0–1). example: 0.52 format: double type: number usage_share: description: Combined usage share of all classifications in this macro-category (0–1). example: 0.45 format: double type: number required: - key - label - usage_share - token_share type: object TaskClassificationModel: example: id: openai/gpt-4.1-mini tag_token_share: 0.75 tag_usage_share: 0.55 properties: id: description: Model identifier (permaslug). example: openai/gpt-4.1-mini type: string tag_token_share: description: >- Fraction of this classification's sampled token volume attributed to this model (0–1). Sums to ≤1 across the returned models (only top-N are included and unattributed requests are excluded). example: 0.75 format: double type: number tag_usage_share: description: >- Fraction of this classification's sampled requests attributed to this model (0–1). Sums to ≤1 across the returned models (only top-N are included and unattributed requests are excluded). example: 0.55 format: double type: number required: - id - tag_usage_share - tag_token_share type: object TaskClassificationResponse: example: data: as_of: '2026-06-17' classifications: - category_token_share: 0.48 category_usage_share: 0.51 display_name: Code Generation macro_category: code models: - id: openai/gpt-4.1-mini tag_token_share: 0.75 tag_usage_share: 0.55 tag: code:general_impl token_share: 0.31 usage_share: 0.23 macro_categories: - key: code label: Code token_share: 0.52 usage_share: 0.45 window_days: 7 properties: data: properties: as_of: description: >- UTC date (YYYY-MM-DD) of the window upper bound (yesterday). Data is exclusive of the current incomplete UTC day. This is the expected latest date in the snapshot; it does not confirm data presence for that date. example: '2026-06-17' type: string classifications: description: Per-task classification market-share data, sorted by usage_share descending. items: $ref: '#/components/schemas/TaskClassificationItem' type: array macro_categories: description: Aggregate market-share data per macro-category (code, data, agent, general). items: $ref: '#/components/schemas/TaskClassificationMacroCategory' type: array window_days: description: Number of trailing days covered by this snapshot. example: 7 type: integer required: - window_days - as_of - classifications - macro_categories type: object required: - data 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 UnifiedBenchmarkPricing: description: OpenRouter pricing per token for this model. Null if pricing is unavailable. example: completion: '0.000015' prompt: '0.000003' nullable: true properties: completion: description: Cost per output token (USD, decimal string). example: '0.000015' type: string prompt: description: Cost per input token (USD, decimal string). example: '0.000003' type: string required: - prompt - completion type: object UnifiedBenchmarksAAItem: example: agentic_index: 58.3 coding_index: 65.8 display_name: GPT-4o intelligence_index: 71.2 model_permaslug: openai/gpt-4o pricing: completion: '0.00001' prompt: '0.0000025' source: artificial-analysis properties: agentic_index: description: Artificial Analysis Agentic Index composite score. Higher is better. example: 58.3 format: double nullable: true type: number coding_index: description: Artificial Analysis Coding Index composite score. Higher is better. example: 65.8 format: double nullable: true type: number display_name: description: Model name as listed on Artificial Analysis. example: GPT-4o type: string intelligence_index: description: Artificial Analysis Intelligence Index composite score. Higher is better. example: 71.2 format: double nullable: true type: number model_permaslug: description: Stable OpenRouter model identifier. example: openai/gpt-4o type: string pricing: $ref: '#/components/schemas/UnifiedBenchmarkPricing' source: description: Benchmark source discriminator. enum: - artificial-analysis type: string required: - source - model_permaslug - display_name - intelligence_index - coding_index - agentic_index - pricing type: object UnifiedBenchmarksDAItem: example: arena: models avg_generation_time_ms: 3200 category: codecategories display_name: Claude Sonnet 4 elo: 1423 model_permaslug: anthropic/claude-sonnet-4 pricing: completion: '0.000015' prompt: '0.000003' source: design-arena tournament_stats: first_place: 12 fourth_place: 2 second_place: 8 third_place: 5 total: 27 win_rate: 72 properties: arena: description: Arena this ranking belongs to. example: models type: string avg_generation_time_ms: description: Average generation time in milliseconds. example: 3200 format: double nullable: true type: number category: description: Category within the arena. example: codecategories type: string display_name: description: Human-readable model name from Design Arena. example: Claude Sonnet 4 type: string elo: description: ELO rating from head-to-head arena battles. example: 1423 format: double type: number model_permaslug: description: Stable OpenRouter model identifier when mapped; otherwise the upstream Design Arena model id. example: anthropic/claude-sonnet-4 type: string pricing: $ref: '#/components/schemas/UnifiedBenchmarkPricing' source: description: Benchmark source discriminator. enum: - design-arena type: string tournament_stats: description: Placement distribution from tournament matches. properties: first_place: nullable: true type: integer fourth_place: nullable: true type: integer second_place: nullable: true type: integer third_place: nullable: true type: integer total: nullable: true type: integer required: - first_place - second_place - third_place - fourth_place - total type: object win_rate: description: Win rate as a percentage (0–100). example: 72 format: double type: number required: - source - model_permaslug - display_name - arena - category - elo - win_rate - avg_generation_time_ms - tournament_stats - pricing type: object UnifiedBenchmarksMeta: example: as_of: '2026-06-03T12:00:00Z' citation: 'Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).' model_count: 50 source: artificial-analysis source_url: https://artificialanalysis.ai task_type: null version: v1 properties: as_of: description: ISO-8601 timestamp of when this data was last updated. example: '2026-06-03T12:00:00Z' type: string citation: description: >- Required attribution when republishing this data, or null when results span multiple sources (attribute each item individually by its `source` discriminator). example: 'Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).' nullable: true type: string model_count: description: Number of unique models in the response. type: integer source: description: The source filter applied, or null when all sources are returned. enum: - artificial-analysis - design-arena - null example: artificial-analysis nullable: true type: string source_url: description: URL of the upstream data source, or null when results span multiple sources. example: https://artificialanalysis.ai nullable: true type: string task_type: description: The task_type filter applied, or null if showing all. nullable: true type: string version: description: Dataset version. enum: - v1 type: string required: - as_of - version - source - source_url - citation - model_count - task_type type: object UnifiedBenchmarksResponse: example: data: - agentic_index: 58.3 coding_index: 65.8 display_name: GPT-4o intelligence_index: 71.2 model_permaslug: openai/gpt-4o pricing: completion: '0.00001' prompt: '0.0000025' source: artificial-analysis meta: as_of: '2026-06-03T12:00:00Z' citation: null model_count: 1 source: null source_url: null task_type: null version: v1 properties: data: items: discriminator: mapping: artificial-analysis: '#/components/schemas/UnifiedBenchmarksAAItem' design-arena: '#/components/schemas/UnifiedBenchmarksDAItem' propertyName: source oneOf: - $ref: '#/components/schemas/UnifiedBenchmarksAAItem' - $ref: '#/components/schemas/UnifiedBenchmarksDAItem' type: array meta: $ref: '#/components/schemas/UnifiedBenchmarksMeta' required: - data - meta type: object UnprocessableEntityResponse: description: Unprocessable Entity - Semantic validation failure example: error: code: 422 message: Invalid argument properties: error: $ref: '#/components/schemas/UnprocessableEntityResponseErrorData' openrouter_metadata: additionalProperties: nullable: true nullable: true type: object 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 UpdateBYOKKeyRequest: example: disabled: false name: Updated OpenAI Key properties: allowed_models: description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array allowed_user_ids: description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. example: null items: type: string maxItems: 100 nullable: true type: array disabled: description: Whether this credential is disabled. example: false type: boolean is_fallback: description: >- Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. example: false type: boolean key: description: >- A new raw provider API key to rotate the credential in-place. The previous key material is overwritten and the masked label is regenerated. Encrypted at rest and never returned in API responses. example: sk-proj-newkey456... minLength: 1 type: string name: description: Optional human-readable name for the credential. example: Updated OpenAI Key maxLength: 255 nullable: true type: string type: object UpdateBYOKKeyResponse: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Updated OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - description: The updated BYOK credential. required: - data 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 content_filter_builtins: description: >- Builtin content filters to apply. Set to null to remove. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. example: - action: block slug: regex-prompt-injection items: $ref: '#/components/schemas/ContentFilterBuiltinEntryInput' nullable: true type: array content_filters: description: Custom regex content filters to apply. Set to null to remove. example: null items: $ref: '#/components/schemas/ContentFilterEntry' nullable: true type: array description: description: New description for the guardrail example: Updated description maxLength: 1000 nullable: true type: string enforce_zdr: deprecated: true description: >- Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. example: true nullable: true type: boolean enforce_zdr_anthropic: description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. example: true nullable: true type: boolean enforce_zdr_google: description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. example: true nullable: true type: boolean enforce_zdr_openai: description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. example: true nullable: true type: boolean enforce_zdr_other: description: >- Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. 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 content_filter_builtins: - action: redact label: '[EMAIL]' slug: email content_filters: null created_at: '2025-08-24T10:30:00Z' description: Updated description enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: true enforce_zdr_openai: true enforce_zdr_other: 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 UpdateObservabilityDestinationRequest: example: enabled: false name: Updated Langfuse properties: api_key_hashes: description: >- Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided. example: null items: type: string minItems: 1 nullable: true type: array config: additionalProperties: nullable: true description: >- Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value. example: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd type: object enabled: description: Whether the destination is enabled. example: true type: boolean filter_rules: allOf: - $ref: '#/components/schemas/ObservabilityFilterRulesConfig' - description: Optional structured filter rules. `null` clears the rules. Omitting keeps the current value. name: description: Human-readable name for the destination. example: Production Langfuse type: string privacy_mode: description: When true, request/response bodies are not forwarded — only metadata. example: false type: boolean sampling_rate: description: Sampling rate between 0.0001 and 1 (1 = 100%). example: 1 format: double type: number type: object UpdateObservabilityDestinationResponse: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - description: The updated observability destination. 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 (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) example: updated-workspace maxLength: 50 minLength: 1 pattern: ^[a-z0-9]+(?:-[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 UpsertWorkspaceBudgetRequest: example: limit_usd: 100 properties: limit_usd: description: Spending limit in USD. Must be greater than 0. example: 100 format: double type: number required: - limit_usd type: object UpsertWorkspaceBudgetResponse: example: data: created_at: '2025-08-24T10:30:00Z' id: 770e8400-e29b-41d4-a716-446655440000 limit_usd: 100 reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: data: allOf: - $ref: '#/components/schemas/WorkspaceBudget' - description: The created or updated budget required: - data type: object URLCitation: example: content: OpenRouter provides a unified API for accessing LLMs from multiple providers. end_index: 42 start_index: 0 title: OpenRouter Documentation type: url_citation url: https://openrouter.ai/docs properties: content: type: string 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' - '3:2' - '2:3' - '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 assets to guide video generation. Accepts image, audio, and video references. Audio and video references are only honored by providers that support them (currently BytePlus Seedance 2.0); other providers use image references and ignore the rest. items: $ref: '#/components/schemas/InputReference' 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' - '3:2' - '2:3' - '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 - 480x720 - 480x854 - 480x1120 - 640x480 - 720x480 - 720x720 - 720x960 - 720x1080 - 720x1280 - 720x1680 - 854x480 - 960x720 - 1080x720 - 1080x1080 - 1080x1440 - 1080x1620 - 1080x1920 - 1080x2520 - 1120x480 - 1280x720 - 1440x1080 - 1620x1080 - 1680x720 - 1920x1080 - 2160x2160 - 2160x2880 - 2160x3240 - 2160x3840 - 2160x5040 - 2520x1080 - 2880x2160 - 3240x2160 - 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. "openrouter" uses direct HTTP fetch. "firecrawl" uses Firecrawl scrape (requires BYOK). "parallel" uses the Parallel extract API. enum: - auto - native - openrouter - exa - parallel - firecrawl example: auto type: string WebFetchPlugin: example: id: web-fetch 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 id: enum: - web-fetch type: string max_content_tokens: description: Maximum content length in approximate tokens. Content exceeding this limit is truncated. type: integer max_uses: description: Maximum number of web fetches per request. Once exceeded, the tool returns an error. type: integer required: - id type: object 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, Perplexity, and most native providers (Anthropic, OpenAI, xAI). 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, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. items: type: string type: array max_characters: description: >- Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). example: 2000 type: integer max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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. Defaults to 50 when not specified. example: 50 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 - perplexity 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. "perplexity" uses the Perplexity Search API (raw ranked results). enum: - native - exa - parallel - firecrawl - perplexity - auto 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, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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, Perplexity, and most native providers (Anthropic, OpenAI, xAI). 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, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. items: type: string type: array max_characters: description: >- Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). example: 2000 type: integer max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. 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. Defaults to 50 when not specified. example: 50 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 WorkspaceBudget: example: created_at: '2025-08-24T10:30:00Z' id: 770e8400-e29b-41d4-a716-446655440000 limit_usd: 100 reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: created_at: description: ISO 8601 timestamp of when the budget was created example: '2025-08-24T10:30:00Z' type: string id: description: Unique identifier for the budget example: 770e8400-e29b-41d4-a716-446655440000 format: uuid type: string limit_usd: description: Spending limit in USD for this interval example: 100 format: double type: number reset_interval: description: Interval at which spend resets. Null means a lifetime (one-time) budget. enum: - daily - weekly - monthly - null example: monthly nullable: true type: string updated_at: description: ISO 8601 timestamp of when the budget was last updated example: '2025-08-24T15:45:00Z' type: string workspace_id: description: ID of the workspace the budget belongs to example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - limit_usd - reset_interval - created_at - updated_at type: object WorkspaceBudgetInterval: description: Budget reset interval. Use "lifetime" for a one-time budget that never resets. enum: - daily - weekly - monthly - lifetime example: monthly type: string 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 /analytics/meta: get: description: >- Returns the available metrics, dimensions, filter operators, and granularities for the analytics query endpoint. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getAnalyticsMeta responses: '200': content: application/json: example: data: dimensions: - display_label: Model name: model granularities: - display_label: Day name: day metrics: - display_format: number display_label: Request Count is_rate: false name: request_count operators: - name: eq value_type: scalar schema: properties: data: properties: dimensions: items: properties: display_label: description: Human-readable label example: Model type: string name: description: Dimension identifier used in query requests example: model type: string required: - name - display_label type: object type: array granularities: items: properties: display_label: description: Human-readable label example: Day type: string name: description: Granularity identifier enum: - minute - hour - day - week - month example: day type: string required: - name - display_label type: object type: array metrics: items: properties: display_format: description: >- How this metric value should be formatted for display (e.g. percent → multiply by 100 and append %, currency → prefix with $) enum: - number - currency - percent - latency - throughput example: number type: string display_label: description: Human-readable label example: Request Count type: string is_rate: description: Whether this metric is a rate/ratio (averaged, not summed) type: boolean name: description: Metric identifier used in query requests example: request_count type: string required: - name - display_label - is_rate - display_format type: object type: array operators: items: properties: name: description: Operator identifier used in filter definitions enum: - eq - neq - in - not_in - gt - gte - lt - lte example: eq type: string value_type: description: Whether the operator expects a single value or an array enum: - scalar - array type: string required: - name - value_type type: object type: array required: - metrics - dimensions - operators - granularities type: object required: - data type: object description: Returns analytics query metadata '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 available analytics metrics and dimensions tags: - beta.Analytics /analytics/query: post: description: >- Execute an analytics query with specified metrics, dimensions, filters, and time range. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: queryAnalytics requestBody: content: application/json: example: dimensions: - model granularity: day limit: 100 metrics: - request_count time_range: end: '2025-01-08T00:00:00Z' start: '2025-01-01T00:00:00Z' schema: properties: dimensions: items: description: Dimension to group by (up to 2). Use the /meta endpoint for available dimensions. example: model type: string maxItems: 2 type: array filters: items: properties: field: description: Dimension to filter on. Use the /meta endpoint for available dimensions. example: model type: string operator: description: Filter operator example: eq type: string value: anyOf: - type: string - format: double type: number - items: anyOf: - type: string - format: double type: number type: array description: >- Filter value (scalar or array depending on operator). Several dimensions are enriched in responses (returned as human-readable labels), but filters must use the underlying ID: `api_key_id` — numeric ID (from generation metadata) or key hash (64-char hex from GET /api/v1/keys, resolved server-side); `user` — Clerk user ID (e.g. "user_abc123"), not the display name; `workspace` — workspace UUID, not the workspace name; `app` — numeric app ID, not the app title; `model` — permaslug (e.g. "openai/gpt-4o"), not the display name. Other dimensions (provider, origin, country, etc.) are not enriched and accept the value as returned. required: - field - operator - value type: object maxItems: 20 type: array granularity: description: Time granularity example: day type: string group_limit: description: >- Maximum rows per distinct combination of dimensions. When omitted on time-series queries (granularity + dimensions), auto-computed to avoid truncating time windows. Explicit values override the default and may truncate time buckets if set lower than the number of buckets in the range. Ignored when no dimensions are specified. example: 100 type: integer limit: description: >- Maximum total rows returned. Defaults to 1000. On time-series queries with dimensions and no explicit group_limit, the server may raise this to accommodate the expected number of unique time-bucket/dimension combinations. type: integer metrics: items: description: Metric name example: request_count type: string minItems: 1 type: array order_by: properties: direction: enum: - asc - desc type: string field: description: Field to order by example: request_count type: string required: - field - direction type: object time_range: properties: end: format: date-time type: string start: format: date-time type: string required: - start - end type: object required: - metrics type: object required: true responses: '200': content: application/json: example: data: data: - date__day: '2025-01-01T00:00:00.000Z' request_count: 1500 metadata: query_time_ms: 42 row_count: 1 truncated: false schema: properties: data: properties: cachedAt: format: double type: number data: items: description: A row of analytics data with metric/dimension values type: object type: array metadata: properties: query_time_ms: format: double type: number row_count: type: integer truncated: type: boolean required: - query_time_ms - row_count - truncated type: object warnings: description: >- Warnings about filter resolution issues (e.g. unresolvable api_key_id hashes). The query still runs normally; these inform the caller that some filter values could not be resolved. items: type: string type: array required: - data - metadata type: object required: - data type: object description: Analytics query results '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 '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 '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: Query analytics data tags: - beta.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: 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. Supports https URLs and localhost/127.0.0.1 URLs on any port for local CLI tools. 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 workspace_id: description: Optional workspace ID to associate the API key with format: uuid 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 '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 '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 /benchmarks: get: description: >- Unified benchmark endpoint that aggregates scores from multiple benchmark sources (Artificial Analysis, Design Arena). Filter by source to reproduce the exact shapes from the legacy per-source endpoints, or use task_type to find models suited for specific workloads. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account. operationId: getBenchmarks parameters: - description: >- Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources. in: query name: source required: false schema: description: >- Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources. enum: - artificial-analysis - design-arena example: artificial-analysis type: string - description: >- Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category. in: query name: task_type required: false schema: description: >- Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category. enum: - coding - intelligence - agentic example: coding type: string - description: 'Design Arena only: arena to query. Defaults to `models` when source is `design-arena`.' in: query name: arena required: false schema: description: 'Design Arena only: arena to query. Defaults to `models` when source is `design-arena`.' enum: - models - builders - agents example: models type: string - description: >- Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories. in: query name: category required: false schema: description: >- Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories. example: codecategories type: string - description: Maximum number of items to return. When omitted, all matching results are returned. in: query name: max_results required: false schema: description: Maximum number of items to return. When omitted, all matching results are returned. example: 50 minimum: 1 type: integer responses: '200': content: application/json: example: data: - agentic_index: 58.3 coding_index: 65.8 display_name: GPT-4o intelligence_index: 71.2 model_permaslug: openai/gpt-4o pricing: completion: '0.00001' prompt: '0.0000025' source: artificial-analysis meta: as_of: '2026-06-03T12:00:00Z' citation: null model_count: 1 source: null source_url: null task_type: null version: v1 schema: $ref: '#/components/schemas/UnifiedBenchmarksResponse' description: Benchmark results filtered by the specified source and optional task type. '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 '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 Benchmarks tags: - Benchmarks /byok: get: description: >- List the bring-your-own-key (BYOK) provider credentials for the authenticated entity's default workspace. Use the `workspace_id` query parameter to scope the result to a different workspace, or the `provider` query parameter to filter by upstream provider. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listBYOKKeys 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: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. in: query name: workspace_id required: false schema: description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string - description: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). in: query name: provider required: false schema: description: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). enum: - ai21 - aion-labs - akashml - alibaba - amazon-bedrock - amazon-nova - ambient - anthropic - arcee-ai - atlas-cloud - avian - azure - baidu - baseten - black-forest-labs - byteplus - cerebras - chutes - cirrascale - clarifai - cloudflare - cohere - crusoe - darkbloom - decart - deepinfra - deepseek - dekallm - digitalocean - featherless - fireworks - friendli - gmicloud - google-ai-studio - google-vertex - groq - heygen - inception - inceptron - inferact-vllm - inference-net - infermatic - inflection - io-net - ionstream - liquid - mancer - mara - minimax - mistral - modelrun - modular - moonshotai - morph - ncompass - nebius - nex-agi - nextbit - novita - nvidia - open-inference - openai - parasail - perceptron - perplexity - phala - poolside - quiver - recraft - reka - relace - sakana-ai - sambanova - seed - siliconflow - sourceful - stepfun - streamlake - switchpoint - tenstorrent - together - upstage - venice - wafer - wandb - xai - xiaomi - z-ai example: openai type: string responses: '200': content: application/json: example: data: - allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 total_count: 1 schema: $ref: '#/components/schemas/ListBYOKKeysResponse' description: List of BYOK credentials '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 BYOK provider credentials tags: - BYOK 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 bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: createBYOKKey requestBody: content: application/json: example: key: sk-proj-abc123... name: Production OpenAI Key provider: openai schema: $ref: '#/components/schemas/CreateBYOKKeyRequest' required: true responses: '201': content: application/json: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/CreateBYOKKeyResponse' description: BYOK credential 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 BYOK provider credential tags: - BYOK x-speakeasy-name-override: create /byok/{id}: delete: description: >- Delete (soft-delete) a bring-your-own-key (BYOK) provider credential by its `id`. The encrypted key material is wiped and the record is marked as deleted. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteBYOKKey parameters: - description: The BYOK credential ID (UUID). in: path name: id required: true schema: description: The BYOK credential ID (UUID). example: 11111111-2222-3333-4444-555555555555 format: uuid type: string responses: '200': content: application/json: example: deleted: true schema: $ref: '#/components/schemas/DeleteBYOKKeyResponse' description: BYOK credential 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 BYOK provider credential tags: - BYOK x-speakeasy-name-override: delete get: description: >- Get a single bring-your-own-key (BYOK) provider credential by its `id`. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getBYOKKey parameters: - description: The BYOK credential ID (UUID). in: path name: id required: true schema: description: The BYOK credential ID (UUID). example: 11111111-2222-3333-4444-555555555555 format: uuid type: string responses: '200': content: application/json: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Production OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/GetBYOKKeyResponse' description: BYOK credential 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 BYOK provider credential tags: - BYOK x-speakeasy-name-override: get patch: description: >- Update an existing bring-your-own-key (BYOK) provider credential by its `id`. Include the `key` field to rotate the raw provider API key in-place (the previous key material is overwritten). [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: updateBYOKKey parameters: - description: The BYOK credential ID (UUID). in: path name: id required: true schema: description: The BYOK credential ID (UUID). example: 11111111-2222-3333-4444-555555555555 format: uuid type: string requestBody: content: application/json: example: disabled: false name: Updated OpenAI Key schema: $ref: '#/components/schemas/UpdateBYOKKeyRequest' required: true responses: '200': content: application/json: example: data: allowed_api_key_hashes: null allowed_models: null allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false id: 11111111-2222-3333-4444-555555555555 is_fallback: false label: sk-...AbCd name: Updated OpenAI Key provider: openai sort_order: 0 workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/UpdateBYOKKeyResponse' description: BYOK credential 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 BYOK provider credential tags: - BYOK x-speakeasy-name-override: update /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 parameters: - description: >- Opt-in to surface routing metadata on the response under `openrouter_metadata`. Defaults to `disabled`. The legacy header `X-OpenRouter-Experimental-Metadata` is also accepted for backward compatibility. example: enabled in: header name: X-OpenRouter-Metadata required: false schema: $ref: '#/components/schemas/MetadataLevel' 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: $ref: '#/components/schemas/ChatStreamingResponse' 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 '403': content: application/json: examples: guardrail-blocked: summary: Guardrail blocked the request value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - ignore all previous instructions openrouter_metadata: attempt: 1 endpoints: available: - model: openai/gpt-4o provider: OpenAI selected: false total: 1 is_byok: false pipeline: - data: action: blocked detected: true engines: - regex patterns: - ignore all previous instructions guardrail_id: grd_abc123 guardrail_scope: api-key name: regex_pi_detection summary: 'Blocked: prompt injection detected (1 pattern matched)' type: guardrail region: iad requested: openai/gpt-4o strategy: direct summary: available=1 insufficient-permissions: summary: Insufficient permissions value: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: >- Forbidden - Authentication successful but insufficient permissions, or a guardrail blocked the request. When guardrails block and the `X-OpenRouter-Metadata: enabled` header is present, the response includes `openrouter_metadata` with full routing context and a `pipeline` array containing guardrail stage details. '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 /classifications/task: get: description: |- Returns the market-share breakdown of OpenRouter traffic by task classification (e.g. code generation, web search, summarization) over a trailing time window. Each classification reports its share of classified sampled requests (`usage_share`) and classified sampled token volume (`token_share`) as fractions between 0 and 1. The unclassified `other` bucket is excluded. Absolute volumes are not exposed because the underlying data is sampled. Each classification also includes a `models` array listing the top models by request volume within that classification, with their within-tag usage and token shares. Classifications are grouped into macro-categories (Code, Data, Agent, General) with aggregate shares provided for each. Authenticate with any valid OpenRouter API key (same key used for inference). Rate-limited to 30 requests/minute per key and 500 requests/day per account. When republishing or quoting this data, cite as: "Source: OpenRouter (openrouter.ai/rankings), as of {as_of}." operationId: getTaskClassifications parameters: - description: Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported. in: query name: window required: false schema: default: 7d description: Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported. enum: - 7d example: 7d type: string responses: '200': content: application/json: example: data: as_of: '2026-06-17' classifications: - category_token_share: 0.48 category_usage_share: 0.51 display_name: Code Generation macro_category: code models: - id: openai/gpt-4.1-mini tag_token_share: 0.75 tag_usage_share: 0.55 tag: code:general_impl token_share: 0.31 usage_share: 0.23 macro_categories: - key: code label: Code token_share: 0.52 usage_share: 0.45 window_days: 7 schema: $ref: '#/components/schemas/TaskClassificationResponse' description: Task classification market-share data for the requested trailing window. '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 '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: Task classification market share tags: - Classifications /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 /datasets/app-rankings: get: description: |- Returns the top public apps on OpenRouter ranked by token usage inside the requested date window, matching the public apps marketplace on openrouter.ai/apps. Token totals are `prompt_tokens + completion_tokens`; hidden and private apps are excluded and traffic from related app aliases is merged into the canonical visible app. `sort=popular` (default) ranks by total token volume inside the window. `sort=trending` ranks by absolute excess token growth: window volume minus the average volume of the three equal-length periods immediately preceding the window. Apps with no excess growth are omitted, so `trending` may return fewer than `limit` rows. Filter with `category` (marketplace category group, e.g. `coding`) or `subcategory` (e.g. `cli-agent`). Ranks are re-numbered 1..N after filtering. Page with `offset` — `rank` stays absolute, so the first row of `offset=50` is `rank: 51`. Authenticate with any valid OpenRouter API key (same key used for inference). Rate-limited to 30 requests/minute per key and 500 requests/day per account. When republishing or quoting this dataset, OpenRouter must be cited as: "Source: OpenRouter (openrouter.ai/apps), as of {as_of}." Token counts come from each upstream provider's own tokenizer, so a token attributed to one app is not directly comparable to a token attributed to another app whose traffic flows through a different provider. operationId: getAppRankings parameters: - description: >- Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must belong to the `category` group. in: query name: category required: false schema: description: >- Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must belong to the `category` group. enum: - coding - creative - productivity - entertainment example: coding type: string - description: >- Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual filter; when `category` is also supplied the pair must be consistent. in: query name: subcategory required: false schema: description: >- Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual filter; when `category` is also supplied the pair must be consistent. enum: - cli-agent - ide-extension - cloud-agent - programming-app - native-app-builder - creative-writing - video-gen - image-gen - audio-gen - roleplay - game - writing-assistant - general-chat - personal-agent - legal example: cli-agent type: string - description: >- `popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute excess token growth: window volume minus the average volume of the three equal-length periods immediately preceding the window. Apps with no excess growth are omitted from `trending` results. in: query name: sort required: false schema: default: popular description: >- `popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute excess token growth: window volume minus the average volume of the three equal-length periods immediately preceding the window. Apps with no excess growth are omitted from `trending` results. enum: - popular - trending example: popular type: string - description: >- Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. in: query name: start_date required: false schema: description: >- Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. example: '2026-04-12' pattern: ^\d{4}-\d{2}-\d{2}$ type: string - description: >- End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400. in: query name: end_date required: false schema: description: >- End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400. example: '2026-05-11' pattern: ^\d{4}-\d{2}-\d{2}$ type: string - description: Maximum number of apps to return (1-100). Defaults to 50. in: query name: limit required: false schema: default: 50 description: Maximum number of apps to return (1-100). Defaults to 50. example: 50 maximum: 100 minimum: 1 type: integer - description: >- Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute, so the first row of `offset=50` is `rank: 51`. in: query name: offset required: false schema: default: 0 description: >- Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute, so the first row of `offset=50` is `rank: 51`. example: 0 maximum: 100 minimum: 0 nullable: true type: integer responses: '200': content: application/json: example: data: - app_id: 12345 app_name: Cline rank: 1 total_requests: 4321 total_tokens: '12345678' - app_id: 67890 app_name: Roo Code rank: 2 total_requests: 2109 total_tokens: '9876543' meta: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' version: v1 schema: $ref: '#/components/schemas/AppRankingsResponse' description: >- Apps ranked per the requested `sort`, re-numbered 1..N. `popular` sorts by `total_tokens` descending; `trending` sorts by absolute excess token growth descending and may return fewer than `limit` rows. '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 '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: Top apps by token usage tags: - Datasets x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit /datasets/rankings-daily: get: description: |- Returns the top 50 public models per day by total token usage on OpenRouter, plus a single aggregated `other` row per day that sums every model outside that top 50. Token totals are `prompt_tokens + completion_tokens`, matching the public rankings chart on openrouter.ai/rankings. Each row is a distinct `(date, model_permaslug)` pair. The `other` row uses the reserved permaslug `other` and is always returned last within its date, so callers can compute `top-50 traffic / total daily traffic` without a second request. Authenticate with any valid OpenRouter API key (same key used for inference). Rate-limited to 30 requests/minute per key and 500 requests/day per account. When republishing or quoting this dataset, OpenRouter must be cited as: "Source: OpenRouter (openrouter.ai/rankings), as of {as_of}." Token counts come from each upstream provider's own tokenizer (Anthropic counts are as reported by Anthropic, OpenAI counts are as reported by OpenAI, etc.), so a token in one row is not directly comparable to a token in another row from a different provider. operationId: getRankingsDaily parameters: - description: >- Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. in: query name: start_date required: false schema: description: >- Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. example: '2026-04-12' pattern: ^\d{4}-\d{2}-\d{2}$ type: string - description: >- End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400. in: query name: end_date required: false schema: description: >- End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400. example: '2026-05-11' pattern: ^\d{4}-\d{2}-\d{2}$ type: string responses: '200': content: application/json: example: data: - date: '2026-05-11' model_permaslug: openai/gpt-4o-2024-05-13 total_tokens: '12345678' - date: '2026-05-11' model_permaslug: anthropic/claude-3.5-sonnet-20241022 total_tokens: '9876543' - date: '2026-05-11' model_permaslug: other total_tokens: '4321098' meta: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' version: v1 schema: $ref: '#/components/schemas/RankingsDailyResponse' description: >- Up to 51 rows per day — the top 50 public models by `total_tokens` plus a single aggregated `other` row covering every model outside that top 50. Sorted by `date` ascending, then by `total_tokens` descending, with `other` pinned last within its date. '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 '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: Daily token totals for top 50 models tags: - Datasets /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 - $ref: '#/components/schemas/ContentPartInputAudio' - $ref: '#/components/schemas/ContentPartInputVideo' - $ref: '#/components/schemas/ContentPartInputFile' 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 cost_details: 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 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 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 file_tokens: description: Number of file/document 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 /files: get: description: Lists files belonging to the workspace of the authenticating API key. operationId: listFiles parameters: - description: Maximum number of files to return (1–1000). in: query name: limit required: false schema: description: Maximum number of files to return (1–1000). example: 100 maximum: 1000 minimum: 1 type: integer - description: Opaque pagination cursor from a previous response. in: query name: cursor required: false schema: description: Opaque pagination cursor from a previous response. example: eyJjdXJzb3IiOiJmaWxlXzAxMUNOaGE4aUNKY1Uxd1hOUjZxNFY4dyJ9 type: string - description: Workspace to scope the request to. Defaults to the caller’s default workspace. in: query name: workspace_id required: false schema: description: Workspace to scope the request to. Defaults to the caller’s default workspace. example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 format: uuid type: string responses: '200': content: application/json: example: cursor: null data: - created_at: '2025-01-01T00:00:00Z' downloadable: false filename: document.pdf id: file_011CNha8iCJcU1wXNR6q4V8w mime_type: application/pdf size_bytes: 1024000 type: file first_id: file_011CNha8iCJcU1wXNR6q4V8w has_more: false last_id: file_011CNha8iCJcU1wXNR6q4V8w schema: $ref: '#/components/schemas/FileListResponse' description: A page of files. '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 '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 files tags: - Files x-speakeasy-name-override: list x-speakeasy-pagination: inputs: - in: parameters name: cursor type: cursor outputs: nextCursor: $.cursor results: $.data type: cursor post: description: >- Uploads a file to be referenced in future API calls. The file is stored under the workspace of the authenticating API key. Maximum file size: 100 MB. operationId: uploadFile parameters: - description: Workspace to scope the request to. Defaults to the caller’s default workspace. in: query name: workspace_id required: false schema: description: Workspace to scope the request to. Defaults to the caller’s default workspace. example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 format: uuid type: string requestBody: content: multipart/form-data: example: file: document.pdf schema: properties: file: format: binary type: string required: - file type: object required: true responses: '200': content: application/json: example: created_at: '2025-01-01T00:00:00Z' downloadable: false filename: document.pdf id: file_011CNha8iCJcU1wXNR6q4V8w mime_type: application/pdf size_bytes: 1024000 type: file schema: $ref: '#/components/schemas/FileMetadata' description: The uploaded file metadata. '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 '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 '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: Upload a file tags: - Files x-speakeasy-name-override: upload /files/{file_id}: delete: description: Deletes a file owned by the requesting workspace. Deletion is irreversible. operationId: deleteFile parameters: - in: path name: file_id required: true schema: example: file_011CNha8iCJcU1wXNR6q4V8w type: string - description: Workspace to scope the request to. Defaults to the caller’s default workspace. in: query name: workspace_id required: false schema: description: Workspace to scope the request to. Defaults to the caller’s default workspace. example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 format: uuid type: string responses: '200': content: application/json: example: id: file_011CNha8iCJcU1wXNR6q4V8w type: file_deleted schema: $ref: '#/components/schemas/FileDeleteResponse' description: The file was deleted. '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 a file tags: - Files x-speakeasy-name-override: delete get: description: Retrieves metadata for a single file owned by the requesting workspace. operationId: getFileMetadata parameters: - in: path name: file_id required: true schema: example: file_011CNha8iCJcU1wXNR6q4V8w type: string - description: Workspace to scope the request to. Defaults to the caller’s default workspace. in: query name: workspace_id required: false schema: description: Workspace to scope the request to. Defaults to the caller’s default workspace. example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 format: uuid type: string responses: '200': content: application/json: example: created_at: '2025-01-01T00:00:00Z' downloadable: false filename: document.pdf id: file_011CNha8iCJcU1wXNR6q4V8w mime_type: application/pdf size_bytes: 1024000 type: file schema: $ref: '#/components/schemas/FileMetadata' description: The file metadata. '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 file metadata tags: - Files x-speakeasy-name-override: retrieve /files/{file_id}/content: get: description: Downloads the raw bytes of a file. Only files created server-side are downloadable; uploaded files return 400. operationId: downloadFileContent parameters: - in: path name: file_id required: true schema: example: file_011CNha8iCJcU1wXNR6q4V8w type: string - description: Workspace to scope the request to. Defaults to the caller’s default workspace. in: query name: workspace_id required: false schema: description: Workspace to scope the request to. Defaults to the caller’s default workspace. example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 format: uuid type: string responses: '200': content: application/octet-stream: example: binary file contents schema: format: binary type: string description: The raw file content. '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: Download file content tags: - Files x-speakeasy-name-override: download /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_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: 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. Collection fields use replace semantics: send the full desired set on every update. [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: null enforce_zdr_anthropic: true enforce_zdr_google: true enforce_zdr_openai: true enforce_zdr_other: 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. A key may hold at most one guardrail; assigning replaces any existing assignment. [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 /images: post: description: Generates an image from a text prompt via the image generation router operationId: createImages requestBody: content: application/json: example: model: bytedance-seed/seedream-4.5 prompt: a red panda astronaut floating in space, studio lighting schema: $ref: '#/components/schemas/ImageGenerationRequest' required: true responses: '200': content: application/json: example: created: 1748372400 data: - b64_json: usage: completion_tokens: 4175 cost: 0.04 prompt_tokens: 0 total_tokens: 4175 schema: $ref: '#/components/schemas/ImageGenerationResponse' text/event-stream: example: data: b64_json: partial_image_index: 0 type: image_generation.partial_image schema: $ref: '#/components/schemas/ImageStreamingResponse' x-speakeasy-sse-sentinel: '[DONE]' description: Image generation 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 '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: Generate an image tags: - Images x-speakeasy-name-override: generate /images/models: get: description: >- Lists every image generation model with its top-level supported-parameter superset and a URL to its full per-endpoint records. operationId: listImageModels responses: '200': content: application/json: example: data: - architecture: input_modalities: - text output_modalities: - image created: 1692901234 description: A text-to-image model. endpoints: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints id: bytedance-seed/seedream-4.5 name: Seedream 4.5 supported_parameters: resolution: type: enum values: - 1K - 2K - 4K supports_streaming: false schema: $ref: '#/components/schemas/ImageModelsListResponse' description: List of image generation models '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 image generation models tags: - Images x-speakeasy-name-override: listModels /images/models/{author}/{slug}/endpoints: get: description: >- Returns the full per-endpoint records for an image model: each endpoint's definitive supported parameters, pricing, and passthrough allowlist. operationId: listImageModelEndpoints parameters: - description: Model author/organization in: path name: author required: true schema: description: Model author/organization example: bytedance-seed type: string - description: Model slug in: path name: slug required: true schema: description: Model slug example: seedream-4.5 type: string responses: '200': content: application/json: example: endpoints: - allowed_passthrough_parameters: [] pricing: - billable: output_image cost_usd: 0.05 unit: image provider_name: Bytedance provider_slug: bytedance provider_tag: bytedance supported_parameters: resolution: type: enum values: - 1K - 2K - 4K supports_streaming: false id: bytedance-seed/seedream-4.5 schema: $ref: '#/components/schemas/ImageModelEndpointsResponse' description: The full per-endpoint records for an image model '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 endpoints for an image model tags: - Images x-speakeasy-name-override: listModelEndpoints /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. The plaintext `key` is returned only in this response. Treat it as a write-only, sensitive value; it cannot be retrieved later. [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 parameters: - description: >- Opt-in to surface routing metadata on the response under `openrouter_metadata`. Defaults to `disabled`. The legacy header `X-OpenRouter-Experimental-Metadata` is also accepted for backward compatibility. example: enabled in: header name: X-OpenRouter-Metadata required: false schema: $ref: '#/components/schemas/MetadataLevel' 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: $ref: '#/components/schemas/MessagesStreamingResponse' 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: examples: guardrail-blocked: summary: Guardrail blocked the request value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - ignore all previous instructions openrouter_metadata: attempt: 1 endpoints: available: - model: openai/gpt-4o provider: OpenAI selected: false total: 1 is_byok: false pipeline: - data: action: blocked detected: true engines: - regex patterns: - ignore all previous instructions guardrail_id: grd_abc123 guardrail_scope: api-key name: regex_pi_detection summary: 'Blocked: prompt injection detected (1 pattern matched)' type: guardrail region: iad requested: openai/gpt-4o strategy: direct summary: available=1 insufficient-permissions: summary: Insufficient permissions value: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: >- Forbidden - Authentication successful but insufficient permissions, or a guardrail blocked the request. When guardrails block and the `X-OpenRouter-Metadata: enabled` header is present, the response includes `openrouter_metadata` with full routing context and a `pipeline` array containing guardrail stage details. '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 /model/{author}/{slug}: get: description: >- Returns full details for a single model identified by its author and slug (e.g. openai/gpt-4). Supports variant suffixes (e.g. openai/gpt-4:free) and resolves known slug aliases. operationId: getModel 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, optionally including a variant suffix (e.g. gpt-4 or gpt-4:free) in: path name: slug required: true schema: description: The model slug, optionally including a variant suffix (e.g. gpt-4 or gpt-4:free) 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 context_length: 8192 created: 1692901234 description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. id: openai/gpt-4 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 top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 schema: $ref: '#/components/schemas/ModelResponse' description: Returns the model details '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 model by its slug tags: - Models x-speakeasy-name-override: get /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: >- Sort the returned models server-side. Prefer this over fetching the full list and sorting client-side. Options: pricing-low-to-high, pricing-high-to-low (average prompt/completion price), context-high-to-low (context length), throughput-high-to-low, latency-low-to-high (recent median performance), most-popular, top-weekly (tokens processed in the last week), newest (creation date), intelligence-high-to-low (Artificial Analysis intelligence index), design-arena-elo-high-to-low (best Design Arena ELO across arenas). Models without a score for the chosen benchmark are placed last. When omitted, the existing default ordering is preserved. in: query name: sort required: false schema: description: >- Sort the returned models server-side. Prefer this over fetching the full list and sorting client-side. Options: pricing-low-to-high, pricing-high-to-low (average prompt/completion price), context-high-to-low (context length), throughput-high-to-low, latency-low-to-high (recent median performance), most-popular, top-weekly (tokens processed in the last week), newest (creation date), intelligence-high-to-low (Artificial Analysis intelligence index), design-arena-elo-high-to-low (best Design Arena ELO across arenas). Models without a score for the chosen benchmark are placed last. When omitted, the existing default ordering is preserved. enum: - most-popular - newest - top-weekly - pricing-low-to-high - pricing-high-to-low - context-high-to-low - throughput-high-to-low - latency-low-to-high - intelligence-high-to-low - design-arena-elo-high-to-low example: newest 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 - description: Free-text search by model name or slug. in: query name: q required: false schema: description: Free-text search by model name or slug. example: gpt-4 type: string - description: 'Filter models by input modality. Comma-separated list of: text, image, audio, file.' in: query name: input_modalities required: false schema: description: 'Filter models by input modality. Comma-separated list of: text, image, audio, file.' example: text,image type: string - description: Minimum context length (tokens). Models with smaller context are excluded. in: query name: context required: false schema: description: Minimum context length (tokens). Models with smaller context are excluded. example: 128000 exclusiveMinimum: true minimum: 0 type: integer - description: Minimum prompt price in $/M tokens. in: query name: min_price required: false schema: description: Minimum prompt price in $/M tokens. example: 0 minimum: 0 nullable: true type: number - description: Maximum prompt price in $/M tokens. in: query name: max_price required: false schema: description: Maximum prompt price in $/M tokens. example: 10 minimum: 0 nullable: true type: number - description: Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama). in: query name: arch required: false schema: description: Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama). example: GPT type: string - description: Filter models by the organization that created the model. Comma-separated list of author slugs. in: query name: model_authors required: false schema: description: Filter models by the organization that created the model. Comma-separated list of author slugs. example: openai,anthropic type: string - description: Filter models by hosting provider. Comma-separated list of provider names. in: query name: providers required: false schema: description: Filter models by hosting provider. Comma-separated list of provider names. example: OpenAI,Anthropic type: string - description: Filter by distillation capability. "true" returns only distillable models, "false" excludes them. in: query name: distillable required: false schema: description: Filter by distillation capability. "true" returns only distillable models, "false" excludes them. enum: - 'true' - 'false' example: 'true' type: string - description: When set to "true", return only models with zero data retention endpoints. in: query name: zdr required: false schema: description: When set to "true", return only models with zero data retention endpoints. enum: - 'true' example: 'true' type: string - description: Filter to models with endpoints in the given data region. Currently only "eu" is supported. in: query name: region required: false schema: description: Filter to models with endpoints in the given data region. Currently only "eu" is supported. enum: - eu example: eu 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-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: >- OpenRouter Models 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 /observability/destinations: get: description: >- List the observability destinations configured for the authenticated entity's default workspace. Use the `workspace_id` query parameter to scope the result to a different workspace. Only destinations with stable release status are surfaced — destinations of other types are excluded. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listObservabilityDestinations 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: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. in: query name: workspace_id required: false schema: description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string responses: '200': content: application/json: example: data: - api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 total_count: 1 schema: $ref: '#/components/schemas/ListObservabilityDestinationsResponse' description: List of observability destinations '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 observability destinations tags: - Observability 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 observability destination. A maximum of 5 destinations per type is allowed. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: createObservabilityDestination requestBody: content: application/json: example: config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd name: Production Langfuse type: langfuse schema: $ref: '#/components/schemas/CreateObservabilityDestinationRequest' required: true responses: '201': content: application/json: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/CreateObservabilityDestinationResponse' description: Destination 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 '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 an observability destination tags: - Observability x-speakeasy-name-override: create /observability/destinations/{id}: delete: description: >- Delete an existing observability destination. This performs a soft delete. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteObservabilityDestination parameters: - description: The destination ID (UUID). in: path name: id required: true schema: description: The destination ID (UUID). example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string responses: '200': content: application/json: example: deleted: true schema: $ref: '#/components/schemas/DeleteObservabilityDestinationResponse' description: Destination 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 an observability destination tags: - Observability x-speakeasy-name-override: delete get: description: >- Fetch a single observability destination by its UUID. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getObservabilityDestination parameters: - description: The destination ID (UUID). in: path name: id required: true schema: description: The destination ID (UUID). example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string responses: '200': content: application/json: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/GetObservabilityDestinationResponse' description: The observability destination '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 an observability destination tags: - Observability x-speakeasy-name-override: get patch: description: >- Update an existing observability destination. Only the fields provided in the request body are updated. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: updateObservabilityDestination parameters: - description: The destination ID (UUID). in: path name: id required: true schema: description: The destination ID (UUID). example: 99999999-aaaa-bbbb-cccc-dddddddddddd format: uuid type: string requestBody: content: application/json: example: enabled: false name: Updated Langfuse schema: $ref: '#/components/schemas/UpdateObservabilityDestinationRequest' required: true responses: '200': content: application/json: example: data: api_key_hashes: null config: baseUrl: https://us.cloud.langfuse.com publicKey: pk-l...EfGh secretKey: sk-l...AbCd created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null id: 99999999-aaaa-bbbb-cccc-dddddddddddd name: Production Langfuse privacy_mode: false sampling_rate: 1 type: langfuse updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/UpdateObservabilityDestinationResponse' description: Destination 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 '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: Update an observability destination tags: - Observability x-speakeasy-name-override: update /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 /presets: get: description: Lists all presets for the authenticated user, ordered by most recently updated first. operationId: listPresets 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: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 total_count: 1 schema: $ref: '#/components/schemas/ListPresetsResponse' description: Paginated list of presets. '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 '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: - apiKey: [] summary: List presets tags: - Presets 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 /presets/{slug}: get: description: Retrieves a preset by its slug with its currently designated version inline. operationId: getPreset parameters: - description: URL-safe slug identifying the preset. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. example: my-preset minLength: 1 type: string responses: '200': content: application/json: example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 schema: $ref: '#/components/schemas/GetPresetResponse' description: Preset with its designated version. '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 security: - apiKey: [] summary: Get a preset tags: - Presets x-speakeasy-name-override: get /presets/{slug}/chat/completions: post: description: >- Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. operationId: createPresetsChatCompletions parameters: - description: URL-safe slug identifying the preset. Created if it does not exist. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. Created if it does not exist. example: my-preset minLength: 1 type: string requestBody: content: application/json: example: messages: - content: You are a helpful assistant. role: system - content: Hello! role: user model: openai/gpt-5.4 temperature: 0.7 schema: $ref: '#/components/schemas/ChatRequest' required: true responses: '200': content: application/json: example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-5.4 temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' description: Preset created or 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 '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 security: - apiKey: [] summary: Create a preset from a chat-completions request body tags: - Presets /presets/{slug}/messages: post: description: >- Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. operationId: createPresetsMessages parameters: - description: URL-safe slug identifying the preset. Created if it does not exist. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. Created if it does not exist. example: my-preset minLength: 1 type: string requestBody: content: application/json: example: max_tokens: 1024 messages: - content: Hello! role: user model: anthropic/claude-4.6-sonnet system: You are a helpful assistant. schema: $ref: '#/components/schemas/MessagesRequest' required: true responses: '200': content: application/json: example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: max_tokens: 1024 model: anthropic/claude-4.6-sonnet created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' description: Preset created or 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 '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 security: - apiKey: [] summary: Create a preset from a messages request body tags: - Presets /presets/{slug}/responses: post: description: >- Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. operationId: createPresetsResponses parameters: - description: URL-safe slug identifying the preset. Created if it does not exist. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. Created if it does not exist. example: my-preset minLength: 1 type: string requestBody: content: application/json: example: input: Hello! instructions: You are a helpful assistant. model: openai/gpt-5.4 schema: $ref: '#/components/schemas/ResponsesRequest' required: true responses: '200': content: application/json: example: data: created_at: '2026-04-20T10:00:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 description: null designated_version: config: model: openai/gpt-5.4 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 designated_version_id: 550e8400-e29b-41d4-a716-446655440000 id: 650e8400-e29b-41d4-a716-446655440001 name: my-preset slug: my-preset status: active status_updated_at: null updated_at: '2026-04-20T10:00:00Z' workspace_id: 750e8400-e29b-41d4-a716-446655440002 schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' description: Preset created or 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 '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 security: - apiKey: [] summary: Create a preset from a responses request body tags: - Presets /presets/{slug}/versions: get: description: Lists all versions of a preset, ordered by version number ascending (oldest first). operationId: listPresetVersions parameters: - description: URL-safe slug identifying the preset. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. example: my-preset minLength: 1 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: - config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 total_count: 1 schema: $ref: '#/components/schemas/ListPresetVersionsResponse' description: Paginated list of preset versions. '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 security: - apiKey: [] summary: List versions of a preset tags: - Presets x-speakeasy-name-override: listVersions x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit /presets/{slug}/versions/{version}: get: description: Retrieves a specific version of a preset by its slug and version number. operationId: getPresetVersion parameters: - description: URL-safe slug identifying the preset. in: path name: slug required: true schema: description: URL-safe slug identifying the preset. example: my-preset minLength: 1 type: string - description: Version number of the preset. in: path name: version required: true schema: description: Version number of the preset. example: '1' minLength: 1 type: string responses: '200': content: application/json: example: data: config: model: openai/gpt-4o temperature: 0.7 created_at: '2026-04-20T10:00:00Z' creator_id: user_2dHFtVWx2n56w6HkM0000000000 id: 550e8400-e29b-41d4-a716-446655440000 preset_id: 650e8400-e29b-41d4-a716-446655440001 system_prompt: You are a helpful assistant. updated_at: '2026-04-20T10:00:00Z' version: 1 schema: $ref: '#/components/schemas/GetPresetVersionResponse' description: The requested preset version. '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 security: - apiKey: [] summary: Get a specific version of a preset tags: - Presets x-speakeasy-name-override: getVersion /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. Documents may be plain strings, or structured objects with `text` and/or `image` for multimodal models. example: - Paris is the capital of France. - Berlin is the capital of Germany. items: anyOf: - type: string - description: >- A structured document with optional text and/or image content. At least one of `text` or `image` must be provided. properties: image: description: >- An image associated with the document, as a remote URL (http/https) or a base64-encoded data URI (data:image/...). example: https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Phytogenic.png type: string text: description: The document text example: AI enables robots to perceive, plan, and act autonomously. type: string type: object description: >- A document to rerank. Either a plain string, or a structured object with optional `text` and/or `image`. minItems: 1 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 echoing the original input (text and/or image) properties: image: description: The image (URL or data URI) from the original document example: https://example.com/image.png type: string text: description: The document text example: Paris is the capital of France. type: string 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 parameters: - description: >- Opt-in to surface routing metadata on the response under `openrouter_metadata`. Defaults to `disabled`. The legacy header `X-OpenRouter-Experimental-Metadata` is also accepted for backward compatibility. example: enabled in: header name: X-OpenRouter-Metadata required: false schema: $ref: '#/components/schemas/MetadataLevel' 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: $ref: '#/components/schemas/ResponsesStreamingResponse' 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 '403': content: application/json: examples: guardrail-blocked: summary: Guardrail blocked the request value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - ignore all previous instructions openrouter_metadata: attempt: 1 endpoints: available: - model: openai/gpt-4o provider: OpenAI selected: false total: 1 is_byok: false pipeline: - data: action: blocked detected: true engines: - regex patterns: - ignore all previous instructions guardrail_id: grd_abc123 guardrail_scope: api-key name: regex_pi_detection summary: 'Blocked: prompt injection detected (1 pattern matched)' type: guardrail region: iad requested: openai/gpt-4o strategy: direct summary: available=1 insufficient-permissions: summary: Insufficient permissions value: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: >- Forbidden - Authentication successful but insufficient permissions, or a guardrail blocked the request. When guardrails block and the `X-OpenRouter-Metadata: enabled` header is present, the response includes `openrouter_metadata` with full routing context and a `pipeline` array containing guardrail stage details. '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: completed 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: video/mp4: example: schema: format: binary type: string description: >- Video content stream. The body is the raw video bytes proxied from the upstream provider, and the Content-Type reflects the provider media type (video/mp4). '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; remove the keys first. [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}/budgets: get: description: >- List all budgets configured for a workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listWorkspaceBudgets 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' id: 770e8400-e29b-41d4-a716-446655440000 limit_usd: 100 reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/ListWorkspaceBudgetsResponse' description: Budgets retrieved 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: List workspace budgets tags: - Workspaces x-speakeasy-name-override: listBudgets /workspaces/{id}/budgets/{interval}: delete: description: >- Remove the budget for a given interval. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteWorkspaceBudget 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 - description: Budget reset interval. Use "lifetime" for a one-time budget that never resets. example: monthly in: path name: interval required: true schema: $ref: '#/components/schemas/WorkspaceBudgetInterval' responses: '200': content: application/json: example: deleted: true schema: $ref: '#/components/schemas/DeleteWorkspaceBudgetResponse' description: Budget 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 workspace budget tags: - Workspaces x-speakeasy-name-override: deleteBudget put: description: >- Create or update the budget for a given interval. Budget limits must strictly decrease as the interval narrows (lifetime > monthly > weekly > daily). [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: upsertWorkspaceBudget 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 - description: Budget reset interval. Use "lifetime" for a one-time budget that never resets. example: monthly in: path name: interval required: true schema: $ref: '#/components/schemas/WorkspaceBudgetInterval' requestBody: content: application/json: example: limit_usd: 100 schema: $ref: '#/components/schemas/UpsertWorkspaceBudgetRequest' required: true responses: '200': content: application/json: example: data: created_at: '2025-08-24T10:30:00Z' id: 770e8400-e29b-41d4-a716-446655440000 limit_usd: 100 reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/UpsertWorkspaceBudgetResponse' description: Budget created or 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: Create or update a workspace budget tags: - Workspaces x-speakeasy-name-override: setBudget /workspaces/{id}/members: get: description: >- List all members of a workspace. Returns paginated results. For the default workspace, returns all organization members (implicit membership). [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listWorkspaceMembers 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 - 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' id: 660e8400-e29b-41d4-a716-446655440000 role: member user_id: user_abc123 workspace_id: 550e8400-e29b-41d4-a716-446655440000 total_count: 1 schema: $ref: '#/components/schemas/ListWorkspaceMembersResponse' description: List of workspace 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 '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: List workspace members tags: - Workspaces 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 /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: BYOK endpoints name: BYOK - description: Benchmarks endpoints name: Benchmarks - description: Chat completion endpoints name: Chat - description: Task classification market-share endpoints name: Classifications - description: Credit management endpoints name: Credits - description: Datasets endpoints name: Datasets - description: Text embedding endpoints name: Embeddings - description: Endpoint information name: Endpoints - description: Files endpoints name: Files - description: Generation history endpoints name: Generations - description: Guardrails endpoints name: Guardrails - description: Images endpoints name: Images - description: Model information endpoints name: Models - description: OAuth authentication endpoints name: OAuth - description: Observability endpoints name: Observability - description: Organization endpoints name: Organization - description: Presets endpoints name: Presets - description: Provider information endpoints name: Providers - description: Rerank endpoints name: Rerank - description: Speech-to-text endpoints name: STT x-displayName: Transcriptions - description: Text-to-speech endpoints name: TTS x-displayName: Speech - description: Video Generation endpoints name: Video Generation - description: Workspaces endpoints name: Workspaces - description: beta.Analytics endpoints name: beta.Analytics - 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