diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index a0d386c5..61a97fdc 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -2,184 +2,188 @@ components: parameters: {} schemas: AABenchmarkEntry: - description: Artificial Analysis benchmark index scores. + 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 + description: 'Artificial Analysis Agentic Index score' example: 55.8 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' coding_index: - description: Artificial Analysis Coding Index score + description: 'Artificial Analysis Coding Index score' example: 63.2 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' intelligence_index: - description: Artificial Analysis Intelligence Index score + description: 'Artificial Analysis Intelligence Index score' example: 71.4 - format: double - nullable: true - type: number - required: - - intelligence_index - - coding_index - - agentic_index - type: object + format: 'double' + type: + - 'number' + - 'null' + 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 + 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 + provider_name: 'OpenAI' reasoning_tokens: 25 requests: 5 usage: 0.015 properties: byok_usage_inference: - description: BYOK inference cost in USD (external credits spent) + description: 'BYOK inference cost in USD (external credits spent)' example: 0.012 - format: double - type: number + format: 'double' + type: 'number' completion_tokens: - description: Total completion tokens generated + description: 'Total completion tokens generated' example: 125 - type: integer + type: 'integer' date: - description: Date of the activity (YYYY-MM-DD format) + description: 'Date of the activity (YYYY-MM-DD format)' example: '2025-08-24' - type: string + type: 'string' endpoint_id: - description: Unique identifier for the endpoint - example: 550e8400-e29b-41d4-a716-446655440000 - type: string + 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 + 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 + 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 + description: 'Total prompt tokens used' example: 50 - type: integer + type: 'integer' provider_name: - description: Name of the provider serving this endpoint - example: OpenAI - type: string + description: 'Name of the provider serving this endpoint' + example: 'OpenAI' + type: 'string' reasoning_tokens: - description: Total reasoning tokens used + description: 'Total reasoning tokens used' example: 25 - type: integer + type: 'integer' requests: - description: Number of requests made + description: 'Number of requests made' example: 5 - type: integer + type: 'integer' usage: - description: Total cost in USD (OpenRouter credits spent) + 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 + 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 + 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 + provider_name: 'OpenAI' reasoning_tokens: 25 requests: 5 usage: 0.015 properties: data: - description: List of activity items + description: 'List of activity items' items: $ref: '#/components/schemas/ActivityItem' - type: array + type: 'array' required: - - data - type: object + - 'data' + type: 'object' AdditionalToolsItem: - description: Additional tools made available to the model at this point in the input + description: 'Additional tools made available to the model at this point in the input' example: - role: developer + role: 'developer' tools: - - name: get_weather + - name: 'get_weather' parameters: properties: location: - type: string - type: object - type: function - type: additional_tools + type: 'string' + type: 'object' + type: 'function' + type: 'additional_tools' properties: id: - nullable: true - type: string + type: + - 'string' + - 'null' role: enum: - - unknown - - user - - assistant - - system - - critic - - discriminator - - developer - - tool - type: string + - 'unknown' + - 'user' + - 'assistant' + - 'system' + - 'critic' + - 'discriminator' + - 'developer' + - 'tool' + type: 'string' tools: items: anyOf: - allOf: - $ref: '#/components/schemas/FunctionTool' - properties: {} - type: object - description: Function tool definition + type: 'object' + description: 'Function tool definition' example: - description: Get the current weather in a location - name: get_weather + description: 'Get the current weather in a location' + name: 'get_weather' parameters: properties: location: - description: The city and state - type: string + description: 'The city and state' + type: 'string' unit: enum: - - celsius - - fahrenheit - type: string + - 'celsius' + - 'fahrenheit' + type: 'string' required: - - location - type: object - type: function + - 'location' + type: 'object' + type: 'function' - $ref: '#/components/schemas/Preview_WebSearchServerTool' - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - $ref: '#/components/schemas/Legacy_WebSearchServerTool' @@ -206,184 +210,149 @@ components: - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/ShellServerTool_OpenRouter' - - additionalProperties: - nullable: true + - additionalProperties: {} properties: type: - type: string + type: 'string' required: - - type - type: object - type: array + - 'type' + type: 'object' + type: 'array' type: enum: - - additional_tools - type: string + - 'additional_tools' + type: 'string' required: - - type - - role - - tools - type: object + - 'type' + - 'role' + - 'tools' + 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. + additionalProperties: {} + 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 + type: 'openrouter:web_search' properties: parameters: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' type: - type: string + type: 'string' required: - - type - type: object + - '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. + 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 + effort: 'high' properties: effort: - description: Reasoning effort level for the advisor call. - enum: - - max - - xhigh - - high - - medium - - low - - minimal - - none - type: string + 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 + 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. + 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 + model: '~anthropic/claude-opus-latest' + name: 'reviewer' + type: 'openrouter:advisor' properties: parameters: $ref: '#/components/schemas/AdvisorServerToolConfig' type: enum: - - openrouter:advisor - type: string + - 'openrouter:advisor' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' AdvisorServerToolConfig: - description: Configuration for one openrouter:advisor server tool entry. + description: 'Configuration for one openrouter:advisor server tool entry.' example: - model: ~anthropic/claude-opus-latest - name: reviewer + 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. + 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 + 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 + 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. + description: 'Maximum number of output tokens (including reasoning) the advisor may produce. When omitted, the provider''s default applies.' example: 2048 - type: integer + 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. + 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 + 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 + 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 + 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 + 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. + 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 + type: 'boolean' temperature: - description: Sampling temperature forwarded to the advisor call. When omitted, the provider's default applies. + description: 'Sampling temperature forwarded to the advisor call. When omitted, the provider''s default applies.' example: 0.7 - format: double - type: number + 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. + 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 + type: 'array' + type: 'object' AgentMessageItem: - additionalProperties: - nullable: true - description: A message routed between agents in a multi-agent session + additionalProperties: {} + description: 'A message routed between agents in a multi-agent session' example: - author: /root/worker + author: '/root/worker' content: - - text: Task complete. - type: input_text - recipient: /root - type: agent_message + - text: 'Task complete.' + type: 'input_text' + recipient: '/root' + type: 'agent_message' properties: agent: - additionalProperties: - nullable: true - nullable: true + additionalProperties: {} properties: agent_name: - type: string + type: 'string' required: - - agent_name - type: object + - 'agent_name' + type: + - 'object' + - 'null' author: - type: string + type: 'string' content: items: oneOf: @@ -391,155 +360,154 @@ components: - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} - type: object - description: Image input content item + type: 'object' + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image - - additionalProperties: - nullable: true + detail: 'auto' + image_url: 'https://example.com/image.jpg' + type: 'input_image' + - additionalProperties: {} properties: encrypted_content: - type: string + type: 'string' type: enum: - - encrypted_content - type: string + - 'encrypted_content' + type: 'string' required: - - type - - encrypted_content - type: object - type: array + - 'type' + - 'encrypted_content' + type: 'object' + type: 'array' id: - nullable: true - type: string + type: + - 'string' + - 'null' recipient: - type: string + type: 'string' type: enum: - - agent_message - type: string + - 'agent_message' + type: 'string' required: - - type - - author - - recipient - - content - type: object + - 'type' + - 'author' + - 'recipient' + - 'content' + type: 'object' AnnotationAddedEvent: allOf: - $ref: '#/components/schemas/BaseAnnotationAddedEvent' - properties: {} - type: object - description: Event emitted when a text annotation is added to output + 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 + title: 'Example' + type: 'url_citation' + url: 'https://example.com' annotation_index: 0 content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 sequence_number: 5 - type: response.output_text.annotation.added + type: 'response.output_text.annotation.added' AnthropicAdvisorMessageUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: model: - type: string + type: 'string' type: enum: - - advisor_message - type: string + - 'advisor_message' + type: 'string' required: - - type - - model - type: object + - '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 + model: 'claude-opus-4-6' output_tokens: 1612 - type: advisor_message + type: 'advisor_message' AnthropicAdvisorToolResult: example: content: - text: Advisor response text - type: advisor_result - tool_use_id: srvtoolu_01abc - type: advisor_tool_result + text: 'Advisor response text' + type: 'advisor_result' + tool_use_id: 'srvtoolu_01abc' + type: 'advisor_tool_result' properties: content: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' tool_use_id: - type: string + type: 'string' type: enum: - - advisor_tool_result - type: string + - 'advisor_tool_result' + type: 'string' required: - - type - - tool_use_id - - content - type: object + - 'type' + - 'tool_use_id' + - 'content' + type: 'object' AnthropicAllowedCallers: example: - - direct + - 'direct' items: enum: - - direct - - code_execution_20250825 - - code_execution_20260120 - type: string - type: array + - 'direct' + - 'code_execution_20250825' + - 'code_execution_20260120' + type: 'string' + type: 'array' AnthropicBase64ImageSource: example: - data: /9j/4AAQ... - media_type: image/jpeg - type: base64 + data: '/9j/4AAQ...' + media_type: 'image/jpeg' + type: 'base64' properties: data: - type: string + type: 'string' media_type: $ref: '#/components/schemas/AnthropicImageMimeType' type: enum: - - base64 - type: string + - 'base64' + type: 'string' required: - - type - - media_type - - data - type: object + - 'type' + - 'media_type' + - 'data' + type: 'object' AnthropicBase64PdfSource: example: - data: JVBERi0x... - media_type: application/pdf - type: base64 + data: 'JVBERi0x...' + media_type: 'application/pdf' + type: 'base64' properties: data: - type: string + type: 'string' media_type: enum: - - application/pdf - type: string + - 'application/pdf' + type: 'string' type: enum: - - base64 - type: string + - 'base64' + type: 'string' required: - - type - - media_type - - data - type: object + - 'type' + - 'media_type' + - 'data' + type: 'object' AnthropicBaseUsageIteration: example: cache_creation: null @@ -551,728 +519,741 @@ components: cache_creation: $ref: '#/components/schemas/AnthropicIterationCacheCreation' cache_creation_input_tokens: - type: integer + type: 'integer' cache_read_input_tokens: - type: integer + type: 'integer' input_tokens: - type: integer + type: 'integer' output_tokens: - type: integer - type: object + 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 + propertyName: 'type' example: content: [] return_code: 0 stderr: '' - stdout: Hello - type: bash_code_execution_result + 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 + file_id: 'file_01abc' + type: 'bash_code_execution_output' properties: file_id: - type: string + type: 'string' type: enum: - - bash_code_execution_output - type: string + - 'bash_code_execution_output' + type: 'string' required: - - file_id - - type - type: object + - 'file_id' + - 'type' + type: 'object' AnthropicBashCodeExecutionResult: example: content: [] return_code: 0 stderr: '' - stdout: Hello - type: bash_code_execution_result + stdout: 'Hello' + type: 'bash_code_execution_result' properties: content: items: $ref: '#/components/schemas/AnthropicBashCodeExecutionOutput' - type: array + type: 'array' return_code: - type: integer + type: 'integer' stderr: - type: string + type: 'string' stdout: - type: string + type: 'string' type: enum: - - bash_code_execution_result - type: string + - 'bash_code_execution_result' + type: 'string' required: - - content - - return_code - - stderr - - stdout - - type - type: object + - '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 + 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: 'string' type: enum: - - bash_code_execution_tool_result - type: string + - 'bash_code_execution_tool_result' + type: 'string' required: - - type - - content - - tool_use_id - type: object + - 'type' + - 'content' + - 'tool_use_id' + type: 'object' AnthropicBashCodeExecutionToolResultError: example: - error_code: unavailable - type: bash_code_execution_tool_result_error + 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 + - '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 + - 'bash_code_execution_tool_result_error' + type: 'string' required: - - error_code - - type - type: object + - '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. When set on an individual content block, it marks an explicit cache - breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter - converts them to the provider's native format. + 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. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider''s native format.' example: - type: ephemeral + type: 'ephemeral' properties: ttl: $ref: '#/components/schemas/AnthropicCacheControlTtl' type: enum: - - ephemeral - type: string + - 'ephemeral' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' AnthropicCacheControlTtl: enum: - - 5m - - 1h - example: 5m - type: string + - '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 + type: 'integer' ephemeral_5m_input_tokens: - type: integer + type: 'integer' required: - - ephemeral_5m_input_tokens - - ephemeral_1h_input_tokens - type: object + - 'ephemeral_5m_input_tokens' + - 'ephemeral_1h_input_tokens' + type: + - 'object' + - 'null' AnthropicCaller: discriminator: mapping: code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' direct: '#/components/schemas/AnthropicDirectCaller' - propertyName: type + propertyName: 'type' example: - type: direct + type: 'direct' oneOf: - $ref: '#/components/schemas/AnthropicDirectCaller' - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' AnthropicCitationCharLocation: example: - cited_text: Example cited text + 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 + type: 'char_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_char_index: - type: integer + type: 'integer' file_id: - nullable: true - type: string + type: + - 'string' + - 'null' start_char_index: - type: integer + type: 'integer' type: enum: - - char_location - type: string + - 'char_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_char_index - - end_char_index - - file_id - type: object + - 'type' + - 'cited_text' + - 'document_index' + - 'document_title' + - 'start_char_index' + - 'end_char_index' + - 'file_id' + type: 'object' AnthropicCitationCharLocationParam: example: - cited_text: Example cited text + cited_text: 'Example cited text' document_index: 0 document_title: null end_char_index: 18 start_char_index: 0 - type: char_location + type: 'char_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_char_index: - type: integer + type: 'integer' start_char_index: - type: integer + type: 'integer' type: enum: - - char_location - type: string + - 'char_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_char_index - - end_char_index - type: object + - 'type' + - 'cited_text' + - 'document_index' + - 'document_title' + - 'start_char_index' + - 'end_char_index' + type: 'object' AnthropicCitationContentBlockLocation: example: - cited_text: Example cited text + 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 + type: 'content_block_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_block_index: - type: integer + type: 'integer' file_id: - nullable: true - type: string + type: + - 'string' + - 'null' start_block_index: - type: integer + type: 'integer' type: enum: - - content_block_location - type: string + - 'content_block_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_block_index - - end_block_index - - file_id - type: object + - 'type' + - 'cited_text' + - 'document_index' + - 'document_title' + - 'start_block_index' + - 'end_block_index' + - 'file_id' + type: 'object' AnthropicCitationContentBlockLocationParam: example: - cited_text: Example cited text + cited_text: 'Example cited text' document_index: 0 document_title: null end_block_index: 1 start_block_index: 0 - type: content_block_location + type: 'content_block_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_block_index: - type: integer + type: 'integer' start_block_index: - type: integer + type: 'integer' type: enum: - - content_block_location - type: string + - 'content_block_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_block_index - - end_block_index - type: object + - 'type' + - 'cited_text' + - 'document_index' + - 'document_title' + - 'start_block_index' + - 'end_block_index' + type: 'object' AnthropicCitationPageLocation: example: - cited_text: Example cited text + 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 + type: 'page_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_page_number: - type: integer + type: 'integer' file_id: - nullable: true - type: string + type: + - 'string' + - 'null' start_page_number: - type: integer + type: 'integer' type: enum: - - page_location - type: string + - 'page_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_page_number - - end_page_number - - file_id - type: object + - 'type' + - 'cited_text' + - 'document_index' + - 'document_title' + - 'start_page_number' + - 'end_page_number' + - 'file_id' + type: 'object' AnthropicCitationPageLocationParam: example: - cited_text: Example cited text + cited_text: 'Example cited text' document_index: 0 document_title: null end_page_number: 2 start_page_number: 1 - type: page_location + type: 'page_location' properties: cited_text: - type: string + type: 'string' document_index: - type: integer + type: 'integer' document_title: - nullable: true - type: string + type: + - 'string' + - 'null' end_page_number: - type: integer + type: 'integer' start_page_number: - type: integer + type: 'integer' type: enum: - - page_location - type: string + - 'page_location' + type: 'string' required: - - type - - cited_text - - document_index - - document_title - - start_page_number - - end_page_number - type: object + - '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 + type: 'boolean' required: - - enabled - type: object + - 'enabled' + type: + - 'object' + - 'null' AnthropicCitationSearchResultLocation: example: - cited_text: Example cited text + cited_text: 'Example cited text' end_block_index: 1 search_result_index: 0 - source: example_source + source: 'example_source' start_block_index: 0 - title: Example Result - type: search_result_location + title: 'Example Result' + type: 'search_result_location' properties: cited_text: - type: string + type: 'string' end_block_index: - type: integer + type: 'integer' search_result_index: - type: integer + type: 'integer' source: - type: string + type: 'string' start_block_index: - type: integer + 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 + type: + - 'string' + - 'null' + type: + enum: + - 'search_result_location' + type: 'string' + required: + - 'type' + - 'cited_text' + - 'search_result_index' + - 'source' + - 'title' + - 'start_block_index' + - 'end_block_index' + type: 'object' AnthropicCitationSearchResultLocationParam: example: - cited_text: Example cited text + cited_text: 'Example cited text' end_block_index: 1 search_result_index: 0 - source: example_source + source: 'example_source' start_block_index: 0 - title: Example Result - type: search_result_location + title: 'Example Result' + type: 'search_result_location' properties: cited_text: - type: string + type: 'string' end_block_index: - type: integer + type: 'integer' search_result_index: - type: integer + type: 'integer' source: - type: string + type: 'string' start_block_index: - type: integer + 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 + type: + - 'string' + - 'null' + 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 + 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 + type: 'string' encrypted_index: - type: string + type: 'string' title: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - web_search_result_location - type: string + - 'web_search_result_location' + type: 'string' url: - type: string - required: - - type - - cited_text - - encrypted_index - - title - - url - type: object + type: 'string' + required: + - 'type' + - 'cited_text' + - 'encrypted_index' + - 'title' + - 'url' + type: 'object' AnthropicCitationWebSearchResultLocationParam: example: - cited_text: Example cited text - encrypted_index: enc_idx_0 - title: Example Page - type: web_search_result_location - url: https://example.com + 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 + type: 'string' encrypted_index: - type: string + type: 'string' title: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - web_search_result_location - type: string + - 'web_search_result_location' + type: 'string' url: - type: string - required: - - type - - cited_text - - encrypted_index - - title - - url - type: object + type: 'string' + required: + - 'type' + - 'cited_text' + - 'encrypted_index' + - 'title' + - 'url' + type: 'object' AnthropicCodeExecution20250825Caller: example: - tool_id: toolu_01abc - type: code_execution_20250825 + tool_id: 'toolu_01abc' + type: 'code_execution_20250825' properties: tool_id: - type: string + type: 'string' type: enum: - - code_execution_20250825 - type: string + - 'code_execution_20250825' + type: 'string' required: - - type - - tool_id - type: object + - 'type' + - 'tool_id' + type: 'object' AnthropicCodeExecution20260120Caller: example: - tool_id: toolu_01abc - type: code_execution_20260120 + tool_id: 'toolu_01abc' + type: 'code_execution_20260120' properties: tool_id: - type: string + type: 'string' type: enum: - - code_execution_20260120 - type: string + - 'code_execution_20260120' + type: 'string' required: - - type - - tool_id - type: object + - '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 + propertyName: 'type' example: content: [] return_code: 0 stderr: '' - stdout: Hello - type: code_execution_result + 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 + file_id: 'file_01abc' + type: 'code_execution_output' properties: file_id: - type: string + type: 'string' type: enum: - - code_execution_output - type: string + - 'code_execution_output' + type: 'string' required: - - file_id - - type - type: object + - 'file_id' + - 'type' + type: 'object' AnthropicCodeExecutionResult: example: content: [] return_code: 0 stderr: '' - stdout: Hello - type: code_execution_result + stdout: 'Hello' + type: 'code_execution_result' properties: content: items: $ref: '#/components/schemas/AnthropicCodeExecutionOutput' - type: array + type: 'array' return_code: - type: integer + type: 'integer' stderr: - type: string + type: 'string' stdout: - type: string + type: 'string' type: enum: - - code_execution_result - type: string + - 'code_execution_result' + type: 'string' required: - - content - - return_code - - stderr - - stdout - - type - type: object + - '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 + 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: 'string' type: enum: - - code_execution_tool_result - type: string + - 'code_execution_tool_result' + type: 'string' required: - - type - - content - - tool_use_id - type: object + - 'type' + - 'content' + - 'tool_use_id' + type: 'object' AnthropicCodeExecutionToolResultError: example: - error_code: unavailable - type: code_execution_tool_result_error + 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 + - 'code_execution_tool_result_error' + type: 'string' required: - - error_code - - type - type: object + - 'error_code' + - 'type' + type: 'object' AnthropicCompactionBlock: example: - content: Compacted summary of conversation. - type: compaction + content: 'Compacted summary of conversation.' + type: 'compaction' properties: content: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - compaction - type: string + - 'compaction' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: 'object' AnthropicCompactionUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: type: enum: - - compaction - type: string + - 'compaction' + type: 'string' required: - - type - type: object + - '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 + type: 'compaction' AnthropicContainer: example: expires_at: '2026-04-08T00:00:00Z' - id: ctr_01abc - nullable: true + id: 'ctr_01abc' properties: expires_at: - type: string + type: 'string' id: - type: string + type: 'string' required: - - id - - expires_at - type: object + - 'id' + - 'expires_at' + type: + - 'object' + - 'null' AnthropicContainerUpload: example: - file_id: file_01abc - type: container_upload + file_id: 'file_01abc' + type: 'container_upload' properties: file_id: - type: string + type: 'string' type: enum: - - container_upload - type: string + - 'container_upload' + type: 'string' required: - - type - - file_id - type: object + - 'type' + - 'file_id' + type: 'object' AnthropicDirectCaller: example: - type: direct + type: 'direct' properties: type: enum: - - direct - type: string + - 'direct' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' AnthropicDocumentBlock: example: citations: null source: - data: Hello, world! - media_type: text/plain - type: text + data: 'Hello, world!' + media_type: 'text/plain' + type: 'text' title: null - type: document + type: 'document' properties: citations: $ref: '#/components/schemas/AnthropicCitationsConfig' @@ -1281,36 +1262,39 @@ components: - $ref: '#/components/schemas/AnthropicBase64PdfSource' - $ref: '#/components/schemas/AnthropicPlainTextSource' title: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - document - type: string + - 'document' + type: 'string' required: - - source - - title - - type - type: object + - 'source' + - 'title' + - 'type' + type: 'object' AnthropicDocumentBlockParam: example: source: - data: Hello, world! - media_type: text/plain - type: text - type: document + 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 + type: 'boolean' + type: + - 'object' + - 'null' context: - nullable: true - type: string + type: + - 'string' + - 'null' source: oneOf: - $ref: '#/components/schemas/AnthropicBase64PdfSource' @@ -1318,89 +1302,90 @@ components: - properties: content: anyOf: - - type: string + - type: 'string' - items: discriminator: mapping: image: '#/components/schemas/AnthropicImageBlockParam' text: '#/components/schemas/AnthropicTextBlockParam' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' - $ref: '#/components/schemas/AnthropicImageBlockParam' - type: array + type: 'array' type: enum: - - content - type: string + - 'content' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: 'object' - $ref: '#/components/schemas/AnthropicUrlPdfSource' - $ref: '#/components/schemas/AnthropicFileDocumentSource' title: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - document - type: string + - 'document' + type: 'string' required: - - type - - source - type: object + - 'type' + - 'source' + type: 'object' AnthropicEncryptedCodeExecutionResult: example: content: [] - encrypted_stdout: enc_stdout + encrypted_stdout: 'enc_stdout' return_code: 0 stderr: '' - type: encrypted_code_execution_result + type: 'encrypted_code_execution_result' properties: content: items: $ref: '#/components/schemas/AnthropicCodeExecutionOutput' - type: array + type: 'array' encrypted_stdout: - type: string + type: 'string' return_code: - type: integer + type: 'integer' stderr: - type: string + type: 'string' type: enum: - - encrypted_code_execution_result - type: string + - 'encrypted_code_execution_result' + type: 'string' required: - - content - - encrypted_stdout - - return_code - - stderr - - type - type: object + - 'content' + - 'encrypted_stdout' + - 'return_code' + - 'stderr' + - 'type' + type: 'object' AnthropicFileDocumentSource: example: - file_id: file_011CNha8iCJcU1wXNR6q4V8w - type: file + file_id: 'file_011CNha8iCJcU1wXNR6q4V8w' + type: 'file' properties: file_id: - type: string + type: 'string' type: enum: - - file - type: string + - 'file' + type: 'string' required: - - type - - file_id - type: object + - 'type' + - 'file_id' + type: 'object' AnthropicImageBlockParam: example: source: - data: /9j/4AAQ... - media_type: image/jpeg - type: base64 - type: image + data: '/9j/4AAQ...' + media_type: 'image/jpeg' + type: 'base64' + type: 'image' properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' @@ -1409,261 +1394,271 @@ components: mapping: base64: '#/components/schemas/AnthropicBase64ImageSource' url: '#/components/schemas/AnthropicUrlImageSource' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/AnthropicBase64ImageSource' - $ref: '#/components/schemas/AnthropicUrlImageSource' type: enum: - - image - type: string + - 'image' + type: 'string' required: - - type - - source - type: object + - 'type' + - 'source' + type: 'object' AnthropicImageMimeType: enum: - - image/jpeg - - image/png - - image/gif - - image/webp - example: image/jpeg - type: string + - 'image/jpeg' + - 'image/png' + - 'image/gif' + - 'image/webp' + example: 'image/jpeg' + type: 'string' AnthropicInputTokensClearAtLeast: example: - type: input_tokens + type: 'input_tokens' value: 50000 - nullable: true properties: type: enum: - - input_tokens - type: string + - 'input_tokens' + type: 'string' value: - type: integer + type: 'integer' required: - - type - - value - type: object + - 'type' + - 'value' + type: + - 'object' + - 'null' AnthropicInputTokensTrigger: example: - type: input_tokens + type: 'input_tokens' value: 100000 properties: type: enum: - - input_tokens - type: string + - 'input_tokens' + type: 'string' value: - type: integer + type: 'integer' required: - - type - - value - type: object + - '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 + type: 'integer' ephemeral_5m_input_tokens: - type: integer - type: object + type: 'integer' + type: + - 'object' + - 'null' AnthropicMessageUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: model: - type: string + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - type - type: object + - '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 + type: 'message' AnthropicOutputTokensDetails: example: thinking_tokens: 0 - nullable: true properties: thinking_tokens: - type: integer + type: 'integer' required: - - thinking_tokens - type: object + - 'thinking_tokens' + type: + - 'object' + - 'null' AnthropicPlainTextSource: example: - data: Hello, world! - media_type: text/plain - type: text + data: 'Hello, world!' + media_type: 'text/plain' + type: 'text' properties: data: - type: string + type: 'string' media_type: enum: - - text/plain - type: string + - 'text/plain' + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - media_type - - data - type: object + - 'type' + - 'media_type' + - 'data' + type: 'object' AnthropicRedactedThinkingBlock: example: - data: cmVkYWN0ZWQ= - type: redacted_thinking + data: 'cmVkYWN0ZWQ=' + type: 'redacted_thinking' properties: data: - type: string + type: 'string' type: enum: - - redacted_thinking - type: string + - 'redacted_thinking' + type: 'string' required: - - type - - data - type: object + - 'type' + - 'data' + type: 'object' AnthropicRefusalStopDetails: - description: Structured information about a refusal + description: 'Structured information about a refusal' example: - category: cyber - explanation: The request was refused due to policy. - type: refusal - nullable: true + category: 'cyber' + explanation: 'The request was refused due to policy.' + type: 'refusal' properties: category: enum: - - cyber - - bio + - 'cyber' + - 'bio' - null - nullable: true - type: string + type: + - 'string' + - 'null' explanation: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - refusal - type: string + - 'refusal' + type: 'string' required: - - type - - category - - explanation - type: object + - 'type' + - 'category' + - 'explanation' + type: + - 'object' + - 'null' AnthropicSearchResultBlockParam: example: content: - - text: Result content - type: text - source: example_source - title: Example Result - type: search_result + - 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 + type: 'boolean' + type: 'object' content: items: $ref: '#/components/schemas/AnthropicTextBlockParam' - type: array + type: 'array' source: - type: string + type: 'string' title: - type: string + type: 'string' type: enum: - - search_result - type: string + - 'search_result' + type: 'string' required: - - type - - source - - title - - content - type: object + - 'type' + - 'source' + - 'title' + - 'content' + type: 'object' AnthropicServerToolErrorCode: enum: - - invalid_tool_input - - unavailable - - too_many_requests - - execution_time_exceeded - example: unavailable - type: string + - '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 + type: 'integer' web_search_requests: - type: integer + type: 'integer' required: - - web_search_requests - - web_fetch_requests - type: object + - 'web_search_requests' + - 'web_fetch_requests' + type: + - 'object' + - 'null' AnthropicServiceTier: enum: - - standard - - priority - - batch + - 'standard' + - 'priority' + - 'batch' - null - example: standard - nullable: true - type: string + example: 'standard' + type: + - 'string' + - 'null' AnthropicSpeed: enum: - - fast - - standard + - 'fast' + - 'standard' - null - example: standard - nullable: true - type: string + example: 'standard' + type: + - 'string' + - 'null' AnthropicTextBlock: example: citations: null - text: Hello, world! - type: text + text: 'Hello, world!' + type: 'text' properties: citations: items: $ref: '#/components/schemas/AnthropicTextCitation' - nullable: true - type: array + type: + - 'array' + - 'null' text: - type: string + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - text - - citations - type: object + - 'type' + - 'text' + - 'citations' + type: 'object' AnthropicTextBlockParam: example: - text: Hello, world! - type: text + text: 'Hello, world!' + type: 'text' properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' @@ -1676,25 +1671,26 @@ components: page_location: '#/components/schemas/AnthropicCitationPageLocationParam' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocationParam' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocationParam' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocationParam' - $ref: '#/components/schemas/AnthropicCitationPageLocationParam' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam' - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocationParam' - $ref: '#/components/schemas/AnthropicCitationSearchResultLocationParam' - nullable: true - type: array + type: + - 'array' + - 'null' text: - type: string + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' AnthropicTextCitation: discriminator: mapping: @@ -1703,15 +1699,15 @@ components: page_location: '#/components/schemas/AnthropicCitationPageLocation' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - propertyName: type + propertyName: 'type' example: - cited_text: Example text + cited_text: 'Example text' document_index: 0 document_title: null end_char_index: 10 file_id: null start_char_index: 0 - type: char_location + type: 'char_location' oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocation' - $ref: '#/components/schemas/AnthropicCitationPageLocation' @@ -1725,14 +1721,14 @@ components: 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 + propertyName: 'type' example: - content: file content - file_type: text + content: 'file content' + file_type: 'text' num_lines: 10 start_line: 1 total_lines: 10 - type: text_editor_code_execution_view_result + type: 'text_editor_code_execution_view_result' oneOf: - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' @@ -1741,18 +1737,18 @@ components: AnthropicTextEditorCodeExecutionCreateResult: example: is_file_update: false - type: text_editor_code_execution_create_result + type: 'text_editor_code_execution_create_result' properties: is_file_update: - type: boolean + type: 'boolean' type: enum: - - text_editor_code_execution_create_result - type: string + - 'text_editor_code_execution_create_result' + type: 'string' required: - - is_file_update - - type - type: object + - 'is_file_update' + - 'type' + type: 'object' AnthropicTextEditorCodeExecutionStrReplaceResult: example: lines: null @@ -1760,363 +1756,373 @@ components: new_start: null old_lines: null old_start: null - type: text_editor_code_execution_str_replace_result + type: 'text_editor_code_execution_str_replace_result' properties: lines: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' new_lines: - nullable: true - type: integer + type: + - 'integer' + - 'null' new_start: - nullable: true - type: integer + type: + - 'integer' + - 'null' old_lines: - nullable: true - type: integer + type: + - 'integer' + - 'null' old_start: - nullable: true - type: integer + type: + - 'integer' + - 'null' type: enum: - - text_editor_code_execution_str_replace_result - type: string + - 'text_editor_code_execution_str_replace_result' + type: 'string' required: - - lines - - new_lines - - new_start - - old_lines - - old_start - - type - type: object + - 'lines' + - 'new_lines' + - 'new_start' + - 'old_lines' + - 'old_start' + - 'type' + type: 'object' AnthropicTextEditorCodeExecutionToolResult: example: content: - content: file content - file_type: text + 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 + 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: 'string' type: enum: - - text_editor_code_execution_tool_result - type: string + - 'text_editor_code_execution_tool_result' + type: 'string' required: - - type - - content - - tool_use_id - type: object + - 'type' + - 'content' + - 'tool_use_id' + type: 'object' AnthropicTextEditorCodeExecutionToolResultError: example: - error_code: unavailable + error_code: 'unavailable' error_message: null - type: text_editor_code_execution_tool_result_error + 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 + - 'invalid_tool_input' + - 'unavailable' + - 'too_many_requests' + - 'execution_time_exceeded' + - 'file_not_found' + type: 'string' error_message: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - text_editor_code_execution_tool_result_error - type: string + - 'text_editor_code_execution_tool_result_error' + type: 'string' required: - - error_code - - error_message - - type - type: object + - 'error_code' + - 'error_message' + - 'type' + type: 'object' AnthropicTextEditorCodeExecutionViewResult: example: - content: file content - file_type: text + content: 'file content' + file_type: 'text' num_lines: 10 start_line: 1 total_lines: 10 - type: text_editor_code_execution_view_result + type: 'text_editor_code_execution_view_result' properties: content: - type: string + type: 'string' file_type: enum: - - text - - image - - pdf - type: string + - 'text' + - 'image' + - 'pdf' + type: 'string' num_lines: - nullable: true - type: integer + type: + - 'integer' + - 'null' start_line: - nullable: true - type: integer + type: + - 'integer' + - 'null' total_lines: - nullable: true - type: integer + type: + - 'integer' + - 'null' type: enum: - - text_editor_code_execution_view_result - type: string + - 'text_editor_code_execution_view_result' + type: 'string' required: - - content - - file_type - - num_lines - - start_line - - total_lines - - type - type: object + - '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 + signature: 'sig_abc123' + thinking: 'Let me think about this...' + type: 'thinking' properties: signature: - type: string + type: 'string' thinking: - type: string + type: 'string' type: enum: - - thinking - type: string + - 'thinking' + type: 'string' required: - - type - - thinking - - signature - type: object + - 'type' + - 'thinking' + - 'signature' + type: 'object' AnthropicThinkingDisplay: enum: - - summarized - - omitted + - 'summarized' + - 'omitted' - null - example: summarized - nullable: true - type: string + example: 'summarized' + type: + - 'string' + - 'null' AnthropicThinkingTurns: example: - type: thinking_turns + type: 'thinking_turns' value: 3 properties: type: enum: - - thinking_turns - type: string + - 'thinking_turns' + type: 'string' value: - type: integer + type: 'integer' required: - - type - - value - type: object + - 'type' + - 'value' + type: 'object' AnthropicToolReference: example: - tool_name: my_tool - type: tool_reference + tool_name: 'my_tool' + type: 'tool_reference' properties: tool_name: - type: string + type: 'string' type: enum: - - tool_reference - type: string + - 'tool_reference' + type: 'string' required: - - tool_name - - type - type: object + - '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 + propertyName: 'type' example: tool_references: - - tool_name: my_tool - type: tool_reference - type: tool_search_tool_search_result + - 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 + - tool_name: 'my_tool' + type: 'tool_reference' + type: 'tool_search_tool_search_result' properties: tool_references: items: $ref: '#/components/schemas/AnthropicToolReference' - type: array + type: 'array' type: enum: - - tool_search_tool_search_result - type: string + - 'tool_search_tool_search_result' + type: 'string' required: - - tool_references - - type - type: object + - 'tool_references' + - 'type' + type: 'object' AnthropicToolSearchResultError: example: - error_code: unavailable + error_code: 'unavailable' error_message: null - type: tool_search_tool_result_error + type: 'tool_search_tool_result_error' properties: error_code: $ref: '#/components/schemas/AnthropicServerToolErrorCode' error_message: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - tool_search_tool_result_error - type: string + - 'tool_search_tool_result_error' + type: 'string' required: - - error_code - - error_message - - type - type: object + - '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 + - 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: 'string' type: enum: - - tool_search_tool_result - type: string + - 'tool_search_tool_result' + type: 'string' required: - - type - - content - - tool_use_id - type: object + - 'type' + - 'content' + - 'tool_use_id' + type: 'object' AnthropicToolUseBlock: example: caller: - type: direct - id: toolu_01abc + type: 'direct' + id: 'toolu_01abc' input: - location: San Francisco - name: get_weather - type: tool_use + location: 'San Francisco' + name: 'get_weather' + type: 'tool_use' properties: caller: $ref: '#/components/schemas/AnthropicCaller' id: - type: string - input: - nullable: true + type: 'string' + input: {} name: - type: string + type: 'string' type: enum: - - tool_use - type: string + - 'tool_use' + type: 'string' required: - - type - - id - - caller - - name - type: object + - 'type' + - 'id' + - 'caller' + - 'name' + type: 'object' AnthropicToolUsesKeep: example: - type: tool_uses + type: 'tool_uses' value: 5 properties: type: enum: - - tool_uses - type: string + - 'tool_uses' + type: 'string' value: - type: integer + type: 'integer' required: - - type - - value - type: object + - 'type' + - 'value' + type: 'object' AnthropicToolUsesTrigger: example: - type: tool_uses + type: 'tool_uses' value: 10 properties: type: enum: - - tool_uses - type: string + - 'tool_uses' + type: 'string' value: - type: integer + type: 'integer' required: - - type - - value - type: object + - 'type' + - 'value' + type: 'object' AnthropicUnknownUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: type: - type: string + type: 'string' required: - - type - type: object + - '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 + type: 'unknown' AnthropicUrlImageSource: example: - type: url - url: https://example.com/image.jpg + type: 'url' + url: 'https://example.com/image.jpg' properties: type: enum: - - url - type: string + - 'url' + type: 'string' url: - type: string + type: 'string' required: - - type - - url - type: object + - 'type' + - 'url' + type: 'object' AnthropicUrlPdfSource: example: - type: url - url: https://example.com/document.pdf + type: 'url' + url: 'https://example.com/document.pdf' properties: type: enum: - - url - type: string + - 'url' + type: 'string' url: - type: string + type: 'string' required: - - type - - url - type: object + - 'type' + - 'url' + type: 'object' AnthropicUsage: example: cache_creation: null @@ -2127,23 +2133,26 @@ components: output_tokens: 50 output_tokens_details: null server_tool_use: null - service_tier: standard + service_tier: 'standard' properties: cache_creation: $ref: '#/components/schemas/AnthropicCacheCreation' cache_creation_input_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' cache_read_input_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' inference_geo: - nullable: true - type: string + type: + - 'string' + - 'null' input_tokens: - type: integer + type: 'integer' output_tokens: - type: integer + type: 'integer' output_tokens_details: $ref: '#/components/schemas/AnthropicOutputTokensDetails' server_tool_use: @@ -2151,16 +2160,16 @@ components: 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 + - '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' @@ -2173,179 +2182,182 @@ components: cache_read_input_tokens: 0 input_tokens: 100 output_tokens: 50 - type: message + type: 'message' AnthropicWebFetchBlock: example: content: citations: null source: data: '' - media_type: text/plain - type: text + media_type: 'text/plain' + type: 'text' title: null - type: document + type: 'document' retrieved_at: null - type: web_fetch_result - url: https://example.com + type: 'web_fetch_result' + url: 'https://example.com' properties: content: $ref: '#/components/schemas/AnthropicDocumentBlock' retrieved_at: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - web_fetch_result - type: string + - 'web_fetch_result' + type: 'string' url: - type: string + type: 'string' required: - - content - - retrieved_at - - type - - url - type: object + - '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 + propertyName: 'type' example: content: citations: null source: data: '' - media_type: text/plain - type: text + media_type: 'text/plain' + type: 'text' title: null - type: document + type: 'document' retrieved_at: null - type: web_fetch_result - url: https://example.com + type: 'web_fetch_result' + url: 'https://example.com' oneOf: - $ref: '#/components/schemas/AnthropicWebFetchToolResultError' - $ref: '#/components/schemas/AnthropicWebFetchBlock' AnthropicWebFetchToolResult: example: caller: - type: direct + type: 'direct' content: content: citations: null source: data: '' - media_type: text/plain - type: text + media_type: 'text/plain' + type: 'text' title: null - type: document + type: 'document' retrieved_at: null - type: web_fetch_result - url: https://example.com - tool_use_id: srvtoolu_01abc - type: web_fetch_tool_result + 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: 'string' type: enum: - - web_fetch_tool_result - type: string + - 'web_fetch_tool_result' + type: 'string' required: - - type - - caller - - content - - tool_use_id - type: object + - 'type' + - 'caller' + - 'content' + - 'tool_use_id' + type: 'object' AnthropicWebFetchToolResultError: example: - error_code: unavailable - type: web_fetch_tool_result_error + 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 + - '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 + - 'web_fetch_tool_result_error' + type: 'string' required: - - type - - error_code - type: object + - 'type' + - 'error_code' + type: 'object' AnthropicWebSearchResult: example: - encrypted_content: enc_content_0 + encrypted_content: 'enc_content_0' page_age: null - title: Example Page - type: web_search_result - url: https://example.com + title: 'Example Page' + type: 'web_search_result' + url: 'https://example.com' properties: encrypted_content: - type: string + type: 'string' page_age: - nullable: true - type: string + type: + - 'string' + - 'null' title: - type: string + type: 'string' type: enum: - - web_search_result - type: string + - 'web_search_result' + type: 'string' url: - type: string - required: - - type - - encrypted_content - - page_age - - title - - url - type: object + 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 + encrypted_content: 'enc_content_0' + title: 'Example Page' + type: 'web_search_result' + url: 'https://example.com' properties: encrypted_content: - type: string + type: 'string' page_age: - nullable: true - type: string + type: + - 'string' + - 'null' title: - type: string + type: 'string' type: enum: - - web_search_result - type: string + - 'web_search_result' + type: 'string' url: - type: string + type: 'string' required: - - type - - encrypted_content - - title - - url - type: object + - 'type' + - 'encrypted_content' + - 'title' + - 'url' + type: 'object' AnthropicWebSearchToolResult: example: caller: - type: direct + type: 'direct' content: [] - tool_use_id: srvtoolu_01abc - type: web_search_tool_result + tool_use_id: 'srvtoolu_01abc' + type: 'web_search_tool_result' properties: caller: $ref: '#/components/schemas/AnthropicCaller' @@ -2353,420 +2365,393 @@ components: anyOf: - items: $ref: '#/components/schemas/AnthropicWebSearchResult' - type: array + type: 'array' - $ref: '#/components/schemas/AnthropicWebSearchToolResultError' tool_use_id: - type: string + type: 'string' type: enum: - - web_search_tool_result - type: string + - 'web_search_tool_result' + type: 'string' required: - - type - - caller - - tool_use_id - - content - type: object + - 'type' + - 'caller' + - 'tool_use_id' + - 'content' + type: 'object' AnthropicWebSearchToolResultError: example: - error_code: unavailable - type: web_search_tool_result_error + 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 + - '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 + - 'web_search_tool_result_error' + type: 'string' required: - - type - - error_code - type: object + - 'type' + - 'error_code' + type: 'object' AnthropicWebSearchToolUserLocation: example: - city: San Francisco - country: US - region: California - timezone: America/Los_Angeles - type: approximate - nullable: true + city: 'San Francisco' + country: 'US' + region: 'California' + timezone: 'America/Los_Angeles' + type: 'approximate' properties: city: - nullable: true - type: string + type: + - 'string' + - 'null' country: - nullable: true - type: string + type: + - 'string' + - 'null' region: - nullable: true - type: string + type: + - 'string' + - 'null' timezone: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - approximate - type: string + - 'approximate' + type: 'string' required: - - type - type: object + - 'type' + type: + - 'object' + - 'null' ApiErrorType: - description: Canonical OpenRouter error type, stable across all API formats + 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 + - '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. + 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 + 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 + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + path: '/src/main.ts' + type: 'update_file' + status: 'completed' + type: 'apply_patch_call' properties: call_id: - type: string + type: 'string' id: - nullable: true - type: string + type: + - 'string' + - 'null' operation: $ref: '#/components/schemas/ApplyPatchCallOperation' status: $ref: '#/components/schemas/ApplyPatchCallStatus' type: enum: - - apply_patch_call - type: string + - 'apply_patch_call' + type: 'string' required: - - type - - call_id - - status - - operation - type: object + - '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. + 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 + propertyName: 'type' + example: + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + 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. + 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 + delta: "+console.log(\"hi\");\n" + item_id: 'apc_abc123' output_index: 0 sequence_number: 5 - type: response.apply_patch_call_operation_diff.delta + type: 'response.apply_patch_call_operation_diff.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.apply_patch_call_operation_diff.delta - type: string + - 'response.apply_patch_call_operation_diff.delta' + type: 'string' required: - - type - - item_id - - output_index - - delta - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'delta' + - 'sequence_number' + type: 'object' ApplyPatchCallOperationDiffDoneEvent: - description: Emitted when `operation.diff` streaming completes for an `apply_patch_call`. + description: 'Emitted when `operation.diff` streaming completes for an `apply_patch_call`.' example: - diff: | - @@ - +console.log("hi"); - item_id: apc_abc123 + diff: "@@\n+console.log(\"hi\");\n" + item_id: 'apc_abc123' output_index: 0 sequence_number: 12 - type: response.apply_patch_call_operation_diff.done + type: 'response.apply_patch_call_operation_diff.done' properties: diff: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.apply_patch_call_operation_diff.done - type: string + - 'response.apply_patch_call_operation_diff.done' + type: 'string' required: - - type - - item_id - - output_index - - diff - - sequence_number - type: object + - '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. + 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 + call_id: 'call_abc123' + output: 'Applied patch to /src/main.ts' + status: 'completed' + type: 'apply_patch_call_output' properties: call_id: - type: string + type: 'string' id: - nullable: true - type: string + type: + - 'string' + - 'null' output: - nullable: true - type: string + type: + - 'string' + - 'null' status: enum: - - completed - - failed - type: string + - 'completed' + - 'failed' + type: 'string' type: enum: - - apply_patch_call_output - type: string + - 'apply_patch_call_output' + type: 'string' required: - - type - - call_id - - status - type: object + - 'type' + - 'call_id' + - 'status' + type: 'object' ApplyPatchCallStatus: - description: Lifecycle state of an `apply_patch_call` output item. + description: 'Lifecycle state of an `apply_patch_call` output item.' enum: - - in_progress - - completed - example: completed - type: string + - '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. + 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 + diff: "@@\n+console.log(\"hi\");\n" + path: '/src/main.ts' + type: 'create_file' properties: diff: - type: string + type: 'string' path: - type: string + type: 'string' type: enum: - - create_file - type: string + - 'create_file' + type: 'string' required: - - type - - path - - diff - type: object + - '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. + 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 + path: '/src/main.ts' + type: 'delete_file' properties: path: - type: string + type: 'string' type: enum: - - delete_file - type: string + - 'delete_file' + type: 'string' required: - - type - - path - type: object + - '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. + 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 + - 'auto' + - 'native' + - 'openrouter' + example: 'auto' + type: 'string' ApplyPatchServerTool: - description: Apply patch tool configuration + description: 'Apply patch tool configuration' example: - type: apply_patch + type: 'apply_patch' properties: type: enum: - - apply_patch - type: string + - 'apply_patch' + type: 'string' required: - - type - type: object + - '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. + 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 + type: 'openrouter:apply_patch' properties: parameters: $ref: '#/components/schemas/ApplyPatchServerToolConfig' type: enum: - - openrouter:apply_patch - type: string + - 'openrouter:apply_patch' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ApplyPatchServerToolConfig: - description: Configuration for the openrouter:apply_patch server tool + description: 'Configuration for the openrouter:apply_patch server tool' example: - engine: auto + engine: 'auto' properties: engine: $ref: '#/components/schemas/ApplyPatchEngineEnum' - type: object + type: 'object' ApplyPatchUpdateFileOperation: - description: >- - The `update_file` variant of an `apply_patch_call.operation`. Carries a V4A diff describing edits to an existing - file. + 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 + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + path: '/src/main.ts' + type: 'update_file' properties: diff: - type: string + type: 'string' path: - type: string + type: 'string' type: enum: - - update_file - type: string + - 'update_file' + type: 'string' required: - - type - - path - - diff - type: object + - 'type' + - 'path' + - 'diff' + type: 'object' AppRankingsItem: example: app_id: 12345 - app_name: Cline + app_name: 'Cline' rank: 1 total_requests: 4321 total_tokens: '12345678' properties: app_id: - description: Stable numeric identifier of the app on OpenRouter. + description: 'Stable numeric identifier of the app on OpenRouter.' example: 12345 - type: integer + type: 'integer' app_name: - description: Public display name of the app. - example: Cline - type: string + 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`. + description: '1-based position of the app within this response, per the requested `sort`.' example: 1 - type: integer + type: 'integer' total_requests: - description: Number of requests attributed to the app inside the date window. + description: 'Number of requests attributed to the app inside the date window.' example: 4321 - type: integer + 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. + 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 + type: 'string' + required: + - 'rank' + - 'app_id' + - 'app_name' + - 'total_tokens' + - 'total_requests' + type: 'object' AppRankingsResponse: example: data: - app_id: 12345 - app_name: Cline + app_name: 'Cline' rank: 1 total_requests: 4321 total_tokens: '12345678' - app_id: 67890 - app_name: Roo Code + app_name: 'Roo Code' rank: 2 total_requests: 2109 total_tokens: '9876543' @@ -2774,410 +2759,399 @@ components: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' - version: v1 + 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. + 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 + type: 'array' meta: $ref: '#/components/schemas/RankingsDailyMeta' required: - - data - - meta - type: object + - 'data' + - 'meta' + type: 'object' AutoRouterPlugin: example: allowed_models: - - anthropic/* - - openai/gpt-4o + - 'anthropic/*' + - 'openai/gpt-4o' cost_quality_tradeoff: 7 enabled: true - id: auto-router + 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. + 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/* + - 'anthropic/*' + - 'openai/gpt-4o' + - 'google/*' items: - type: string - type: array + 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. + 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 + type: 'integer' enabled: - description: Set to false to disable the auto-router plugin for this request. Defaults to true. - type: boolean + description: 'Set to false to disable the auto-router plugin for this request. Defaults to true.' + type: 'boolean' id: enum: - - auto-router - type: string + - 'auto-router' + type: 'string' required: - - id - type: object + - 'id' + type: 'object' BadGatewayResponse: - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' properties: error: $ref: '#/components/schemas/BadGatewayResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' BadGatewayResponseErrorData: - description: Error data for BadGatewayResponse + description: 'Error data for BadGatewayResponse' example: code: 502 - message: Provider returned error + message: 'Provider returned error' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' BadRequestResponse: - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' properties: error: $ref: '#/components/schemas/BadRequestResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' BadRequestResponseErrorData: - description: Error data for BadRequestResponse + description: 'Error data for BadRequestResponse' example: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' BaseAnnotationAddedEvent: - description: Event emitted when a text annotation is added to output + 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 + title: 'Example' + type: 'url_citation' + url: 'https://example.com' annotation_index: 0 content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 sequence_number: 5 - type: response.output_text.annotation.added + type: 'response.output_text.annotation.added' properties: annotation: $ref: '#/components/schemas/OpenAIResponsesAnnotation' annotation_index: - type: integer + type: 'integer' content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.output_text.annotation.added - type: string + - 'response.output_text.annotation.added' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - sequence_number - - annotation_index - - annotation - type: object + - '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 + description: 'Event emitted when a new content part is added to an output item' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 part: annotations: [] text: '' - type: output_text + type: 'output_text' sequence_number: 3 - type: response.content_part.added + type: 'response.content_part.added' properties: content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: - type: integer + type: 'integer' type: enum: - - response.content_part.added - type: string + - 'response.content_part.added' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - part - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'content_index' + - 'part' + - 'sequence_number' + type: 'object' BaseContentPartDoneEvent: - description: Event emitted when a content part is complete + description: 'Event emitted when a content part is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 part: annotations: [] - text: Hello! How can I help you? - type: output_text + text: 'Hello! How can I help you?' + type: 'output_text' sequence_number: 7 - type: response.content_part.done + type: 'response.content_part.done' properties: content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: - type: integer + type: 'integer' type: enum: - - response.content_part.done - type: string + - 'response.content_part.done' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - part - - sequence_number - type: object + - '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. + 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 + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.custom_tool_call_input.delta + type: 'response.custom_tool_call_input.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.custom_tool_call_input.delta - type: string + - 'response.custom_tool_call_input.delta' + type: 'string' required: - - type - - item_id - - output_index - - delta - - sequence_number - type: object + - '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 + 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\n*** End Patch" + item_id: 'item-1' output_index: 0 sequence_number: 6 - type: response.custom_tool_call_input.done + type: 'response.custom_tool_call_input.done' properties: input: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.custom_tool_call_input.done - type: string + - 'response.custom_tool_call_input.done' + type: 'string' required: - - type - - item_id - - output_index - - input - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'input' + - 'sequence_number' + type: 'object' BaseErrorEvent: - description: Event emitted when an error occurs during streaming + description: 'Event emitted when an error occurs during streaming' example: - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. + code: 'rate_limit_exceeded' + message: 'Rate limit exceeded. Please try again later.' param: null sequence_number: 2 - type: error + type: 'error' properties: code: - nullable: true - type: string + type: + - 'string' + - 'null' message: - type: string + type: 'string' param: - nullable: true - type: string + type: + - 'string' + - 'null' sequence_number: - type: integer + type: 'integer' type: enum: - - error - type: string + - 'error' + type: 'string' required: - - type - - code - - message - - param - - sequence_number - type: object + - 'type' + - 'code' + - 'message' + - 'param' + - 'sequence_number' + type: 'object' BaseFunctionCallArgsDeltaEvent: - description: Event emitted when function call arguments are being streamed + description: 'Event emitted when function call arguments are being streamed' example: delta: '{"city": "..."}' - item_id: item-1 + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.function_call_arguments.delta + type: 'response.function_call_arguments.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.function_call_arguments.delta - type: string + - 'response.function_call_arguments.delta' + type: 'string' required: - - type - - item_id - - output_index - - delta - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'delta' + - 'sequence_number' + type: 'object' BaseFunctionCallArgsDoneEvent: - description: Event emitted when function call arguments streaming is complete + description: 'Event emitted when function call arguments streaming is complete' example: arguments: '{"city": "San Francisco", "units": "celsius"}' - item_id: item-1 - name: get_weather + item_id: 'item-1' + name: 'get_weather' output_index: 0 sequence_number: 6 - type: response.function_call_arguments.done + type: 'response.function_call_arguments.done' properties: arguments: - type: string + type: 'string' item_id: - type: string + type: 'string' name: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.function_call_arguments.done - type: string + - 'response.function_call_arguments.done' + type: 'string' required: - - type - - item_id - - output_index - - name - - arguments - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'name' + - 'arguments' + - 'sequence_number' + type: 'object' BaseInputs: anyOf: - - type: string + - type: 'string' - items: anyOf: - properties: @@ -3190,45 +3164,45 @@ components: input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' - type: array - - type: string + type: 'array' + - type: 'string' phase: anyOf: - enum: - - commentary - type: string + - 'commentary' + type: 'string' - enum: - - final_answer - type: string - - nullable: true + - 'final_answer' + type: 'string' + - type: 'null' role: anyOf: - enum: - - user - type: string + - 'user' + type: 'string' - enum: - - system - type: string + - 'system' + type: 'string' - enum: - - assistant - type: string + - 'assistant' + type: 'string' - enum: - - developer - type: string + - 'developer' + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - role - - content - type: object + - 'role' + - 'content' + type: 'object' - $ref: '#/components/schemas/OpenAIResponseInputMessageItem' - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' @@ -3238,57 +3212,63 @@ components: - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput' - $ref: '#/components/schemas/ApplyPatchCallItem' - $ref: '#/components/schemas/ApplyPatchCallOutputItem' - type: array - - nullable: true + type: 'array' + - type: 'null' example: - - content: What is the weather today? - role: user + - content: 'What is the weather today?' + role: 'user' BaseMessagesResult: - description: Base Anthropic Messages API response before OpenRouter extensions + 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 + text: 'Hello!' + type: 'text' + id: 'msg_01XFDUDYJgAACzvnptvVoYEL' + model: 'claude-sonnet-4-5-20250929' + role: 'assistant' stop_details: null - stop_reason: end_turn + stop_reason: 'end_turn' stop_sequence: null - type: message + type: 'message' usage: + cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null + inference_geo: null input_tokens: 12 output_tokens: 8 + output_tokens_details: null + server_tool_use: null + service_tier: 'standard' properties: container: $ref: '#/components/schemas/AnthropicContainer' content: items: $ref: '#/components/schemas/ORAnthropicContentBlock' - type: array + type: 'array' id: - type: string + type: 'string' model: - type: string + type: 'string' role: enum: - - assistant - type: string + - 'assistant' + type: 'string' stop_details: $ref: '#/components/schemas/AnthropicRefusalStopDetails' stop_reason: $ref: '#/components/schemas/ORAnthropicStopReason' stop_sequence: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - message - type: string + - 'message' + type: 'string' usage: allOf: - $ref: '#/components/schemas/AnthropicUsage' @@ -3296,10 +3276,10 @@ components: iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' - type: array + type: 'array' speed: $ref: '#/components/schemas/AnthropicSpeed' - type: object + type: 'object' example: cache_creation: null cache_creation_input_tokens: null @@ -3309,24 +3289,23 @@ components: 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 + 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 + effort: 'medium' + summary: 'auto' properties: context: $ref: '#/components/schemas/ReasoningContext' @@ -3336,321 +3315,330 @@ components: $ref: '#/components/schemas/ReasoningMode' summary: $ref: '#/components/schemas/ReasoningSummaryVerbosity' - type: object + type: + - 'object' + - 'null' BaseReasoningDeltaEvent: - description: Event emitted when reasoning text delta is streamed + description: 'Event emitted when reasoning text delta is streamed' example: content_index: 0 - delta: First, we need - item_id: item-1 + delta: 'First, we need' + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.reasoning_text.delta + type: 'response.reasoning_text.delta' properties: content_index: - type: integer + type: 'integer' delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.reasoning_text.delta - type: string + - 'response.reasoning_text.delta' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - delta - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'content_index' + - 'delta' + - 'sequence_number' + type: 'object' BaseReasoningDoneEvent: - description: Event emitted when reasoning text streaming is complete + description: 'Event emitted when reasoning text streaming is complete' example: content_index: 0 - item_id: item-1 + 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 + text: 'First, we need to identify the key components and then combine them logically.' + type: 'response.reasoning_text.done' properties: content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' text: - type: string + type: 'string' type: enum: - - response.reasoning_text.done - type: string + - 'response.reasoning_text.done' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - text - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'content_index' + - 'text' + - 'sequence_number' + type: 'object' BaseReasoningSummaryPartAddedEvent: - description: Event emitted when a reasoning summary part is added + description: 'Event emitted when a reasoning summary part is added' example: - item_id: item-1 + item_id: 'item-1' output_index: 0 part: text: '' - type: summary_text + type: 'summary_text' sequence_number: 3 summary_index: 0 - type: response.reasoning_summary_part.added + type: 'response.reasoning_summary_part.added' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: - type: integer + type: 'integer' summary_index: - type: integer + type: 'integer' type: enum: - - response.reasoning_summary_part.added - type: string + - 'response.reasoning_summary_part.added' + type: 'string' required: - - type - - output_index - - item_id - - summary_index - - part - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'summary_index' + - 'part' + - 'sequence_number' + type: 'object' BaseReasoningSummaryPartDoneEvent: - description: Event emitted when a reasoning summary part is complete + description: 'Event emitted when a reasoning summary part is complete' example: - item_id: item-1 + item_id: 'item-1' output_index: 0 part: - text: Analyzing the problem step by step to find the optimal solution. - type: summary_text + 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 + type: 'response.reasoning_summary_part.done' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: - type: integer + type: 'integer' summary_index: - type: integer + type: 'integer' type: enum: - - response.reasoning_summary_part.done - type: string + - 'response.reasoning_summary_part.done' + type: 'string' required: - - type - - output_index - - item_id - - summary_index - - part - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'summary_index' + - 'part' + - 'sequence_number' + type: 'object' BaseReasoningSummaryTextDeltaEvent: - description: Event emitted when reasoning summary text delta is streamed + description: 'Event emitted when reasoning summary text delta is streamed' example: - delta: Analyzing - item_id: item-1 + delta: 'Analyzing' + item_id: 'item-1' output_index: 0 sequence_number: 4 summary_index: 0 - type: response.reasoning_summary_text.delta + type: 'response.reasoning_summary_text.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' summary_index: - type: integer + type: 'integer' type: enum: - - response.reasoning_summary_text.delta - type: string + - 'response.reasoning_summary_text.delta' + type: 'string' required: - - type - - item_id - - output_index - - summary_index - - delta - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'summary_index' + - 'delta' + - 'sequence_number' + type: 'object' BaseReasoningSummaryTextDoneEvent: - description: Event emitted when reasoning summary text streaming is complete + description: 'Event emitted when reasoning summary text streaming is complete' example: - item_id: item-1 + 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 + text: 'Analyzing the problem step by step to find the optimal solution.' + type: 'response.reasoning_summary_text.done' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' summary_index: - type: integer + type: 'integer' text: - type: string + type: 'string' type: enum: - - response.reasoning_summary_text.done - type: string + - 'response.reasoning_summary_text.done' + type: 'string' required: - - type - - item_id - - output_index - - summary_index - - text - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'summary_index' + - 'text' + - 'sequence_number' + type: 'object' BaseRefusalDeltaEvent: - description: Event emitted when a refusal delta is streamed + description: 'Event emitted when a refusal delta is streamed' example: content_index: 0 - delta: I'm sorry - item_id: item-1 + delta: 'I''m sorry' + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.refusal.delta + type: 'response.refusal.delta' properties: content_index: - type: integer + type: 'integer' delta: - type: string + type: 'string' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.refusal.delta - type: string + - 'response.refusal.delta' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - delta - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'content_index' + - 'delta' + - 'sequence_number' + type: 'object' BaseRefusalDoneEvent: - description: Event emitted when refusal streaming is complete + description: 'Event emitted when refusal streaming is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 - refusal: I'm sorry, but I can't assist with that request. + refusal: 'I''m sorry, but I can''t assist with that request.' sequence_number: 6 - type: response.refusal.done + type: 'response.refusal.done' properties: content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' refusal: - type: string + type: 'string' sequence_number: - type: integer + type: 'integer' type: enum: - - response.refusal.done - type: string + - 'response.refusal.done' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - refusal - - sequence_number - type: object + - '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 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: completed + presence_penalty: null + status: 'completed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null properties: background: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' completed_at: - nullable: true - type: integer + type: + - 'integer' + - 'null' created_at: - type: integer + type: 'integer' error: $ref: '#/components/schemas/ResponsesErrorField' frequency_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' id: - type: string + type: 'string' incomplete_details: $ref: '#/components/schemas/IncompleteDetails' instructions: $ref: '#/components/schemas/BaseInputs' max_output_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' max_tool_calls: - nullable: true - type: integer + type: + - 'integer' + - 'null' metadata: $ref: '#/components/schemas/RequestMetadata' model: - type: string + type: 'string' object: enum: - - response - type: string + - 'response' + type: 'string' output: items: discriminator: @@ -3663,7 +3651,7 @@ components: message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' @@ -3673,38 +3661,43 @@ components: - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' - type: array + type: 'array' output_text: - type: string + type: 'string' parallel_tool_calls: - type: boolean + type: 'boolean' presence_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' previous_response_id: - nullable: true - type: string + type: + - 'string' + - 'null' prompt: $ref: '#/components/schemas/StoredPromptTemplate' prompt_cache_key: - nullable: true - type: string + type: + - 'string' + - 'null' reasoning: $ref: '#/components/schemas/BaseReasoningConfig' safety_identifier: - nullable: true - type: string + type: + - 'string' + - 'null' service_tier: $ref: '#/components/schemas/ServiceTier' status: $ref: '#/components/schemas/OpenAIResponsesResponseStatus' store: - type: boolean + type: 'boolean' temperature: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' text: $ref: '#/components/schemas/TextConfig' tool_choice: @@ -3715,25 +3708,25 @@ components: - allOf: - $ref: '#/components/schemas/FunctionTool' - properties: {} - type: object - description: Function tool definition + type: 'object' + description: 'Function tool definition' example: - description: Get the current weather in a location - name: get_weather + description: 'Get the current weather in a location' + name: 'get_weather' parameters: properties: location: - description: The city and state - type: string + description: 'The city and state' + type: 'string' unit: enum: - - celsius - - fahrenheit - type: string + - 'celsius' + - 'fahrenheit' + type: 'string' required: - - location - type: object - type: function + - 'location' + type: 'object' + type: 'function' - $ref: '#/components/schemas/Preview_WebSearchServerTool' - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - $ref: '#/components/schemas/Legacy_WebSearchServerTool' @@ -3748,138 +3741,140 @@ components: - $ref: '#/components/schemas/ApplyPatchServerTool' - $ref: '#/components/schemas/CustomTool' - $ref: '#/components/schemas/NamespaceTool' - type: array + type: 'array' top_logprobs: - type: integer + type: 'integer' top_p: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' 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 + type: + - 'string' + - 'null' + 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 + description: 'Event emitted when a text delta is streamed' example: content_index: 0 - delta: Hello - item_id: item-1 + delta: 'Hello' + item_id: 'item-1' logprobs: [] output_index: 0 sequence_number: 4 - type: response.output_text.delta + type: 'response.output_text.delta' properties: content_index: - type: integer + type: 'integer' delta: - type: string + type: 'string' item_id: - type: string + type: 'string' logprobs: items: $ref: '#/components/schemas/OpenResponsesLogProbs' - type: array + type: 'array' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.output_text.delta - type: string + - 'response.output_text.delta' + type: 'string' required: - - type - - logprobs - - output_index - - item_id - - content_index - - delta - - sequence_number - type: object + - 'type' + - 'logprobs' + - 'output_index' + - 'item_id' + - 'content_index' + - 'delta' + - 'sequence_number' + type: 'object' BaseTextDoneEvent: - description: Event emitted when text streaming is complete + description: 'Event emitted when text streaming is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' logprobs: [] output_index: 0 sequence_number: 6 - text: Hello! How can I help you? - type: response.output_text.done + text: 'Hello! How can I help you?' + type: 'response.output_text.done' properties: content_index: - type: integer + type: 'integer' item_id: - type: string + type: 'string' logprobs: items: $ref: '#/components/schemas/OpenResponsesLogProbs' - type: array + type: 'array' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' text: - type: string + type: 'string' type: enum: - - response.output_text.done - type: string + - 'response.output_text.done' + type: 'string' required: - - type - - output_index - - item_id - - content_index - - text - - sequence_number - - logprobs - type: object + - '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 + type: 'container_auto' + type: 'openrouter:bash' properties: parameters: $ref: '#/components/schemas/BashServerToolConfig' type: enum: - - openrouter:bash - type: string + - 'openrouter:bash' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' BashServerToolConfig: - description: Configuration for the openrouter:bash server tool + description: 'Configuration for the openrouter:bash server tool' example: environment: - type: container_auto + type: 'container_auto' properties: engine: $ref: '#/components/schemas/BashServerToolEngine' @@ -3887,230 +3882,227 @@ components: $ref: '#/components/schemas/BashServerToolEnvironment' sleep_after_seconds: $ref: '#/components/schemas/SandboxSleepAfterSeconds' - type: object + 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. + 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 + - 'auto' + - 'native' + - 'openrouter' + example: 'auto' + type: 'string' BashServerToolEnvironment: - description: Execution environment for the bash server tool. + description: 'Execution environment for the bash server tool.' discriminator: mapping: container_auto: '#/components/schemas/ContainerAutoEnvironment' container_reference: '#/components/schemas/ContainerReferenceEnvironment' - propertyName: type + propertyName: 'type' example: - type: container_auto + 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. + description: 'A supported-or-not flag. Present means the parameter is accepted.' example: - type: boolean + type: 'boolean' properties: type: enum: - - boolean - type: string + - 'boolean' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' BulkAddWorkspaceMembersRequest: example: user_ids: - - user_abc123 - - user_def456 + - '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. + 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 + - 'user_abc123' + - 'user_def456' items: - type: string + type: 'string' maxItems: 100 minItems: 1 - type: array + type: 'array' required: - - user_ids - type: object + - '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 + 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 + description: 'Number of workspace memberships created or updated' example: 2 - type: integer + type: 'integer' data: - description: List of added workspace memberships + description: 'List of added workspace memberships' items: $ref: '#/components/schemas/WorkspaceMember' - type: array + type: 'array' required: - - data - - added_count - type: object + - 'data' + - 'added_count' + type: 'object' BulkAssignKeysRequest: example: key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' properties: key_hashes: - description: Array of API key hashes to assign to the guardrail + description: 'Array of API key hashes to assign to the guardrail' example: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' items: minLength: 1 - type: string + type: 'string' minItems: 1 - type: array + type: 'array' required: - - key_hashes - type: object + - 'key_hashes' + type: 'object' BulkAssignKeysResponse: example: assigned_count: 3 properties: assigned_count: - description: Number of keys successfully assigned + description: 'Number of keys successfully assigned' example: 3 - type: integer + type: 'integer' required: - - assigned_count - type: object + - 'assigned_count' + type: 'object' BulkAssignMembersRequest: example: member_user_ids: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' properties: member_user_ids: - description: Array of member user IDs to assign to the guardrail + description: 'Array of member user IDs to assign to the guardrail' example: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' items: minLength: 1 - type: string + type: 'string' minItems: 1 - type: array + type: 'array' required: - - member_user_ids - type: object + - 'member_user_ids' + type: 'object' BulkAssignMembersResponse: example: assigned_count: 2 properties: assigned_count: - description: Number of members successfully assigned + description: 'Number of members successfully assigned' example: 2 - type: integer + type: 'integer' required: - - assigned_count - type: object + - 'assigned_count' + type: 'object' BulkRemoveWorkspaceMembersRequest: example: user_ids: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' properties: user_ids: - description: List of user IDs to remove from the workspace + description: 'List of user IDs to remove from the workspace' example: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' items: - type: string + type: 'string' maxItems: 100 minItems: 1 - type: array + type: 'array' required: - - user_ids - type: object + - 'user_ids' + type: 'object' BulkRemoveWorkspaceMembersResponse: example: removed_count: 2 properties: removed_count: - description: Number of members removed + description: 'Number of members removed' example: 2 - type: integer + type: 'integer' required: - - removed_count - type: object + - 'removed_count' + type: 'object' BulkUnassignKeysRequest: example: key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' properties: key_hashes: - description: Array of API key hashes to unassign from the guardrail + description: 'Array of API key hashes to unassign from the guardrail' example: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' items: minLength: 1 - type: string + type: 'string' minItems: 1 - type: array + type: 'array' required: - - key_hashes - type: object + - 'key_hashes' + type: 'object' BulkUnassignKeysResponse: example: unassigned_count: 3 properties: unassigned_count: - description: Number of keys successfully unassigned + description: 'Number of keys successfully unassigned' example: 3 - type: integer + type: 'integer' required: - - unassigned_count - type: object + - 'unassigned_count' + type: 'object' BulkUnassignMembersRequest: example: member_user_ids: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' properties: member_user_ids: - description: Array of member user IDs to unassign from the guardrail + description: 'Array of member user IDs to unassign from the guardrail' example: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' items: minLength: 1 - type: string + type: 'string' minItems: 1 - type: array + type: 'array' required: - - member_user_ids - type: object + - 'member_user_ids' + type: 'object' BulkUnassignMembersResponse: example: unassigned_count: 2 properties: unassigned_count: - description: Number of members successfully unassigned + description: 'Number of members successfully unassigned' example: 2 - type: integer + type: 'integer' required: - - unassigned_count - type: object + - 'unassigned_count' + type: 'object' BYOKKey: example: allowed_api_key_hashes: null @@ -4118,424 +4110,418 @@ components: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + description: 'Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means no restriction.' example: - - f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + - 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_models: - description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. + description: 'Optional allowlist of model slugs this credential may be used for. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_user_ids: - description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. + description: 'Optional allowlist of user IDs that may use this credential. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' created_at: - description: ISO timestamp of when the credential was created. + description: 'ISO timestamp of when the credential was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' disabled: - description: Whether this credential is currently disabled. + description: 'Whether this credential is currently disabled.' example: false - type: boolean + type: 'boolean' id: - description: Stable public identifier for this BYOK credential. - example: 11111111-2222-3333-4444-555555555555 - format: uuid - type: string + 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. + 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 + 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 + 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 + description: 'Optional human-readable name for the credential.' + example: 'Production OpenAI Key' + type: + - 'string' + - 'null' provider: $ref: '#/components/schemas/BYOKProviderSlug' sort_order: - description: Position within the provider — credentials are tried in ascending sort order. + description: 'Position within the provider — credentials are tried in ascending sort order.' example: 0 - type: integer + 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 + 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`). + 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 - - deepgram - - 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 - - krea - - liquid - - mancer - - mara - - meta - - 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 - - sail-research - - sakana - - sambanova - - seed - - siliconflow - - sourceful - - stepfun - - streamlake - - switchpoint - - tenstorrent - - together - - upstage - - venice - - wafer - - wandb - - xai - - xiaomi - - z-ai - example: openai - type: string + - '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' + - 'deepgram' + - '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' + - 'krea' + - 'liquid' + - 'mancer' + - 'mara' + - 'meta' + - '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' + - 'sail-research' + - 'sakana' + - 'sambanova' + - 'seed' + - 'siliconflow' + - 'sourceful' + - 'stepfun' + - 'streamlake' + - 'switchpoint' + - 'tencent' + - 'tenstorrent' + - 'together' + - 'upstage' + - 'venice' + - 'wafer' + - 'wandb' + - 'xai' + - 'xiaomi' + - 'z-ai' + example: 'openai' + type: 'string' CapabilityDescriptor: - description: A typed descriptor for one supported request parameter. + 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 + propertyName: 'type' example: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' oneOf: - $ref: '#/components/schemas/EnumCapability' - $ref: '#/components/schemas/RangeCapability' - $ref: '#/components/schemas/BooleanCapability' ChatAssistantImages: - description: Generated images from image generation models + description: 'Generated images from image generation models' example: - image_url: - url: data:image/png;base64,iVBORw0KGgo... + url: 'data:image/png;base64,iVBORw0KGgo...' items: properties: image_url: properties: url: - description: URL or base64-encoded data of the generated image - type: string + description: 'URL or base64-encoded data of the generated image' + type: 'string' required: - - url - type: object + - 'url' + type: 'object' required: - - image_url - type: object - type: array + - 'image_url' + type: 'object' + type: 'array' ChatAssistantMessage: - description: Assistant message for requests and responses + description: 'Assistant message for requests and responses' example: - content: The capital of France is Paris. - role: assistant + content: 'The capital of France is Paris.' + role: 'assistant' properties: audio: $ref: '#/components/schemas/ChatAudioOutput' content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/ChatContentItems' - type: array - - nullable: true - description: Assistant message content + type: 'array' + - type: 'null' + description: 'Assistant message content' images: $ref: '#/components/schemas/ChatAssistantImages' name: - description: Optional name for the assistant - type: string + description: 'Optional name for the assistant' + type: 'string' reasoning: - description: Reasoning output - nullable: true - type: string + description: 'Reasoning output' + type: + - 'string' + - 'null' reasoning_details: $ref: '#/components/schemas/ChatReasoningDetails' refusal: - description: Refusal message if content was refused - nullable: true - type: string + description: 'Refusal message if content was refused' + type: + - 'string' + - 'null' role: enum: - - assistant - type: string + - 'assistant' + type: 'string' tool_calls: - description: Tool calls made by the assistant + description: 'Tool calls made by the assistant' items: $ref: '#/components/schemas/ChatToolCall' - type: array + type: 'array' required: - - role - type: object + - 'role' + type: 'object' ChatAudioOutput: - description: Audio output data or reference + description: 'Audio output data or reference' example: - data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f + data: 'UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f' expires_at: 1677652400 - id: audio_abc123 - transcript: Hello! How can I help you today? + id: 'audio_abc123' + transcript: 'Hello! How can I help you today?' properties: data: - description: Base64 encoded audio data - type: string + description: 'Base64 encoded audio data' + type: 'string' expires_at: - description: Audio expiration timestamp - type: integer + description: 'Audio expiration timestamp' + type: 'integer' id: - description: Audio output identifier - type: string + description: 'Audio output identifier' + type: 'string' transcript: - description: Audio transcript - type: string - type: object + description: 'Audio transcript' + type: 'string' + type: 'object' ChatChoice: - description: Chat completion choice + description: 'Chat completion choice' example: - finish_reason: stop + finish_reason: 'stop' index: 0 logprobs: null message: - content: The capital of France is Paris. - role: assistant + content: 'The capital of France is Paris.' + role: 'assistant' properties: finish_reason: $ref: '#/components/schemas/ChatFinishReasonEnum' index: - description: Choice index + description: 'Choice index' example: 0 - type: integer + type: 'integer' logprobs: $ref: '#/components/schemas/ChatTokenLogprobs' message: $ref: '#/components/schemas/ChatAssistantMessage' required: - - finish_reason - - index - - message - type: object + - 'finish_reason' + - 'index' + - 'message' + type: 'object' ChatContentAudio: - description: Audio input content part. Supported audio formats vary by provider. + description: 'Audio input content part. Supported audio formats vary by provider.' example: input_audio: - data: SGVsbG8gV29ybGQ= - format: wav - type: input_audio + data: 'SGVsbG8gV29ybGQ=' + format: 'wav' + type: 'input_audio' properties: input_audio: properties: data: - description: Base64 encoded audio data - type: string + 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 + 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 + - 'data' + - 'format' + type: 'object' type: enum: - - input_audio - type: string + - 'input_audio' + type: 'string' required: - - type - - input_audio - type: object + - 'type' + - 'input_audio' + type: 'object' ChatContentCacheControl: allOf: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - properties: {} - type: object - description: >- - Anthropic-style cache breakpoint for the content part. Interchangeable with the OpenAI-style - `prompt_cache_breakpoint` marker: OpenRouter converts between the two based on the provider serving the request. + type: 'object' + description: 'Anthropic-style cache breakpoint for the content part. Interchangeable with the OpenAI-style `prompt_cache_breakpoint` marker: OpenRouter converts between the two based on the provider serving the request.' example: - ttl: 5m - type: ephemeral + ttl: '5m' + type: 'ephemeral' ChatContentFile: - description: File content part for document processing + description: 'File content part for document processing' example: file: - file_data: https://example.com/document.pdf - filename: document.pdf - type: 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 + description: 'File content as base64 data URL or URL' + type: 'string' file_id: - description: File ID for previously uploaded files - type: string + description: 'File ID for previously uploaded files' + type: 'string' filename: - description: Original filename - type: string - type: object + description: 'Original filename' + type: 'string' + type: 'object' type: enum: - - file - type: string + - 'file' + type: 'string' required: - - type - - file - type: object + - 'type' + - 'file' + type: 'object' ChatContentImage: - description: Image content part for vision models + description: 'Image content part for vision models' example: image_url: - detail: auto - url: https://example.com/image.jpg - type: 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. + 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 + - 'auto' + - 'low' + - 'high' + - 'original' + type: 'string' url: description: 'URL of the image (data: URLs supported)' - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' type: enum: - - image_url - type: string + - 'image_url' + type: 'string' required: - - type - - image_url - type: object + - 'type' + - 'image_url' + type: 'object' ChatContentItems: - description: Content part for chat completion messages + description: 'Content part for chat completion messages' discriminator: mapping: file: '#/components/schemas/ChatContentFile' @@ -4544,10 +4530,10 @@ components: input_video: '#/components/schemas/Legacy_ChatContentVideo' text: '#/components/schemas/ChatContentText' video_url: '#/components/schemas/ChatContentVideo' - propertyName: type + propertyName: 'type' example: - text: Hello, world! - type: text + text: 'Hello, world!' + type: 'text' oneOf: - $ref: '#/components/schemas/ChatContentText' - $ref: '#/components/schemas/ChatContentImage' @@ -4556,237 +4542,236 @@ components: - $ref: '#/components/schemas/ChatContentVideo' - $ref: '#/components/schemas/ChatContentFile' ChatContentText: - description: Text content part + description: 'Text content part' example: - text: Hello, world! - type: text + text: 'Hello, world!' + type: 'text' properties: cache_control: $ref: '#/components/schemas/ChatContentCacheControl' prompt_cache_breakpoint: $ref: '#/components/schemas/PromptCacheBreakpoint' text: - type: string + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' ChatContentVideo: - description: Video input content part + description: 'Video input content part' example: - type: video_url + type: 'video_url' video_url: - url: https://example.com/video.mp4 + url: 'https://example.com/video.mp4' properties: type: enum: - - video_url - type: string + - 'video_url' + type: 'string' video_url: $ref: '#/components/schemas/ChatContentVideoInput' required: - - type - - video_url - type: object + - 'type' + - 'video_url' + type: 'object' ChatContentVideoInput: - description: Video input object + description: 'Video input object' example: - url: https://example.com/video.mp4 + url: 'https://example.com/video.mp4' properties: url: description: 'URL of the video (data: URLs supported)' - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' ChatDebugOptions: - description: Debug options for inspecting request transformations (streaming only) + 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. + 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 + type: 'boolean' + type: 'object' ChatDeveloperMessage: - description: Developer message + description: 'Developer message' example: - content: This is a message from the developer. - role: developer + content: 'This is a message from the developer.' + role: 'developer' properties: content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/ChatContentText' - type: array - description: Developer message content - example: This is a message from the developer. + 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 + description: 'Optional name for the developer message' + example: 'Developer' + type: 'string' role: enum: - - developer - type: string + - 'developer' + type: 'string' required: - - role - - content - type: object + - 'role' + - 'content' + type: 'object' ChatFinishReasonEnum: enum: - - tool_calls - - stop - - length - - content_filter - - error + - 'tool_calls' + - 'stop' + - 'length' + - 'content_filter' + - 'error' - null - example: stop - nullable: true - type: string + example: 'stop' + type: + - 'string' + - 'null' ChatFormatGrammarConfig: - description: Custom grammar response format + description: 'Custom grammar response format' example: - grammar: root ::= "yes" | "no" - type: grammar + grammar: 'root ::= "yes" | "no"' + type: 'grammar' properties: grammar: - description: Custom grammar for text generation - example: root ::= "yes" | "no" - type: string + description: 'Custom grammar for text generation' + example: 'root ::= "yes" | "no"' + type: 'string' type: enum: - - grammar - type: string + - 'grammar' + type: 'string' required: - - type - - grammar - type: object + - 'type' + - 'grammar' + type: 'object' ChatFormatJsonObjectConfig: - description: JSON object response format + description: 'JSON object response format' example: - type: json_object + type: 'json_object' properties: type: enum: - - json_object - type: string + - 'json_object' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ChatFormatJsonSchemaConfig: - description: JSON Schema response format for structured outputs + description: 'JSON Schema response format for structured outputs' example: json_schema: - name: math_response + name: 'math_response' schema: properties: answer: - type: number + type: 'number' required: - - answer - type: object - type: json_schema + - 'answer' + type: 'object' + type: 'json_schema' properties: json_schema: $ref: '#/components/schemas/ChatJsonSchemaConfig' type: enum: - - json_schema - type: string + - 'json_schema' + type: 'string' required: - - type - - json_schema - type: object + - 'type' + - 'json_schema' + type: 'object' ChatFormatPythonConfig: - description: Python code response format + description: 'Python code response format' example: - type: python + type: 'python' properties: type: enum: - - python - type: string + - 'python' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ChatFormatTextConfig: - description: Default text response format + description: 'Default text response format' example: - type: text + type: 'text' properties: type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ChatFunctionTool: anyOf: - properties: cache_control: $ref: '#/components/schemas/ChatContentCacheControl' function: - description: Function definition for tool calling + description: 'Function definition for tool calling' example: - description: Get the current weather for a location - name: get_weather + description: 'Get the current weather for a location' + name: 'get_weather' parameters: properties: location: - description: City name - type: string + description: 'City name' + type: 'string' required: - - location - type: object + - 'location' + type: 'object' properties: description: - description: Function description for the model - example: Get the current weather for a location - type: string + 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 + description: 'Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)' + example: 'get_weather' maxLength: 64 - type: string + type: 'string' parameters: - additionalProperties: - nullable: true - description: Function parameters as JSON Schema object + additionalProperties: {} + description: 'Function parameters as JSON Schema object' example: properties: location: - description: City name - type: string + description: 'City name' + type: 'string' required: - - location - type: object - type: object + - 'location' + type: 'object' + type: 'object' strict: - description: Enable strict schema adherence + description: 'Enable strict schema adherence' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' required: - - name - type: object + - 'name' + type: 'object' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - type - - function - type: object + - 'type' + - 'function' + type: 'object' - $ref: '#/components/schemas/AdvisorServerTool_OpenRouter' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/DatetimeServerTool' @@ -4798,70 +4783,70 @@ components: - $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) + 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 + description: 'Get the current weather for a location' + name: 'get_weather' parameters: properties: location: - description: City name - type: string + description: 'City name' + type: 'string' unit: enum: - - celsius - - fahrenheit - type: string + - 'celsius' + - 'fahrenheit' + type: 'string' required: - - location - type: object - type: function + - 'location' + type: 'object' + type: 'function' ChatJsonSchemaConfig: - description: JSON Schema configuration object + description: 'JSON Schema configuration object' example: - description: A mathematical response - name: math_response + description: 'A mathematical response' + name: 'math_response' schema: properties: answer: - type: number + type: 'number' required: - - answer - type: object + - 'answer' + type: 'object' strict: true properties: description: - description: Schema description for the model - example: A mathematical response - type: string + 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 + description: 'Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)' + example: 'math_response' maxLength: 64 - type: string + type: 'string' schema: - additionalProperties: - nullable: true - description: JSON Schema object + additionalProperties: {} + description: 'JSON Schema object' example: properties: answer: - type: number + type: 'number' required: - - answer - type: object - type: object + - 'answer' + type: 'object' + type: 'object' strict: - description: Enable strict schema adherence + description: 'Enable strict schema adherence' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' required: - - name - type: object + - 'name' + type: 'object' ChatMessages: - description: Chat completion message with role-based discrimination + description: 'Chat completion message with role-based discrimination' discriminator: mapping: assistant: '#/components/schemas/ChatAssistantMessage' @@ -4869,10 +4854,10 @@ components: system: '#/components/schemas/ChatSystemMessage' tool: '#/components/schemas/ChatToolMessage' user: '#/components/schemas/ChatUserMessage' - propertyName: role + propertyName: 'role' example: - content: What is the capital of France? - role: user + content: 'What is the capital of France?' + role: 'user' oneOf: - $ref: '#/components/schemas/ChatSystemMessage' - $ref: '#/components/schemas/ChatUserMessage' @@ -4880,66 +4865,67 @@ components: - $ref: '#/components/schemas/ChatAssistantMessage' - $ref: '#/components/schemas/ChatToolMessage' ChatModelNames: - description: Models to use for completion + description: 'Models to use for completion' example: - - openai/gpt-4 - - openai/gpt-4o + - 'openai/gpt-4' + - 'openai/gpt-4o' items: allOf: - $ref: '#/components/schemas/ModelName' - - description: Available OpenRouter chat completion models - type: array + - description: 'Available OpenRouter chat completion models' + type: 'array' ChatNamedToolChoice: - description: Named tool choice for specific function + description: 'Named tool choice for specific function' example: function: - name: get_weather - type: function + name: 'get_weather' + type: 'function' properties: function: properties: name: - description: Function name to call - example: get_weather - type: string + description: 'Function name to call' + example: 'get_weather' + type: 'string' required: - - name - type: object + - 'name' + type: 'object' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - type - - function - type: object + - 'type' + - 'function' + type: 'object' ChatReasoningDetails: - description: Reasoning details for extended thinking models + description: 'Reasoning details for extended thinking models' example: - - thinking: Let me work through this step by step... - type: thinking + - text: 'Let me work through this step by step...' + type: 'reasoning.text' items: $ref: '#/components/schemas/ReasoningDetailUnion' - type: array + type: 'array' ChatReasoningSummaryVerbosityEnum: enum: - - auto - - concise - - detailed + - 'auto' + - 'concise' + - 'detailed' - null - example: concise - nullable: true - type: string + example: 'concise' + type: + - 'string' + - 'null' ChatRequest: - description: Chat completion request parameters + 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 + - 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: @@ -4947,87 +4933,90 @@ components: debug: $ref: '#/components/schemas/ChatDebugOptions' frequency_penalty: - description: Frequency penalty (-2.0 to 2.0) + description: 'Frequency penalty (-2.0 to 2.0)' example: 0 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' image_config: $ref: '#/components/schemas/ImageConfig' logit_bias: additionalProperties: - format: double - type: number - description: Token logit bias adjustments + format: 'double' + type: 'number' + description: 'Token logit bias adjustments' example: '50256': -100 - nullable: true - type: object + type: + - 'object' + - 'null' logprobs: - description: Return log probabilities + description: 'Return log probabilities' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' max_completion_tokens: - description: Maximum tokens in completion + description: 'Maximum tokens in completion' example: 100 - nullable: true - type: integer + type: + - 'integer' + - 'null' max_tokens: description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.' example: 100 - nullable: true - type: integer + type: + - 'integer' + - 'null' messages: - description: List of messages for the conversation + description: 'List of messages for the conversation' example: - - content: Hello! - role: user + - content: 'Hello!' + role: 'user' items: $ref: '#/components/schemas/ChatMessages' minItems: 1 - type: array + type: 'array' metadata: additionalProperties: - type: string - description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) + 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 + 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. + 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 + format: 'double' + type: + - 'number' + - 'null' modalities: - description: Output modalities for the response. Supported values are "text", "image", and "audio". + description: 'Output modalities for the response. Supported values are "text", "image", and "audio".' example: - - text - - image + - 'text' + - 'image' items: enum: - - text - - image - - audio - type: string - type: array + - '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. + 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 + type: + - 'boolean' + - 'null' plugins: - description: Plugins you want to enable for this request, including their settings. + description: 'Plugins you want to enable for this request, including their settings.' items: discriminator: mapping: @@ -5040,7 +5029,7 @@ components: response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' - propertyName: id + propertyName: 'id' oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' @@ -5051,71 +5040,72 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' - type: array + type: 'array' prediction: $ref: '#/components/schemas/Prediction' presence_penalty: - description: Presence penalty (-2.0 to 2.0) + description: 'Presence penalty (-2.0 to 2.0)' example: 0 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' prompt_cache_key: - nullable: true - type: string + type: + - 'string' + - 'null' prompt_cache_options: $ref: '#/components/schemas/PromptCacheOptions' provider: $ref: '#/components/schemas/ProviderPreferences' reasoning: - description: Configuration options for reasoning models + description: 'Configuration options for reasoning models' example: - effort: medium - summary: concise + effort: 'medium' + summary: 'concise' properties: effort: - description: Constrains effort on reasoning for reasoning models + description: 'Constrains effort on reasoning for reasoning models' enum: - - max - - xhigh - - high - - medium - - low - - minimal - - none + - 'max' + - 'xhigh' + - 'high' + - 'medium' + - 'low' + - 'minimal' + - 'none' - null - example: medium - nullable: true - type: string + example: 'medium' + type: + - 'string' + - 'null' summary: $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum' - type: object + 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 + 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 + example: 'medium' + type: + - 'string' + - 'null' 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. + 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 + format: 'double' + type: + - 'number' + - 'null' response_format: - description: Response format configuration + description: 'Response format configuration' discriminator: mapping: grammar: '#/components/schemas/ChatFormatGrammarConfig' @@ -5123,9 +5113,9 @@ components: json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig' python: '#/components/schemas/ChatFormatPythonConfig' text: '#/components/schemas/ChatFormatTextConfig' - propertyName: type + propertyName: 'type' example: - type: json_object + type: 'json_object' oneOf: - $ref: '#/components/schemas/ChatFormatTextConfig' - $ref: '#/components/schemas/ChatFormatJsonObjectConfig' @@ -5135,201 +5125,200 @@ components: route: $ref: '#/components/schemas/DeprecatedRoute' seed: - description: Random seed for deterministic outputs + description: 'Random seed for deterministic outputs' example: 42 - nullable: true - type: integer + type: + - 'integer' + - 'null' service_tier: - description: The service tier to use for processing this request. + description: 'The service tier to use for processing this request.' enum: - - auto - - default - - flex - - priority - - scale + - 'auto' + - 'default' + - 'flex' + - 'priority' + - 'scale' - null - example: auto - nullable: true - type: string + example: 'auto' + type: + - 'string' + - 'null' 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. + 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 + type: 'string' stop: anyOf: - - type: string + - type: 'string' - items: - type: string + type: 'string' maxItems: 4 - type: array - - nullable: true - description: Stop sequences (up to 4) + type: 'array' + - type: 'null' + description: 'Stop sequences (up to 4)' example: - - |+ - + - "\n" stop_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' stream: default: false - description: Enable streaming response + description: 'Enable streaming response' example: false - type: boolean + type: 'boolean' stream_options: $ref: '#/components/schemas/ChatStreamOptions' temperature: - description: Sampling temperature (0-2) + description: 'Sampling temperature (0-2)' example: 0.7 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' tool_choice: $ref: '#/components/schemas/ChatToolChoice' tools: - description: Available tools for function calling + description: 'Available tools for function calling' example: - function: - description: Get weather - name: get_weather - type: function + description: 'Get weather' + name: 'get_weather' + type: 'function' items: $ref: '#/components/schemas/ChatFunctionTool' - type: array + 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. + 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 + format: 'double' + type: + - 'number' + - 'null' 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. + 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 + type: + - 'integer' + - 'null' top_logprobs: - description: Number of top log probabilities to return (0-20) + description: 'Number of top log probabilities to return (0-20)' example: 5 - nullable: true - type: integer + type: + - 'integer' + - 'null' top_p: - description: Nucleus sampling parameter (0-1) + description: 'Nucleus sampling parameter (0-1)' example: 1 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' trace: $ref: '#/components/schemas/TraceConfig' user: - description: Unique user identifier - example: user-123 - type: string + description: 'Unique user identifier' + example: 'user-123' + type: 'string' required: - - messages - type: object + - 'messages' + type: 'object' ChatResult: - description: Chat completion response + description: 'Chat completion response' example: choices: - - finish_reason: stop + - finish_reason: 'stop' index: 0 message: - content: The capital of France is Paris. - role: assistant + content: 'The capital of France is Paris.' + role: 'assistant' created: 1677652288 - id: chatcmpl-123 - model: openai/gpt-4 - object: chat.completion + id: 'chatcmpl-123' + model: 'openai/gpt-4' + object: 'chat.completion' + system_fingerprint: 'fp_44709d6fcb' usage: completion_tokens: 15 prompt_tokens: 10 total_tokens: 25 properties: choices: - description: List of completion choices + description: 'List of completion choices' items: $ref: '#/components/schemas/ChatChoice' - type: array + type: 'array' created: - description: Unix timestamp of creation + description: 'Unix timestamp of creation' example: 1677652288 - type: integer + type: 'integer' id: - description: Unique completion identifier - example: chatcmpl-123 - type: string + description: 'Unique completion identifier' + example: 'chatcmpl-123' + type: 'string' model: - description: Model used for completion - example: openai/gpt-4 - type: string + description: 'Model used for completion' + example: 'openai/gpt-4' + type: 'string' object: enum: - - chat.completion - type: string + - '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 + description: 'The service tier used by the upstream provider for this request' + example: 'default' + type: + - 'string' + - 'null' system_fingerprint: - description: System fingerprint - example: fp_44709d6fcb - nullable: true - type: string + description: 'System fingerprint' + example: 'fp_44709d6fcb' + type: + - 'string' + - 'null' usage: $ref: '#/components/schemas/ChatUsage' required: - - id - - choices - - created - - model - - object - - system_fingerprint - type: object + - '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 + type: 'openrouter:experimental__search_models' properties: parameters: $ref: '#/components/schemas/SearchModelsServerToolConfig' type: enum: - - openrouter:experimental__search_models - type: string + - 'openrouter:experimental__search_models' + type: 'string' required: - - type - type: object + - '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 } }`. + 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 + 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 + 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 + - 'type' + type: 'object' ChatStreamChoice: - description: Streaming completion choice chunk + description: 'Streaming completion choice chunk' example: delta: - content: Hello - role: assistant + content: 'Hello' + role: 'assistant' finish_reason: null index: 0 properties: @@ -5338,250 +5327,255 @@ components: finish_reason: $ref: '#/components/schemas/ChatFinishReasonEnum' index: - description: Choice index + description: 'Choice index' example: 0 - type: integer + type: 'integer' logprobs: $ref: '#/components/schemas/ChatTokenLogprobs' required: - - delta - - finish_reason - - index - type: object + - 'delta' + - 'finish_reason' + - 'index' + type: 'object' ChatStreamChunk: - description: Streaming chat completion chunk + description: 'Streaming chat completion chunk' example: choices: - delta: - content: Hello - role: assistant + content: 'Hello' + role: 'assistant' finish_reason: null index: 0 created: 1677652288 - id: chatcmpl-123 - model: openai/gpt-4 - object: chat.completion.chunk + id: 'chatcmpl-123' + model: 'openai/gpt-4' + object: 'chat.completion.chunk' properties: choices: - description: List of streaming chunk choices + description: 'List of streaming chunk choices' items: $ref: '#/components/schemas/ChatStreamChoice' - type: array + type: 'array' created: - description: Unix timestamp of creation + description: 'Unix timestamp of creation' example: 1677652288 - type: integer + type: 'integer' error: - description: Error information + description: 'Error information' example: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' metadata: - error_type: rate_limit_exceeded + error_type: 'rate_limit_exceeded' properties: code: - description: Error code + description: 'Error code' example: 429 - format: int32 - type: integer + format: 'int32' + type: 'integer' message: - description: Error message - example: Rate limit exceeded - type: string + description: 'Error message' + example: 'Rate limit exceeded' + type: 'string' metadata: - description: Structured error metadata + description: 'Structured error metadata' properties: error_type: $ref: '#/components/schemas/ApiErrorType' provider_code: - description: Upstream provider-specific error code, when available - type: string + description: 'Upstream provider-specific error code, when available' + type: 'string' required: - - error_type - type: object + - 'error_type' + type: 'object' required: - - message - - code - type: object + - 'message' + - 'code' + type: 'object' id: - description: Unique chunk identifier - example: chatcmpl-123 - type: string + description: 'Unique chunk identifier' + example: 'chatcmpl-123' + type: 'string' model: - description: Model used for completion - example: openai/gpt-4 - type: string + description: 'Model used for completion' + example: 'openai/gpt-4' + type: 'string' object: enum: - - chat.completion.chunk - type: string + - '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 + description: 'The service tier used by the upstream provider for this request' + example: 'default' + type: + - 'string' + - 'null' system_fingerprint: - description: System fingerprint - example: fp_44709d6fcb - type: string + 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 + - 'id' + - 'choices' + - 'created' + - 'model' + - 'object' + type: 'object' + x-speakeasy-entity: 'ChatStreamChunk' ChatStreamDelta: - description: Delta changes in streaming response + description: 'Delta changes in streaming response' example: - content: Hello - role: assistant + content: 'Hello' + role: 'assistant' properties: audio: allOf: - $ref: '#/components/schemas/ChatAudioOutput' - - description: Audio output data + - description: 'Audio output data' content: - description: Message content delta - example: Hello - nullable: true - type: string + description: 'Message content delta' + example: 'Hello' + type: + - 'string' + - 'null' reasoning: - description: Reasoning content delta - example: I need to - nullable: true - type: string + description: 'Reasoning content delta' + example: 'I need to' + type: + - 'string' + - 'null' reasoning_details: $ref: '#/components/schemas/ChatStreamReasoningDetails' refusal: - description: Refusal message delta + description: 'Refusal message delta' example: null - nullable: true - type: string + type: + - 'string' + - 'null' role: - description: The role of the message author + description: 'The role of the message author' enum: - - assistant - example: assistant - type: string + - 'assistant' + example: 'assistant' + type: 'string' tool_calls: - description: Tool calls delta + description: 'Tool calls delta' items: $ref: '#/components/schemas/ChatStreamToolCall' - type: array - type: object + type: 'array' + type: 'object' ChatStreamingResponse: example: data: choices: - delta: - content: Hello - role: assistant + content: 'Hello' + role: 'assistant' finish_reason: null index: 0 created: 1677652288 - id: chatcmpl-123 - model: openai/gpt-4 - object: chat.completion.chunk + id: 'chatcmpl-123' + model: 'openai/gpt-4' + object: 'chat.completion.chunk' properties: data: $ref: '#/components/schemas/ChatStreamChunk' required: - - data - type: object + - 'data' + type: 'object' ChatStreamOptions: - description: Streaming configuration options + 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 + type: 'boolean' + type: + - 'object' + - 'null' ChatStreamReasoningDetails: - description: Reasoning details for extended thinking models + description: 'Reasoning details for extended thinking models' example: - - text: Let me think about this... - type: text + - text: 'Let me think about this...' + type: 'reasoning.text' items: $ref: '#/components/schemas/ReasoningDetailUnion' - type: array + type: 'array' ChatStreamToolCall: - description: Tool call delta for streaming responses + description: 'Tool call delta for streaming responses' example: function: arguments: '{"location": "..."}' - name: get_weather - id: call_abc123 + name: 'get_weather' + id: 'call_abc123' index: 0 - type: function + type: 'function' properties: function: - description: Function call details + description: 'Function call details' properties: arguments: - description: Function arguments as JSON string + description: 'Function arguments as JSON string' example: '{"location": "..."}' - type: string + type: 'string' name: - description: Function name - example: get_weather - type: string - type: object + description: 'Function name' + example: 'get_weather' + type: 'string' + type: 'object' id: - description: Tool call identifier - example: call_abc123 - type: string + description: 'Tool call identifier' + example: 'call_abc123' + type: 'string' index: - description: Tool call index in the array + description: 'Tool call index in the array' example: 0 - type: integer + type: 'integer' type: - description: Tool call type + description: 'Tool call type' enum: - - function - example: function - type: string + - 'function' + example: 'function' + type: 'string' required: - - index - type: object + - 'index' + type: 'object' ChatSystemMessage: - description: System message for setting behavior + description: 'System message for setting behavior' example: - content: You are a helpful assistant. - name: Assistant Config - role: system + content: 'You are a helpful assistant.' + name: 'Assistant Config' + role: 'system' properties: content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/ChatContentText' - type: array - description: System message content - example: You are a helpful assistant. + 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 + description: 'Optional name for the system message' + example: 'Assistant Config' + type: 'string' role: enum: - - system - type: string + - 'system' + type: 'string' required: - - role - - content - type: object + - 'role' + - 'content' + type: 'object' ChatTokenLogprob: - description: Token log probability information + description: 'Token log probability information' example: bytes: null logprob: -0.612345 @@ -5592,46 +5586,48 @@ components: token: ' Hello' properties: bytes: - description: UTF-8 bytes of the token + description: 'UTF-8 bytes of the token' items: - type: integer - nullable: true - type: array + type: 'integer' + type: + - 'array' + - 'null' logprob: - description: Log probability of the token - format: double - type: number + description: 'Log probability of the token' + format: 'double' + type: 'number' token: - description: The token - type: string + description: 'The token' + type: 'string' top_logprobs: - description: Top alternative tokens with probabilities + description: 'Top alternative tokens with probabilities' items: properties: bytes: items: - type: integer - nullable: true - type: array + type: 'integer' + type: + - 'array' + - 'null' logprob: - format: double - type: number + format: 'double' + type: 'number' token: - type: string + type: 'string' required: - - token - - logprob - - bytes - type: object - type: array - required: - - token - - logprob - - bytes - - top_logprobs - type: object + - 'token' + - 'logprob' + - 'bytes' + type: 'object' + type: 'array' + required: + - 'token' + - 'logprob' + - 'bytes' + - 'top_logprobs' + type: 'object' ChatTokenLogprobs: - description: Log probabilities for the completion + description: 'Log probabilities for the completion' example: content: - bytes: null @@ -5639,101 +5635,104 @@ components: token: ' Hello' top_logprobs: [] refusal: null - nullable: true properties: content: - description: Log probabilities for content tokens + description: 'Log probabilities for content tokens' items: $ref: '#/components/schemas/ChatTokenLogprob' - nullable: true - type: array + type: + - 'array' + - 'null' refusal: - description: Log probabilities for refusal tokens + description: 'Log probabilities for refusal tokens' items: $ref: '#/components/schemas/ChatTokenLogprob' - nullable: true - type: array - required: - - content - type: object + type: + - 'array' + - 'null' + required: + - 'content' + type: + - 'object' + - 'null' ChatToolCall: - description: Tool call made by the assistant + description: 'Tool call made by the assistant' example: function: arguments: '{"location": "Boston, MA"}' - name: get_current_weather - id: call_abc123 - type: function + name: 'get_current_weather' + id: 'call_abc123' + type: 'function' properties: function: properties: arguments: - description: Function arguments as JSON string - type: string + description: 'Function arguments as JSON string' + type: 'string' name: - description: Function name to call - type: string + description: 'Function name to call' + type: 'string' required: - - name - - arguments - type: object + - 'name' + - 'arguments' + type: 'object' id: - description: Tool call identifier - type: string + description: 'Tool call identifier' + type: 'string' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - id - - type - - function - type: object + - 'id' + - 'type' + - 'function' + type: 'object' ChatToolChoice: anyOf: - enum: - - none - type: string + - 'none' + type: 'string' - enum: - - auto - type: string + - 'auto' + type: 'string' - enum: - - required - type: string + - 'required' + type: 'string' - $ref: '#/components/schemas/ChatNamedToolChoice' - $ref: '#/components/schemas/ChatServerToolChoice' - description: Tool choice configuration - example: auto + description: 'Tool choice configuration' + example: 'auto' ChatToolMessage: - description: Tool response message + description: 'Tool response message' example: - content: The weather in San Francisco is 72°F and sunny. - role: tool - tool_call_id: call_abc123 + content: 'The weather in San Francisco is 72°F and sunny.' + role: 'tool' + tool_call_id: 'call_abc123' properties: content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/ChatContentItems' - type: array - description: Tool response content - example: The weather in San Francisco is 72°F and sunny. + type: 'array' + description: 'Tool response content' + example: 'The weather in San Francisco is 72°F and sunny.' role: enum: - - tool - type: string + - '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 + 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 + description: 'Token usage statistics' example: completion_tokens: 15 completion_tokens_details: @@ -5753,561 +5752,550 @@ components: total_tokens: 25 properties: completion_tokens: - description: Number of tokens in the completion - type: integer + description: 'Number of tokens in the completion' + type: 'integer' completion_tokens_details: - description: Detailed completion token usage - nullable: true + description: 'Detailed completion token usage' properties: accepted_prediction_tokens: - description: Accepted prediction tokens - nullable: true - type: integer + description: 'Accepted prediction tokens' + type: + - 'integer' + - 'null' audio_tokens: - description: Tokens used for audio output - nullable: true - type: integer + description: 'Tokens used for audio output' + type: + - 'integer' + - 'null' reasoning_tokens: - description: Tokens used for reasoning - nullable: true - type: integer + description: 'Tokens used for reasoning' + type: + - 'integer' + - 'null' rejected_prediction_tokens: - description: Rejected prediction tokens - nullable: true - type: integer - type: object + description: 'Rejected prediction tokens' + type: + - 'integer' + - 'null' + type: + - 'object' + - 'null' cost: - description: Cost of the completion - format: double - nullable: true - type: number + description: 'Cost of the completion' + format: 'double' + type: + - 'number' + - 'null' cost_details: $ref: '#/components/schemas/CostDetails' is_byok: - description: Whether a request was made using a Bring Your Own Key configuration - type: boolean + 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 + description: 'Number of tokens in the prompt' + type: 'integer' prompt_tokens_details: - description: Detailed prompt token usage - nullable: true + description: 'Detailed prompt token usage' properties: audio_tokens: - description: Audio input tokens - type: integer + 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 + 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 + description: 'Cached prompt tokens' + type: 'integer' video_tokens: - description: Video input tokens - type: integer - type: object + description: 'Video input tokens' + type: 'integer' + type: + - 'object' + - 'null' server_tool_use_details: $ref: '#/components/schemas/ServerToolUseDetails' total_tokens: - description: Total number of tokens - type: integer + description: 'Total number of tokens' + type: 'integer' required: - - completion_tokens - - prompt_tokens - - total_tokens - type: object + - 'completion_tokens' + - 'prompt_tokens' + - 'total_tokens' + type: 'object' ChatUserMessage: - description: User message + description: 'User message' example: - content: What is the capital of France? - role: user + content: 'What is the capital of France?' + role: 'user' properties: content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/ChatContentItems' - type: array - description: User message content - example: What is the capital of France? + type: 'array' + description: 'User message content' + example: 'What is the capital of France?' name: - description: Optional name for the user - example: User - type: string + description: 'Optional name for the user' + example: 'User' + type: 'string' role: enum: - - user - type: string + - 'user' + type: 'string' required: - - role - - content - type: object + - 'role' + - 'content' + type: 'object' ChatWebSearchShorthand: - description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search. + description: 'Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search.' example: - type: web_search_preview + 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. + 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 + 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. + 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 + 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). + 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 + 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. + 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 + 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. + 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 + 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 + - '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 + - 'type' + type: 'object' CodeInterpreterCallItem: - description: A code interpreter execution call with outputs + description: 'A code interpreter execution call with outputs' example: - code: print("Hello, World!") - container_id: container-xyz789 - id: code-abc123 + code: 'print("Hello, World!")' + container_id: 'container-xyz789' + id: 'code-abc123' outputs: - - logs: Hello, World! - type: logs - status: completed - type: code_interpreter_call + - logs: 'Hello, World!' + type: 'logs' + status: 'completed' + type: 'code_interpreter_call' properties: code: - nullable: true - type: string + type: + - 'string' + - 'null' container_id: - type: string + type: 'string' id: - type: string + type: 'string' outputs: items: anyOf: - properties: type: enum: - - image - type: string + - 'image' + type: 'string' url: - type: string + type: 'string' required: - - type - - url - type: object + - 'type' + - 'url' + type: 'object' - properties: logs: - type: string + type: 'string' type: enum: - - logs - type: string + - 'logs' + type: 'string' required: - - type - - logs - type: object - nullable: true - type: array + - 'type' + - 'logs' + type: 'object' + type: + - 'array' + - 'null' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - code_interpreter_call - type: string + - 'code_interpreter_call' + type: 'string' required: - - type - - id - - code - - outputs - - status - - container_id - type: object + - 'type' + - 'id' + - 'code' + - 'outputs' + - 'status' + - 'container_id' + type: 'object' CodeInterpreterServerTool: - description: Code interpreter tool configuration + description: 'Code interpreter tool configuration' example: - container: auto - type: code_interpreter + container: 'auto' + type: 'code_interpreter' properties: container: anyOf: - - type: string + - type: 'string' - properties: file_ids: items: - type: string - type: array + type: 'string' + type: 'array' memory_limit: enum: - - 1g - - 4g - - 16g - - 64g + - '1g' + - '4g' + - '16g' + - '64g' - null - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - auto - type: string + - 'auto' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' type: enum: - - code_interpreter - type: string + - 'code_interpreter' + type: 'string' required: - - type - - container - type: object + - 'type' + - 'container' + type: 'object' CodexLocalShellTool: - description: Local shell tool configuration + description: 'Local shell tool configuration' example: - type: local_shell + type: 'local_shell' properties: type: enum: - - local_shell - type: string + - 'local_shell' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' CompactionItem: - additionalProperties: - nullable: true - description: A context compaction marker with encrypted summary + additionalProperties: {} + description: 'A context compaction marker with encrypted summary' example: - encrypted_content: enc_abc123... - type: compaction + encrypted_content: 'enc_abc123...' + type: 'compaction' properties: encrypted_content: - type: string + type: 'string' id: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - compaction - type: string + - 'compaction' + type: 'string' required: - - type - - encrypted_content - type: object + - 'type' + - 'encrypted_content' + type: 'object' CompletedEvent: - description: Event emitted when a response has completed successfully + description: 'Event emitted when a response has completed successfully' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + 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 + 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 + presence_penalty: null + status: 'completed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 10 - type: response.completed + type: 'response.completed' properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: - type: integer + type: 'integer' type: enum: - - response.completed - type: string + - 'response.completed' + type: 'string' required: - - type - - response - - sequence_number - type: object + - 'type' + - 'response' + - 'sequence_number' + type: 'object' CompoundFilter: - description: A compound filter that combines multiple comparison or compound filters + description: 'A compound filter that combines multiple comparison or compound filters' example: filters: - - key: author - type: eq - value: Alice - type: and + - key: 'author' + type: 'eq' + value: 'Alice' + type: 'and' properties: filters: items: - additionalProperties: - nullable: true - type: object - type: array + additionalProperties: {} + type: 'object' + type: 'array' type: enum: - - and - - or - type: string + - 'and' + - 'or' + type: 'string' required: - - type - - filters - type: object + - 'type' + - 'filters' + type: 'object' ComputerUseServerTool: - description: Computer use preview tool configuration + description: 'Computer use preview tool configuration' example: display_height: 768 display_width: 1024 - environment: linux - type: computer_use_preview + environment: 'linux' + type: 'computer_use_preview' properties: display_height: - type: integer + type: 'integer' display_width: - type: integer + type: 'integer' environment: enum: - - windows - - mac - - linux - - ubuntu - - browser - type: string + - 'windows' + - 'mac' + - 'linux' + - 'ubuntu' + - 'browser' + type: 'string' type: enum: - - computer_use_preview - type: string + - 'computer_use_preview' + type: 'string' required: - - type - - display_height - - display_width - - environment - type: object + - 'type' + - 'display_height' + - 'display_width' + - 'environment' + type: 'object' ConflictResponse: - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' properties: error: $ref: '#/components/schemas/ConflictResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' ConflictResponseErrorData: - description: Error data for ConflictResponse + description: 'Error data for ConflictResponse' example: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' ContainerAutoEnvironment: - description: An OpenRouter-managed, auto-provisioned ephemeral container. + description: 'An OpenRouter-managed, auto-provisioned ephemeral container.' example: - type: container_auto + type: 'container_auto' properties: type: enum: - - container_auto - type: string + - 'container_auto' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ContainerReferenceEnvironment: - description: Reference to a previously created container to reuse. + description: 'Reference to a previously created container to reuse.' example: - container_id: cntr_abc123 - type: container_reference + container_id: 'cntr_abc123' + type: 'container_reference' properties: container_id: - description: Identifier of an existing container to reuse (max 20 characters). - example: cntr_abc123 + description: 'Identifier of an existing container to reuse (max 20 characters).' + example: 'cntr_abc123' maxLength: 20 minLength: 1 - pattern: ^[\w-]+$ - type: string + pattern: '^[\w-]+$' + type: 'string' type: enum: - - container_reference - type: string + - 'container_reference' + type: 'string' required: - - type - - container_id - type: object + - 'type' + - 'container_id' + type: 'object' ContentFilterAction: - description: Action taken when the pattern matches + description: 'Action taken when the pattern matches' enum: - - redact - - block - example: block - type: string + - 'redact' + - 'block' + example: 'block' + type: 'string' ContentFilterBuiltinAction: - description: Action taken when the builtin filter triggers + description: 'Action taken when the builtin filter triggers' enum: - - redact - - block - - flag - example: block - type: string + - '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. + description: 'A builtin content filter entry. Builtin filters include PII detectors and the regex-based prompt injection detector.' example: - action: redact + action: 'redact' label: '[EMAIL]' - slug: 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. + 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 + type: 'string' scan_scope: $ref: '#/components/schemas/PromptInjectionScanScope' slug: $ref: '#/components/schemas/ContentFilterBuiltinSlug' required: - - slug - - action - type: object + - '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. + 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 + 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. + description: 'Deprecated: labels are system-assigned and cannot be set by the caller. Accepted for backward compatibility but silently ignored.' maxLength: 100 - type: string + type: 'string' scan_scope: $ref: '#/components/schemas/PromptInjectionScanScope' slug: $ref: '#/components/schemas/ContentFilterBuiltinSlug' required: - - slug - - action - type: object + - 'slug' + - 'action' + type: 'object' ContentFilterBuiltinSlug: - description: The builtin filter identifier + 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 + - '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. + description: 'A custom regex content filter that scans request messages for matching patterns.' example: - action: redact + action: 'redact' label: '[API_KEY]' - pattern: \b(sk-[a-zA-Z0-9]{48})\b + 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 + description: 'Optional label used in redaction placeholders or error messages' example: '[API_KEY]' maxLength: 100 - nullable: true - type: string + type: + - 'string' + - 'null' pattern: - description: A regex pattern to match against request content - example: \b(sk-[a-zA-Z0-9]{48})\b + description: 'A regex pattern to match against request content' + example: '\b(sk-[a-zA-Z0-9]{48})\b' minLength: 1 - type: string + type: 'string' required: - - pattern - - action - type: object + - 'pattern' + - 'action' + type: 'object' ContentPartAddedEvent: allOf: - $ref: '#/components/schemas/BaseContentPartAddedEvent' @@ -6317,39 +6305,39 @@ components: - $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 + type: 'object' + description: 'Event emitted when a new content part is added to an output item' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 part: annotations: [] text: '' - type: output_text + type: 'output_text' sequence_number: 3 - type: response.content_part.added + type: 'response.content_part.added' ContentPartAudio: example: audio_url: - url: https://example.com/audio.mp3 - type: audio_url + url: 'https://example.com/audio.mp3' + type: 'audio_url' properties: audio_url: properties: url: - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' type: enum: - - audio_url - type: string + - 'audio_url' + type: 'string' required: - - type - - audio_url - type: object + - 'type' + - 'audio_url' + type: 'object' ContentPartDoneEvent: allOf: - $ref: '#/components/schemas/BaseContentPartDoneEvent' @@ -6359,232 +6347,236 @@ components: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/ReasoningTextContent' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - type: object - description: Event emitted when a content part is complete + type: 'object' + description: 'Event emitted when a content part is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 part: annotations: [] - text: Hello! How can I help you? - type: output_text + text: 'Hello! How can I help you?' + type: 'output_text' sequence_number: 7 - type: response.content_part.done + type: 'response.content_part.done' ContentPartImage: example: image_url: - url: https://example.com/image.png - type: image_url + url: 'https://example.com/image.png' + type: 'image_url' properties: image_url: properties: url: - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' type: enum: - - image_url - type: string + - 'image_url' + type: 'string' required: - - type - - image_url - type: object + - 'type' + - 'image_url' + type: 'object' ContentPartInputAudio: example: input_audio: - data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA... - format: wav - type: 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 + - 'input_audio' + type: 'string' required: - - type - - input_audio - type: object + - 'type' + - 'input_audio' + type: 'object' ContentPartInputFile: example: input_file: - data: data:application/pdf;base64,JVBERi0xLjQKJeLjz9MKMyAw... - format: pdf - type: 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 + - 'input_file' + type: 'string' required: - - type - - input_file - type: object + - 'type' + - 'input_file' + type: 'object' ContentPartInputVideo: example: input_video: - data: data:video/mp4;base64,AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQy... - format: mp4 - type: 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 + - 'input_video' + type: 'string' required: - - type - - input_video - type: object + - 'type' + - 'input_video' + type: 'object' ContentPartVideo: example: - type: video_url + type: 'video_url' video_url: - url: https://example.com/clip.mp4 + url: 'https://example.com/clip.mp4' properties: type: enum: - - video_url - type: string + - 'video_url' + type: 'string' video_url: properties: url: - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' required: - - type - - video_url - type: object + - 'type' + - 'video_url' + type: 'object' ContextCompactionItem: - additionalProperties: - nullable: true - description: A context compaction marker with an optional encrypted summary + additionalProperties: {} + description: 'A context compaction marker with an optional encrypted summary' example: - encrypted_content: enc_abc123... - type: context_compaction + encrypted_content: 'enc_abc123...' + type: 'context_compaction' properties: encrypted_content: - nullable: true - type: string + type: + - 'string' + - 'null' id: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - context_compaction - type: string + - 'context_compaction' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ContextCompressionEngine: - description: The compression engine to use. Defaults to "middle-out". + description: 'The compression engine to use. Defaults to "middle-out".' enum: - - middle-out - example: middle-out - type: string + - 'middle-out' + example: 'middle-out' + type: 'string' ContextCompressionPlugin: example: enabled: true - engine: middle-out - id: context-compression + 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 + 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 + - 'context-compression' + type: 'string' required: - - id - type: object + - 'id' + type: 'object' CostDetails: - description: Breakdown of upstream inference costs + 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 + format: 'double' + type: 'number' upstream_inference_cost: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' upstream_inference_prompt_cost: - format: double - type: number - required: - - upstream_inference_prompt_cost - - upstream_inference_completions_cost - type: object + format: 'double' + type: 'number' + required: + - 'upstream_inference_prompt_cost' + - 'upstream_inference_completions_cost' + type: + - 'object' + - 'null' CreateBYOKKeyRequest: example: - key: sk-proj-abc123... - name: Production OpenAI Key - provider: openai + 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. + description: 'Optional allowlist of model slugs this credential may be used for. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_user_ids: - description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. + description: 'Optional allowlist of user IDs that may use this credential. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' disabled: - description: Whether this credential should be created in a disabled state. + description: 'Whether this credential should be created in a disabled state.' example: false - type: boolean + 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. + 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 + 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... + 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 + type: 'string' name: - description: Optional human-readable name for the credential. - example: Production OpenAI Key + description: 'Optional human-readable name for the credential.' + example: 'Production OpenAI Key' maxLength: 255 - nullable: true - type: string + type: + - 'string' + - 'null' 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 + 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: @@ -6593,69 +6585,72 @@ components: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - - description: The created BYOK credential. + - description: 'The created BYOK credential.' required: - - data - type: object + - 'data' + type: 'object' CreatedEvent: - description: Event emitted when a response is created + description: 'Event emitted when a response is created' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: in_progress + presence_penalty: null + status: 'in_progress' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 0 - type: response.created + type: 'response.created' properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: - type: integer + type: 'integer' type: enum: - - response.created - type: string + - 'response.created' + type: 'string' required: - - type - - response - - sequence_number - type: object + - 'type' + - 'response' + - 'sequence_number' + type: 'object' CreateGuardrailRequest: example: allowed_models: null allowed_providers: - - openai - - anthropic - - deepseek + - 'openai' + - 'anthropic' + - 'deepseek' content_filter_builtins: - - action: block - slug: regex-prompt-injection + - action: 'block' + slug: 'regex-prompt-injection' content_filters: null - description: A guardrail for limiting API usage + description: 'A guardrail for limiting API usage' enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true @@ -6664,662 +6659,656 @@ components: ignored_models: null ignored_providers: null limit_usd: 50 - name: My New Guardrail - reset_interval: monthly + name: 'My New Guardrail' + reset_interval: 'monthly' properties: allowed_models: - description: Array of model identifiers (slug or canonical_slug accepted) + 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 + - 'openai/gpt-5.2' + - 'anthropic/claude-4.5-opus-20251124' + - 'deepseek/deepseek-r1-0528:free' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_providers: - description: List of allowed provider IDs + description: 'List of allowed provider IDs' example: - - openai - - anthropic - - deepseek + - 'openai' + - 'anthropic' + - 'deepseek' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' 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. + 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 + - action: 'block' + slug: 'regex-prompt-injection' items: $ref: '#/components/schemas/ContentFilterBuiltinEntryInput' - nullable: true - type: array + type: + - 'array' + - 'null' content_filters: - description: Custom regex content filters to apply to request messages + description: 'Custom regex content filters to apply to request messages' example: - - action: redact + - action: 'redact' label: '[API_KEY]' - pattern: \b(sk-[a-zA-Z0-9]{48})\b + pattern: '\b(sk-[a-zA-Z0-9]{48})\b' items: $ref: '#/components/schemas/ContentFilterEntry' - nullable: true - type: array + type: + - 'array' + - 'null' description: - description: Description of the guardrail - example: A guardrail for limiting API usage + description: 'Description of the guardrail' + example: 'A guardrail for limiting API usage' maxLength: 1000 - nullable: true - type: string + type: + - 'string' + - 'null' enforce_zdr: deprecated: true - description: >- - Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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. + description: 'Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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 + type: + - 'boolean' + - 'null' enforce_zdr_anthropic: - description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_google: - description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_openai: - description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_other: - description: >- - Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls - back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_xai: - description: Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' ignored_models: - description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted) + description: 'Array of model identifiers to exclude from routing (slug or canonical_slug accepted)' example: - - openai/gpt-4o-mini + - 'openai/gpt-4o-mini' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' ignored_providers: - description: List of provider IDs to exclude from routing + description: 'List of provider IDs to exclude from routing' example: - - azure + - 'azure' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' limit_usd: - description: Spending limit in USD + description: 'Spending limit in USD' example: 50 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' name: - description: Name for the new guardrail - example: My New Guardrail + description: 'Name for the new guardrail' + example: 'My New Guardrail' maxLength: 200 minLength: 1 - type: string + 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 + 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 + - 'name' + type: 'object' CreateGuardrailResponse: example: data: allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' content_filter_builtins: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' content_filters: null created_at: '2025-08-24T10:30:00Z' - description: A guardrail for limiting API usage + 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 enforce_zdr_xai: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 50 - name: My New Guardrail - reset_interval: monthly + name: 'My New Guardrail' + reset_interval: 'monthly' updated_at: null - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - - description: The created guardrail + - description: 'The created guardrail' required: - - data - type: object + - '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 + 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. + 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 + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' config: - additionalProperties: - nullable: true - description: Provider-specific configuration. The shape depends on `type` and is validated server-side. + additionalProperties: {} + 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 + 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. + description: 'Whether this destination should be enabled immediately.' example: true - type: boolean + type: 'boolean' filter_rules: $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable' name: - description: Human-readable name for the destination. - example: Production Langfuse - type: string + 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. + description: 'When true, request/response bodies are not forwarded — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate between 0.0001 and 1 (1 = 100%). + 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 + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - - description: The newly created observability destination. + - description: 'The newly created observability destination.' required: - - data - type: object + - 'data' + type: 'object' CreatePresetFromInferenceResponse: - description: Response containing the created preset with its designated version. + description: 'Response containing the created preset with its designated version.' example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-4o + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' properties: data: $ref: '#/components/schemas/PresetWithDesignatedVersion' required: - - data - type: object + - '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 + 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 + description: 'Default image model for this workspace' + example: 'openai/dall-e-3' + type: + - 'string' + - 'null' default_provider_sort: - description: Default provider sort preference (price, throughput, latency, exacto) - example: price - nullable: true - type: string + description: 'Default provider sort preference (price, throughput, latency, exacto)' + example: 'price' + type: + - 'string' + - 'null' default_text_model: - description: Default text model for this workspace - example: openai/gpt-4o - nullable: true - type: string + description: 'Default text model for this workspace' + example: 'openai/gpt-4o' + type: + - 'string' + - 'null' description: - description: Description of the workspace - example: Production environment workspace + description: 'Description of the workspace' + example: 'Production environment workspace' maxLength: 500 - nullable: true - type: string + type: + - 'string' + - 'null' io_logging_api_key_ids: - description: Optional array of API key IDs to filter I/O logging + description: 'Optional array of API key IDs to filter I/O logging' example: null items: - type: integer - nullable: true - type: array + type: 'integer' + type: + - 'array' + - 'null' io_logging_sampling_rate: - description: Sampling rate for I/O logging (0.0001-1) + description: 'Sampling rate for I/O logging (0.0001-1)' example: 1 - format: double - type: number + format: 'double' + type: 'number' is_data_discount_logging_enabled: - description: Whether data discount logging is enabled + description: 'Whether data discount logging is enabled' example: true - type: boolean + type: 'boolean' is_observability_broadcast_enabled: - description: Whether broadcast is enabled + description: 'Whether broadcast is enabled' example: false - type: boolean + type: 'boolean' is_observability_io_logging_enabled: - description: Whether private logging is enabled + description: 'Whether private logging is enabled' example: false - type: boolean + type: 'boolean' name: - description: Name for the new workspace - example: Production + description: 'Name for the new workspace' + example: 'Production' maxLength: 100 minLength: 1 - type: string + type: 'string' slug: - description: URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) - example: production + 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 + pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$' + type: 'string' required: - - name - - slug - type: object + - '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 + 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 + name: 'Production' + slug: 'production' updated_at: null properties: data: allOf: - $ref: '#/components/schemas/Workspace' - - description: The created workspace + - description: 'The created workspace' required: - - data - type: object + - 'data' + type: 'object' CustomTool: - description: Custom tool configuration + description: 'Custom tool configuration' example: - name: my_tool - type: custom + name: 'my_tool' + type: 'custom' properties: description: - type: string + type: 'string' format: anyOf: - properties: type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: definition: - type: string + type: 'string' syntax: enum: - - lark - - regex - type: string + - 'lark' + - 'regex' + type: 'string' type: enum: - - grammar - type: string + - 'grammar' + type: 'string' required: - - type - - definition - - syntax - type: object + - 'type' + - 'definition' + - 'syntax' + type: 'object' name: - type: string + type: 'string' type: enum: - - custom - type: string + - 'custom' + type: 'string' required: - - type - - name - type: object + - '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. + 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 + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.custom_tool_call_input.delta + 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 + 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\n*** End Patch" + item_id: 'item-1' output_index: 0 sequence_number: 6 - type: response.custom_tool_call_input.done + 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 + 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\n*** End Patch" + name: 'apply_patch' + type: 'custom_tool_call' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' input: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'custom_tool_call' + type: 'string' required: - - type - - call_id - - name - - input - type: object + - 'type' + - 'call_id' + - 'name' + - 'input' + type: 'object' CustomToolCallOutputItem: allOf: - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput' - properties: output: anyOf: - - type: string + - type: 'string' - items: oneOf: - $ref: '#/components/schemas/InputText' - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} - type: object - description: Image input content item + type: 'object' + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image + 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 + 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 + description: 'A single Design Arena benchmark entry for a specific arena+category' example: - arena: models - category: website + 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 + 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 + description: 'Category within the arena (e.g. website, gamedev, uicomponent)' + example: 'website' + type: 'string' elo: - description: ELO rating from head-to-head arena battles + description: 'ELO rating from head-to-head arena battles' example: 1385.2 - format: double - type: number + format: 'double' + type: 'number' rank: - description: Rank position within this arena+category among models available on OpenRouter (1 = highest ELO) + description: 'Rank position within this arena+category among models available on OpenRouter (1 = highest ELO)' example: 5 - type: integer + type: 'integer' win_rate: - description: Win rate percentage in arena battles + description: 'Win rate percentage in arena battles' example: 62.5 - format: double - type: number - required: - - arena - - category - - elo - - win_rate - - rank - type: object + 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 + timezone: 'America/New_York' + type: 'openrouter:datetime' properties: parameters: $ref: '#/components/schemas/DatetimeServerToolConfig' type: enum: - - openrouter:datetime - type: string + - 'openrouter:datetime' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' DatetimeServerToolConfig: - description: Configuration for the openrouter:datetime server tool + description: 'Configuration for the openrouter:datetime server tool' example: - timezone: America/New_York + 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 + 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. + 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 + model: 'anthropic/claude-sonnet-4' sequence_number: 1 - type: response.debug + type: 'response.debug' properties: debug: properties: echo_upstream_body: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' timings: properties: epoch_ms: - type: integer + type: 'integer' event: enum: - - adapter_request - - upstream_headers_received - - first_token_received - - upstream_body_ended - type: string + - 'adapter_request' + - 'upstream_headers_received' + - 'first_token_received' + - 'upstream_body_ended' + type: 'string' start_ms: - type: integer + type: 'integer' required: - - start_ms - - event - - epoch_ms - type: object - type: object + - 'start_ms' + - 'event' + - 'epoch_ms' + type: 'object' + type: 'object' sequence_number: - type: integer + type: 'integer' type: enum: - - response.debug - type: string + - 'response.debug' + type: 'string' required: - - type - - debug - - sequence_number - type: object + - 'type' + - 'debug' + - 'sequence_number' + type: 'object' DefaultParameters: additionalProperties: false - description: Default parameters for this model + description: 'Default parameters for this model' example: frequency_penalty: 0 presence_penalty: 0 @@ -7327,110 +7316,116 @@ components: temperature: 0.7 top_k: 0 top_p: 0.9 - nullable: true properties: frequency_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' presence_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' repetition_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' temperature: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' top_k: - nullable: true - type: integer + type: + - 'integer' + - 'null' top_p: - format: double - nullable: true - type: number - type: object + format: 'double' + type: + - 'number' + - 'null' + type: + - 'object' + - 'null' DeleteBYOKKeyResponse: example: deleted: true properties: deleted: const: true - description: Confirmation that the BYOK credential was deleted. + description: 'Confirmation that the BYOK credential was deleted.' example: true - type: boolean + type: 'boolean' required: - - deleted - type: object + - 'deleted' + type: 'object' DeleteGuardrailResponse: example: deleted: true properties: deleted: const: true - description: Confirmation that the guardrail was deleted + description: 'Confirmation that the guardrail was deleted' example: true - type: boolean + type: 'boolean' required: - - deleted - type: object + - 'deleted' + type: 'object' DeleteObservabilityDestinationResponse: example: deleted: true properties: deleted: const: true - description: Always `true` on success. - type: boolean + description: 'Always `true` on success.' + type: 'boolean' required: - - deleted - type: object + - 'deleted' + type: 'object' DeleteWorkspaceBudgetResponse: example: deleted: true properties: deleted: const: true - description: Confirmation that the budget was deleted (or did not exist) + description: 'Confirmation that the budget was deleted (or did not exist)' example: true - type: boolean + type: 'boolean' required: - - deleted - type: object + - 'deleted' + type: 'object' DeleteWorkspaceResponse: example: deleted: true properties: deleted: const: true - description: Confirmation that the workspace was deleted + description: 'Confirmation that the workspace was deleted' example: true - type: boolean + type: 'boolean' required: - - deleted - type: object + - '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"). + 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 + - 'fallback' + - 'sort' - null - example: fallback - nullable: true - type: string + example: 'fallback' + type: + - 'string' + - 'null' x-fern-ignore: true - x-speakeasy-deprecation-message: Use providers.sort.partition instead. + x-speakeasy-deprecation-message: 'Use providers.sort.partition instead.' x-speakeasy-ignore: true EasyInputMessage: example: - content: What is the weather today? - role: user + content: 'What is the weather today?' + role: 'user' properties: content: anyOf: @@ -7440,127 +7435,125 @@ components: - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} - type: object - description: Image input content item + type: 'object' + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image + 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 + type: 'array' + - type: 'string' + - type: 'null' phase: anyOf: - enum: - - commentary - type: string + - '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 + - 'final_answer' + type: 'string' + - type: 'null' + 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 + - 'user' + type: 'string' - enum: - - system - type: string + - 'system' + type: 'string' - enum: - - assistant - type: string + - 'assistant' + type: 'string' - enum: - - developer - type: string + - 'developer' + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - role - type: object + - 'role' + type: 'object' EdgeNetworkTimeoutResponse: - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' properties: error: $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' EdgeNetworkTimeoutResponseErrorData: - description: Error data for EdgeNetworkTimeoutResponse + description: 'Error data for EdgeNetworkTimeoutResponse' example: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' EndpointInfo: example: - model: openai/gpt-4o - provider: OpenAI + model: 'openai/gpt-4o' + provider: 'OpenAI' selected: true properties: model: - type: string + type: 'string' provider: - type: string + type: 'string' selected: - type: boolean + type: 'boolean' required: - - provider - - model - - selected - type: object + - 'provider' + - 'model' + - 'selected' + type: 'object' EndpointsMetadata: example: available: - - model: openai/gpt-4o - provider: OpenAI + - model: 'openai/gpt-4o' + provider: 'OpenAI' selected: true total: 3 properties: available: items: $ref: '#/components/schemas/EndpointInfo' - type: array + type: 'array' total: - type: integer + type: 'integer' required: - - total - - available - type: object + - 'total' + - 'available' + type: 'object' EndpointStatus: enum: - 0 @@ -7570,581 +7563,589 @@ components: - -5 - -10 example: 0 - type: integer + type: 'integer' EnumCapability: - description: A parameter that accepts one of a discrete set of string values. + description: 'A parameter that accepts one of a discrete set of string values.' example: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' properties: type: enum: - - enum - type: string + - 'enum' + type: 'string' values: items: - type: string - type: array + type: 'string' + type: 'array' required: - - type - - values - type: object + - 'type' + - 'values' + type: 'object' ErrorEvent: allOf: - $ref: '#/components/schemas/BaseErrorEvent' - properties: {} - type: object - description: Event emitted when an error occurs during streaming + type: 'object' + description: 'Event emitted when an error occurs during streaming' example: - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. + code: 'rate_limit_exceeded' + message: 'Rate limit exceeded. Please try again later.' param: null sequence_number: 2 - type: error + type: 'error' FailedEvent: - description: Event emitted when a response has failed + description: 'Event emitted when a response has failed' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: failed + presence_penalty: null + status: 'failed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 3 - type: response.failed + type: 'response.failed' properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: - type: integer + type: 'integer' type: enum: - - response.failed - type: string + - 'response.failed' + type: 'string' required: - - type - - response - - sequence_number - type: object + - 'type' + - 'response' + - 'sequence_number' + type: 'object' FileCitation: example: - file_id: file-abc123 - filename: research_paper.pdf + file_id: 'file-abc123' + filename: 'research_paper.pdf' index: 0 - type: file_citation + type: 'file_citation' properties: file_id: - type: string + type: 'string' filename: - type: string + type: 'string' index: - type: integer + type: 'integer' type: enum: - - file_citation - type: string + - 'file_citation' + type: 'string' required: - - type - - file_id - - filename - - index - type: object + - 'type' + - 'file_id' + - 'filename' + - 'index' + type: 'object' FileDeleteResponse: - description: Confirmation that a file was deleted. + description: 'Confirmation that a file was deleted.' example: - id: file_011CNha8iCJcU1wXNR6q4V8w - type: file_deleted + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + type: 'file_deleted' properties: id: - type: string + type: 'string' type: enum: - - file_deleted - type: string + - 'file_deleted' + type: 'string' required: - - id - - type - type: object + - 'id' + - 'type' + type: 'object' FileListResponse: - description: A page of files belonging to the requesting workspace. + 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 + filename: 'document.pdf' + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + mime_type: 'application/pdf' size_bytes: 1024000 - type: file - first_id: file_011CNha8iCJcU1wXNR6q4V8w + type: 'file' + first_id: 'file_011CNha8iCJcU1wXNR6q4V8w' has_more: false - last_id: file_011CNha8iCJcU1wXNR6q4V8w + last_id: 'file_011CNha8iCJcU1wXNR6q4V8w' properties: cursor: - description: Opaque cursor for the next page; null when there are no more results. - nullable: true - type: string + description: 'Opaque cursor for the next page; null when there are no more results.' + type: + - 'string' + - 'null' data: items: $ref: '#/components/schemas/FileMetadata' - type: array + type: 'array' first_id: - nullable: true - type: string + type: + - 'string' + - 'null' has_more: - type: boolean + type: 'boolean' last_id: - nullable: true - type: string - required: - - data - - has_more - - first_id - - last_id - - cursor - type: object + type: + - 'string' + - 'null' + required: + - 'data' + - 'has_more' + - 'first_id' + - 'last_id' + - 'cursor' + type: 'object' FileMetadata: - description: Metadata describing a stored file. + 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 + filename: 'document.pdf' + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + mime_type: 'application/pdf' size_bytes: 1024000 - type: file + type: 'file' properties: created_at: - type: string + type: 'string' downloadable: - type: boolean + type: 'boolean' filename: - type: string + type: 'string' id: - type: string + type: 'string' mime_type: - type: string + type: 'string' size_bytes: - type: integer + type: 'integer' type: enum: - - file - type: string + - 'file' + type: 'string' required: - - id - - type - - filename - - mime_type - - size_bytes - - created_at - - downloadable - type: object + - 'id' + - 'type' + - 'filename' + - 'mime_type' + - 'size_bytes' + - 'created_at' + - 'downloadable' + type: 'object' FileParserPlugin: example: enabled: true - id: file-parser + id: 'file-parser' pdf: - engine: cloudflare-ai + engine: 'cloudflare-ai' properties: enabled: - description: Set to false to disable the file-parser plugin for this request. Defaults to true. - type: boolean + description: 'Set to false to disable the file-parser plugin for this request. Defaults to true.' + type: 'boolean' id: enum: - - file-parser - type: string + - 'file-parser' + type: 'string' pdf: $ref: '#/components/schemas/PDFParserOptions' required: - - id - type: object + - 'id' + type: 'object' FilePath: example: - file_id: file-xyz789 + file_id: 'file-xyz789' index: 0 - type: file_path + type: 'file_path' properties: file_id: - type: string + type: 'string' index: - type: integer + type: 'integer' type: enum: - - file_path - type: string + - 'file_path' + type: 'string' required: - - type - - file_id - - index - type: object + - 'type' + - 'file_id' + - 'index' + type: 'object' FileSearchServerTool: - description: File search tool configuration + description: 'File search tool configuration' example: - type: file_search + type: 'file_search' vector_store_ids: - - vs_abc123 + - 'vs_abc123' properties: filters: anyOf: - properties: key: - type: string + type: 'string' type: enum: - - eq - - ne - - gt - - gte - - lt - - lte - type: string + - 'eq' + - 'ne' + - 'gt' + - 'gte' + - 'lt' + - 'lte' + type: 'string' value: anyOf: - - type: string - - format: double - type: number - - type: boolean + - type: 'string' + - format: 'double' + type: 'number' + - type: 'boolean' - items: anyOf: - - type: string - - format: double - type: number - type: array + - type: 'string' + - format: 'double' + type: 'number' + type: 'array' required: - - key - - type - - value - type: object + - 'key' + - 'type' + - 'value' + type: 'object' - $ref: '#/components/schemas/CompoundFilter' - - nullable: true + - type: 'null' max_num_results: - type: integer + type: 'integer' ranking_options: properties: ranker: enum: - - auto - - default-2024-11-15 - type: string + - 'auto' + - 'default-2024-11-15' + type: 'string' score_threshold: - format: double - type: number - type: object + format: 'double' + type: 'number' + type: 'object' type: enum: - - file_search - type: string + - 'file_search' + type: 'string' vector_store_ids: items: - type: string - type: array + type: 'string' + type: 'array' required: - - type - - vector_store_ids - type: object + - '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. + 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 + type: 'openrouter:files' properties: parameters: $ref: '#/components/schemas/FilesServerToolConfig' type: enum: - - openrouter:files - type: string + - 'openrouter:files' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' FilesServerToolConfig: - description: Configuration for the openrouter:files server tool + description: 'Configuration for the openrouter:files server tool' example: {} properties: {} - type: object + type: 'object' ForbiddenResponse: - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' properties: error: $ref: '#/components/schemas/ForbiddenResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' ForbiddenResponseErrorData: - description: Error data for ForbiddenResponse + description: 'Error data for ForbiddenResponse' example: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' FormatJsonObjectConfig: - description: JSON object response format + description: 'JSON object response format' example: - type: json_object + type: 'json_object' properties: type: enum: - - json_object - type: string + - 'json_object' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' FormatJsonSchemaConfig: - description: JSON schema constrained response format + description: 'JSON schema constrained response format' example: - description: User information schema - name: user_info + description: 'User information schema' + name: 'user_info' schema: properties: age: - type: number + type: 'number' name: - type: string + type: 'string' required: - - name - type: object - type: json_schema + - 'name' + type: 'object' + type: 'json_schema' properties: description: - type: string + type: 'string' name: - type: string + type: 'string' schema: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' strict: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' type: enum: - - json_schema - type: string + - 'json_schema' + type: 'string' required: - - type - - name - - schema - type: object + - 'type' + - 'name' + - 'schema' + type: 'object' Formats: anyOf: - $ref: '#/components/schemas/FormatTextConfig' - $ref: '#/components/schemas/FormatJsonObjectConfig' - $ref: '#/components/schemas/FormatJsonSchemaConfig' - description: Text response format configuration + description: 'Text response format configuration' example: - type: text + type: 'text' FormatTextConfig: - description: Plain text response format + description: 'Plain text response format' example: - type: text + type: 'text' properties: type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - type: object + - '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 + description: 'Whether this image represents the first or last frame of the video' enum: - - first_frame - - last_frame - example: first_frame - type: string + - 'first_frame' + - 'last_frame' + example: 'first_frame' + type: 'string' required: - - frame_type - type: object + - 'frame_type' + type: 'object' example: + frame_type: 'first_frame' image_url: - url: https://example.com/image.png - type: 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 + type: 'object' + description: 'Event emitted when function call arguments are being streamed' example: delta: '{"city": "..."}' - item_id: item-1 + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.function_call_arguments.delta + 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 + 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 + item_id: 'item-1' + name: 'get_weather' output_index: 0 sequence_number: 6 - type: response.function_call_arguments.done + 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 + - '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 + 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 + - type: 'string' - items: oneOf: - $ref: '#/components/schemas/InputText' - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} - type: object - description: Image input content item + type: 'object' + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image + 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 + type: 'array' + type: 'object' + description: 'The output from a function call execution' example: - call_id: call-abc123 - id: output-abc123 + call_id: 'call-abc123' + id: 'output-abc123' output: '{"temperature":72,"conditions":"sunny"}' - status: completed - type: function_call_output + status: 'completed' + type: 'function_call_output' FunctionTool: - description: Function tool definition + description: 'Function tool definition' example: - description: Get the current weather in a location - name: get_weather + description: 'Get the current weather in a location' + name: 'get_weather' parameters: properties: location: - description: The city and state - type: string + description: 'The city and state' + type: 'string' unit: enum: - - celsius - - fahrenheit - type: string + - 'celsius' + - 'fahrenheit' + type: 'string' required: - - location - type: object - type: function + - 'location' + type: 'object' + type: 'function' properties: description: - nullable: true - type: string + type: + - 'string' + - 'null' name: - type: string + type: 'string' parameters: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' strict: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - type - - name - - parameters - type: object + - 'type' + - 'name' + - 'parameters' + type: 'object' FusionAnalysisResult: - description: Structured analysis produced by the fusion judge model. + description: 'Structured analysis produced by the fusion judge model.' example: blind_spots: - - No model considered the impact on existing API consumers. + - 'No model considered the impact on existing API consumers.' consensus: - - All panel models agree the request is asking for a concise summary. + - '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 + - 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. + - '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 + - insight: 'Highlighted a backwards-compatibility risk the other models missed.' + model: 'anthropic/claude-sonnet-4.5' properties: blind_spots: items: - type: string - type: array + type: 'string' + type: 'array' consensus: items: - type: string - type: array + type: 'string' + type: 'array' contradictions: items: properties: @@ -8152,56 +8153,56 @@ components: items: properties: model: - type: string + type: 'string' stance: - type: string + type: 'string' required: - - model - - stance - type: object - type: array + - 'model' + - 'stance' + type: 'object' + type: 'array' topic: - type: string + type: 'string' required: - - topic - - stances - type: object - type: array + - 'topic' + - 'stances' + type: 'object' + type: 'array' partial_coverage: items: properties: models: items: - type: string - type: array + type: 'string' + type: 'array' point: - type: string + type: 'string' required: - - models - - point - type: object - type: array + - 'models' + - 'point' + type: 'object' + type: 'array' unique_insights: items: properties: insight: - type: string + type: 'string' model: - type: string + type: 'string' required: - - model - - insight - type: object - type: array - required: - - consensus - - contradictions - - partial_coverage - - unique_insights - - blind_spots - type: object + - '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. + description: 'Emitted when the fusion judge completes with the structured analysis.' example: analysis: blind_spots: [] @@ -8209,908 +8210,907 @@ components: contradictions: [] partial_coverage: [] unique_insights: [] - item_id: st_fusion_abc + item_id: 'st_fusion_abc' output_index: 0 sequence_number: 40 - type: response.fusion_call.analysis.completed + type: 'response.fusion_call.analysis.completed' properties: analysis: $ref: '#/components/schemas/FusionAnalysisResult' item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.analysis.completed - type: string + - 'response.fusion_call.analysis.completed' + type: 'string' required: - - type - - analysis - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'analysis' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallAnalysisInProgressEvent: - description: Emitted when the fusion judge starts producing the structured analysis. + description: 'Emitted when the fusion judge starts producing the structured analysis.' example: - item_id: st_fusion_abc - judge_model: openai/gpt-5 + item_id: 'st_fusion_abc' + judge_model: 'openai/gpt-5' output_index: 0 sequence_number: 25 - type: response.fusion_call.analysis.in_progress + type: 'response.fusion_call.analysis.in_progress' properties: item_id: - type: string + type: 'string' judge_model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.analysis.in_progress - type: string + - 'response.fusion_call.analysis.in_progress' + type: 'string' required: - - type - - judge_model - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'judge_model' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallCompletedEvent: - description: Emitted when the openrouter:fusion tool call finishes. + description: 'Emitted when the openrouter:fusion tool call finishes.' example: - item_id: st_fusion_abc + item_id: 'st_fusion_abc' output_index: 0 sequence_number: 41 - type: response.fusion_call.completed + type: 'response.fusion_call.completed' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.completed - type: string + - 'response.fusion_call.completed' + type: 'string' required: - - type - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallInProgressEvent: - description: Emitted when an openrouter:fusion tool call begins executing. + description: 'Emitted when an openrouter:fusion tool call begins executing.' example: - item_id: st_fusion_abc + item_id: 'st_fusion_abc' output_index: 0 sequence_number: 3 - type: response.fusion_call.in_progress + type: 'response.fusion_call.in_progress' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.in_progress - type: string + - 'response.fusion_call.in_progress' + type: 'string' required: - - type - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallPanelAddedEvent: - description: Emitted when a fusion analysis-panel model starts. + description: 'Emitted when a fusion analysis-panel model starts.' example: - item_id: st_fusion_abc - model: openai/gpt-5 + item_id: 'st_fusion_abc' + model: 'openai/gpt-5' output_index: 0 sequence_number: 4 - type: response.fusion_call.panel.added + type: 'response.fusion_call.panel.added' properties: item_id: - type: string + type: 'string' model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.panel.added - type: string + - 'response.fusion_call.panel.added' + type: 'string' required: - - type - - model - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'model' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallPanelCompletedEvent: - description: Emitted when a fusion panel model finishes with its full content. + 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 + 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 + type: 'response.fusion_call.panel.completed' properties: content: - type: string + type: 'string' item_id: - type: string + type: 'string' model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.panel.completed - type: string + - 'response.fusion_call.panel.completed' + type: 'string' required: - - type - - model - - content - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'model' + - 'content' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallPanelDeltaEvent: - description: Incremental content token from a fusion panel model. + description: 'Incremental content token from a fusion panel model.' example: - delta: Carbon taxes - item_id: st_fusion_abc - model: openai/gpt-5 + delta: 'Carbon taxes' + item_id: 'st_fusion_abc' + model: 'openai/gpt-5' output_index: 0 sequence_number: 5 - type: response.fusion_call.panel.delta + type: 'response.fusion_call.panel.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.panel.delta - type: string + - 'response.fusion_call.panel.delta' + type: 'string' required: - - type - - model - - delta - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'model' + - 'delta' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallPanelFailedEvent: - description: Emitted when a fusion panel model fails. + description: 'Emitted when a fusion panel model fails.' example: - error: Upstream provider error - item_id: st_fusion_abc - model: openai/gpt-5 + 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 + type: 'response.fusion_call.panel.failed' properties: error: - type: string + type: 'string' item_id: - type: string + type: 'string' model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' status_code: - type: integer + type: 'integer' type: enum: - - response.fusion_call.panel.failed - type: string + - 'response.fusion_call.panel.failed' + type: 'string' required: - - type - - model - - error - - output_index - - item_id - - sequence_number - type: object + - 'type' + - 'model' + - 'error' + - 'output_index' + - 'item_id' + - 'sequence_number' + type: 'object' FusionCallPanelReasoningDeltaEvent: - description: Incremental reasoning token from a fusion panel model. + description: 'Incremental reasoning token from a fusion panel model.' example: - delta: Considering both sides - item_id: st_fusion_abc - model: openai/gpt-5 + 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 + type: 'response.fusion_call.panel.reasoning.delta' properties: delta: - type: string + type: 'string' item_id: - type: string + type: 'string' model: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.fusion_call.panel.reasoning.delta - type: string + - 'response.fusion_call.panel.reasoning.delta' + type: 'string' required: - - type - - model - - delta - - output_index - - item_id - - sequence_number - type: object + - '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 + - '~anthropic/claude-opus-latest' + - '~openai/gpt-latest' + - '~google/gemini-pro-latest' enabled: true - id: fusion - model: ~anthropic/claude-opus-latest + 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). + 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 + - '~anthropic/claude-opus-latest' + - '~openai/gpt-latest' + - '~google/gemini-pro-latest' items: - type: string + type: 'string' maxItems: 8 minItems: 1 - type: array + type: 'array' enabled: - description: Set to false to disable the fusion plugin for this request. Defaults to true. - type: boolean + description: 'Set to false to disable the fusion plugin for this request. Defaults to true.' + type: 'boolean' id: enum: - - fusion - type: string + - '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. + 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 + 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 + 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 + 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). + 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 + - '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 + - type: 'string' + - format: 'double' + type: 'number' + - type: 'boolean' + - type: 'null' - items: anyOf: - - type: string - - format: double - type: number - - type: boolean - - nullable: true - - nullable: true - type: array + - type: 'string' + - format: 'double' + type: 'number' + - type: 'boolean' + - type: 'null' + - type: 'null' + 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: 'string' + - format: 'double' + type: 'number' + - type: 'boolean' + - type: 'null' + - type: 'null' + type: 'object' + - type: 'null' + 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 + description: 'Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch").' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' maxItems: 8 - type: array + type: 'array' required: - - id - type: object + - '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. + 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 + - '~anthropic/claude-opus-latest' + - '~openai/gpt-latest' + type: 'openrouter:fusion' properties: parameters: $ref: '#/components/schemas/FusionServerToolConfig' type: enum: - - openrouter:fusion - type: string + - 'openrouter:fusion' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' FusionServerToolConfig: - description: Configuration for the openrouter:fusion server tool. + description: 'Configuration for the openrouter:fusion server tool.' example: analysis_models: - - ~anthropic/claude-opus-latest - - ~openai/gpt-latest - - ~google/gemini-pro-latest + - '~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. + 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 + - '~anthropic/claude-opus-latest' + - '~openai/gpt-latest' + - '~google/gemini-pro-latest' items: - type: string + type: 'string' maxItems: 8 minItems: 1 - type: array + 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, panelists default to 32000 and the judge to - 50000. + 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, panelists default to 32000 and the judge to 50000.' example: 16384 - type: integer + 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. + 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 + 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 + 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. + 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. + description: 'Reasoning effort level for panelist and judge inner calls.' enum: - - max - - xhigh - - high - - medium - - low - - minimal - - none - type: string + - '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 + 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. + 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 + 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). + 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 + - '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 + additionalProperties: {} + 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 + description: 'Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch").' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' maxItems: 8 - type: array - type: object + type: 'array' + type: 'object' FusionSource: - description: A web page retrieved via web search during a fusion run. + description: 'A web page retrieved via web search during a fusion run.' example: - title: Example article title - url: https://example.com/article + title: 'Example article title' + url: 'https://example.com/article' properties: title: - description: Title of the retrieved web page. - type: string + 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 + description: 'URL of the web page a panel or the judge retrieved during the run.' + type: 'string' required: - - url - - title - type: object + - 'url' + - 'title' + type: 'object' GenerationContentData: - description: Stored prompt and completion content + description: 'Stored prompt and completion content' example: input: messages: - - content: What is the meaning of life? - role: user + - content: 'What is the meaning of life?' + role: 'user' output: - completion: The meaning of life is a philosophical question... + 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 + example: 'What is the meaning of life?' + type: 'string' required: - - prompt - type: object + - 'prompt' + type: 'object' - properties: messages: example: - - content: What is the meaning of life? - role: user - items: - nullable: true - type: array + - content: 'What is the meaning of life?' + role: 'user' + items: {} + type: 'array' required: - - messages - type: object - description: The input to the generation — either a prompt string or an array of messages + - '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 + 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 + description: 'The completion output' + example: 'The meaning of life is a philosophical question...' + type: + - 'string' + - 'null' reasoning: - description: Reasoning/thinking output, if any + description: 'Reasoning/thinking output, if any' example: null - nullable: true - type: string + type: + - 'string' + - 'null' required: - - reasoning - - completion - type: object + - 'reasoning' + - 'completion' + type: 'object' required: - - input - - output - type: object + - 'input' + - 'output' + type: 'object' GenerationContentResponse: - description: Stored prompt and completion content for a generation + description: 'Stored prompt and completion content for a generation' example: data: input: messages: - - content: What is the meaning of life? - role: user + - content: 'What is the meaning of life?' + role: 'user' output: - completion: The meaning of life is a philosophical question... + completion: 'The meaning of life is a philosophical question...' reasoning: null properties: data: $ref: '#/components/schemas/GenerationContentData' required: - - data - type: object + - 'data' + type: 'object' GenerationResponse: - description: Generation response + description: 'Generation response' example: data: - api_type: completions + 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 + data_region: 'global' + external_user: 'user-123' + finish_reason: 'stop' generation_time: 1200 - http_referer: https://openrouter.ai/ - id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + http_referer: 'https://openrouter.ai/' + id: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' is_byok: false latency: 1250 - model: sao10k/l3-stheno-8b + model: 'sao10k/l3-stheno-8b' moderation_latency: 50 - native_finish_reason: stop + 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_fetches: 0 num_input_audio_prompt: 0 num_media_completion: 0 num_media_prompt: 1 num_search_results: 5 - origin: https://openrouter.ai/ - provider_name: Infermatic + origin: 'https://openrouter.ai/' + preset_id: 'a9e8d400-592a-494f-908c-375efa66cafd' + provider_name: 'Infermatic' provider_responses: null - request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT - router: openrouter/auto - service_tier: priority + 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_id: 'chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946' upstream_inference_cost: 0.0012 usage: 0.0015 - user_agent: Mozilla/5.0 + user_agent: 'Mozilla/5.0' + web_search_engine: 'exa' properties: data: - description: Generation data + description: 'Generation data' properties: api_type: - description: Type of API used for the generation + description: 'Type of API used for the generation' enum: - - completions - - embeddings - - rerank - - tts - - stt - - video - - image + - 'completions' + - 'embeddings' + - 'rerank' + - 'tts' + - 'stt' + - 'video' + - 'image' - null - nullable: true - type: string + type: + - 'string' + - 'null' app_id: - description: ID of the app that made the request + description: 'ID of the app that made the request' example: 12345 - nullable: true - type: integer + type: + - 'integer' + - 'null' cache_discount: - description: Discount applied due to caching + description: 'Discount applied due to caching' example: 0.0002 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' cancelled: - description: Whether the generation was cancelled + description: 'Whether the generation was cancelled' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' created_at: - description: ISO 8601 timestamp of when the generation was created + description: 'ISO 8601 timestamp of when the generation was created' example: '2024-07-15T23:33:19.433273+00:00' - type: string + type: 'string' data_region: - description: The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise. + description: 'The data region this generation was routed through. ''europe'' for EU-routed requests, ''global'' otherwise.' enum: - - global - - europe - example: global - type: string + - 'global' + - 'europe' + example: 'global' + type: 'string' external_user: - description: External user identifier - example: user-123 - nullable: true - type: string + description: 'External user identifier' + example: 'user-123' + type: + - 'string' + - 'null' finish_reason: - description: Reason the generation finished - example: stop - nullable: true - type: string + description: 'Reason the generation finished' + example: 'stop' + type: + - 'string' + - 'null' generation_time: - description: Time taken for generation in milliseconds + description: 'Time taken for generation in milliseconds' example: 1200 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' http_referer: - description: Referer header from the request - nullable: true - type: string + description: 'Referer header from the request' + type: + - 'string' + - 'null' id: - description: Unique identifier for the generation - example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG - type: string + description: 'Unique identifier for the generation' + example: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' + type: 'string' is_byok: - description: Whether this used bring-your-own-key + description: 'Whether this used bring-your-own-key' example: false - type: boolean + type: 'boolean' latency: - description: Total latency in milliseconds + description: 'Total latency in milliseconds' example: 1250 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' model: - description: Model used for the generation - example: sao10k/l3-stheno-8b - type: string + description: 'Model used for the generation' + example: 'sao10k/l3-stheno-8b' + type: 'string' moderation_latency: - description: Moderation latency in milliseconds + description: 'Moderation latency in milliseconds' example: 50 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' native_finish_reason: - description: Native finish reason as reported by provider - example: stop - nullable: true - type: string + description: 'Native finish reason as reported by provider' + example: 'stop' + type: + - 'string' + - 'null' native_tokens_cached: - description: Native cached tokens as reported by provider + description: 'Native cached tokens as reported by provider' example: 3 - nullable: true - type: integer + type: + - 'integer' + - 'null' native_tokens_completion: - description: Native completion tokens as reported by provider + description: 'Native completion tokens as reported by provider' example: 25 - nullable: true - type: integer + type: + - 'integer' + - 'null' native_tokens_completion_images: - description: Native completion image tokens as reported by provider + description: 'Native completion image tokens as reported by provider' example: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' native_tokens_prompt: - description: Native prompt tokens as reported by provider + description: 'Native prompt tokens as reported by provider' example: 10 - nullable: true - type: integer + type: + - 'integer' + - 'null' native_tokens_reasoning: - description: Native reasoning tokens as reported by provider + description: 'Native reasoning tokens as reported by provider' example: 5 - nullable: true - type: integer + type: + - 'integer' + - 'null' num_fetches: - description: Number of web fetches performed + description: 'Number of web fetches performed' example: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' num_input_audio_prompt: - description: Number of audio inputs in the prompt + description: 'Number of audio inputs in the prompt' example: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' num_media_completion: - description: Number of media items in the completion + description: 'Number of media items in the completion' example: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' num_media_prompt: - description: Number of media items in the prompt + description: 'Number of media items in the prompt' example: 1 - nullable: true - type: integer + type: + - 'integer' + - 'null' num_search_results: - description: Number of search results included + description: 'Number of search results included' example: 5 - nullable: true - type: integer + type: + - 'integer' + - 'null' origin: - description: Origin URL of the request - example: https://openrouter.ai/ - type: string + 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 + description: 'ID of the preset used for this generation, null if no preset was used' + example: 'a9e8d400-592a-494f-908c-375efa66cafd' + type: + - 'string' + - 'null' provider_name: - description: Name of the provider that served the request - example: Infermatic - nullable: true - type: string + description: 'Name of the provider that served the request' + example: 'Infermatic' + type: + - 'string' + - 'null' provider_responses: - description: List of provider responses for this generation, including fallback attempts + description: 'List of provider responses for this generation, including fallback attempts' items: $ref: '#/components/schemas/ProviderResponse' - nullable: true - type: array + type: + - 'array' + - 'null' request_id: - description: Unique identifier grouping all generations from a single API request - example: req-1727282430-aBcDeFgHiJkLmNoPqRsT - nullable: true - type: string + description: 'Unique identifier grouping all generations from a single API request' + example: 'req-1727282430-aBcDeFgHiJkLmNoPqRsT' + type: + - 'string' + - 'null' response_cache_source_id: - description: If this generation was served from response cache, contains the original generation ID. Null otherwise. - nullable: true - type: string + description: 'If this generation was served from response cache, contains the original generation ID. Null otherwise.' + type: + - 'string' + - 'null' router: - description: Router used for the request (e.g., openrouter/auto) - example: openrouter/auto - nullable: true - type: string + description: 'Router used for the request (e.g., openrouter/auto)' + example: 'openrouter/auto' + type: + - 'string' + - 'null' 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 + description: 'Service tier the upstream provider reported running this request on, or null if it did not report one.' + example: 'priority' + type: + - 'string' + - 'null' session_id: - description: Session identifier grouping multiple generations in the same session - nullable: true - type: string + description: 'Session identifier grouping multiple generations in the same session' + type: + - 'string' + - 'null' streamed: - description: Whether the response was streamed + description: 'Whether the response was streamed' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' tokens_completion: - description: Number of tokens in the completion + description: 'Number of tokens in the completion' example: 25 - nullable: true - type: integer + type: + - 'integer' + - 'null' tokens_prompt: - description: Number of tokens in the prompt + description: 'Number of tokens in the prompt' example: 10 - nullable: true - type: integer + type: + - 'integer' + - 'null' total_cost: - description: Total cost of the generation in USD + description: 'Total cost of the generation in USD' example: 0.0015 - format: double - type: number + 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 + description: 'Upstream provider''s identifier for this generation' + example: 'chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946' + type: + - 'string' + - 'null' upstream_inference_cost: - description: Cost charged by the upstream provider + description: 'Cost charged by the upstream provider' example: 0.0012 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' usage: - description: Usage amount in USD + description: 'Usage amount in USD' example: 0.0015 - format: double - type: number + format: 'double' + type: 'number' user_agent: - description: User-Agent header from the request - nullable: true - type: string + description: 'User-Agent header from the request' + type: + - 'string' + - 'null' web_search_engine: - description: The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel) - example: exa - nullable: true - type: string + description: 'The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel)' + example: 'exa' + type: + - 'string' + - 'null' 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 + - '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: @@ -9119,514 +9119,518 @@ components: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - - description: The BYOK credential. + - description: 'The BYOK credential.' required: - - data - type: object + - 'data' + type: 'object' GetGuardrailResponse: example: data: allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' content_filter_builtins: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' content_filters: null created_at: '2025-08-24T10:30:00Z' - description: Guardrail for production environment + description: 'Guardrail for production environment' enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: false enforce_zdr_xai: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 100 - name: Production Guardrail - reset_interval: monthly + name: 'Production Guardrail' + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - - description: The guardrail + - description: 'The guardrail' required: - - data - type: object + - '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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - - description: The observability destination. + - description: 'The observability destination.' required: - - data - type: object + - 'data' + type: 'object' GetPresetResponse: - description: A preset with its currently designated version. + description: 'A preset with its currently designated version.' example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-4o + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' properties: data: $ref: '#/components/schemas/PresetWithDesignatedVersion' required: - - data - type: object + - 'data' + type: 'object' GetPresetVersionResponse: - description: A single version of a preset. + description: 'A single version of a preset.' example: data: config: - model: openai/gpt-4o + 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. + 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 + - '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 + 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 + name: 'Production' + slug: 'production' updated_at: '2025-08-24T15:45:00Z' properties: data: allOf: - $ref: '#/components/schemas/Workspace' - - description: The workspace + - description: 'The workspace' required: - - data - type: object + - 'data' + type: 'object' GoneResponse: - description: Gone - Endpoint has been permanently removed or deprecated + 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. + 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 + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' GoneResponseErrorData: - description: Error data for GoneResponse + 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. + 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 + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' Guardrail: example: allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' content_filter_builtins: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' content_filters: null created_at: '2025-08-24T10:30:00Z' - description: Guardrail for production environment + description: 'Guardrail for production environment' enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: false enforce_zdr_xai: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 100 - name: Production Guardrail - reset_interval: monthly + name: 'Production Guardrail' + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: allowed_models: - description: Array of model canonical_slugs (immutable identifiers) + 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 + - 'openai/gpt-5.2-20251211' + - 'anthropic/claude-4.5-opus-20251124' + - 'deepseek/deepseek-r1-0528:free' items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' allowed_providers: - description: List of allowed provider IDs + description: 'List of allowed provider IDs' example: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' content_filter_builtins: - description: >- - Builtin content filters applied to requests. Includes PII detectors and the regex-based prompt injection - detector. + description: 'Builtin content filters applied to requests. Includes PII detectors and the regex-based prompt injection detector.' example: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' items: $ref: '#/components/schemas/ContentFilterBuiltinEntry' - nullable: true - type: array + type: + - 'array' + - 'null' content_filters: - description: Custom regex content filters applied to request messages + description: 'Custom regex content filters applied to request messages' example: - - action: redact + - action: 'redact' label: '[API_KEY]' - pattern: \b(sk-[a-zA-Z0-9]{48})\b + pattern: '\b(sk-[a-zA-Z0-9]{48})\b' items: $ref: '#/components/schemas/ContentFilterEntry' - nullable: true - type: array + type: + - 'array' + - 'null' created_at: - description: ISO 8601 timestamp of when the guardrail was created + description: 'ISO 8601 timestamp of when the guardrail was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' description: - description: Description of the guardrail - example: Guardrail for production environment - nullable: true - type: string + description: 'Description of the guardrail' + example: 'Guardrail for production environment' + type: + - 'string' + - 'null' enforce_zdr: deprecated: true - description: >- - Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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. + description: 'Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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 + type: + - 'boolean' + - 'null' enforce_zdr_anthropic: - description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_google: - description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_openai: - description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_other: - description: >- - Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls - back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_xai: - description: Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided.' example: false - nullable: true - type: boolean + type: + - 'boolean' + - 'null' id: - description: Unique identifier for the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + 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 + description: 'Array of model canonical_slugs to exclude from routing' example: - - openai/gpt-4o-mini-2024-07-18 + - 'openai/gpt-4o-mini-2024-07-18' items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' ignored_providers: - description: List of provider IDs to exclude from routing + description: 'List of provider IDs to exclude from routing' example: - - azure + - 'azure' items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' limit_usd: - description: Spending limit in USD + description: 'Spending limit in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' name: - description: Name of the guardrail - example: Production Guardrail - type: string + 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 + description: 'ISO 8601 timestamp of when the guardrail was last updated' example: '2025-08-24T15:45:00Z' - nullable: true - type: string + type: + - 'string' + - 'null' 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 + 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) + description: 'Interval at which the limit resets (daily, weekly, monthly)' enum: - - daily - - weekly - - monthly + - 'daily' + - 'weekly' + - 'monthly' - null - example: monthly - nullable: true - type: string + example: 'monthly' + type: + - 'string' + - 'null' 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. + - type: 'string' + - format: 'double' + type: 'number' + - items: {} + 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 + quality: 'high' + type: 'object' ImageEndpoint: - description: An endpoint that serves a given image model. + description: 'An endpoint that serves a given image model.' example: allowed_passthrough_parameters: [] pricing: - - billable: output_image + - billable: 'output_image' cost_usd: 0.05 - unit: image - provider_name: Bytedance - provider_slug: bytedance - provider_tag: bytedance + unit: 'image' + provider_name: 'Bytedance' + provider_slug: 'bytedance' + provider_tag: 'bytedance' supported_parameters: resolution: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' seed: - type: boolean + type: 'boolean' supports_streaming: false properties: allowed_passthrough_parameters: - description: Provider-specific options accepted under provider.options[provider_slug]. + description: 'Provider-specific options accepted under provider.options[provider_slug].' example: [] items: - type: string - type: array + type: 'string' + type: 'array' pricing: - description: Billable pricing lines for this endpoint. + description: 'Billable pricing lines for this endpoint.' example: - - billable: output_image + - billable: 'output_image' cost_usd: 0.05 - unit: image + unit: 'image' items: $ref: '#/components/schemas/ImagePricingEntry' - type: array + type: 'array' provider_name: - description: Provider display name - example: Bytedance - type: string + description: 'Provider display name' + example: 'Bytedance' + type: 'string' provider_slug: - description: Provider slug - example: bytedance - type: string + description: 'Provider slug' + example: 'bytedance' + type: 'string' provider_tag: - description: Provider tag for request-side selection - example: bytedance - nullable: true - type: string + description: 'Provider tag for request-side selection' + example: 'bytedance' + type: + - 'string' + - 'null' supported_parameters: allOf: - $ref: '#/components/schemas/SupportedParameters' - - description: The definitive set of parameters this endpoint accepts for this model. + - 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 + 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 + type: 'object' + description: 'Image generation call completed' example: - item_id: call-123 + item_id: 'call-123' output_index: 0 sequence_number: 4 - type: response.image_generation_call.completed + type: 'response.image_generation_call.completed' ImageGenCallGeneratingEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating' - properties: {} - type: object - description: Image generation call is generating + type: 'object' + description: 'Image generation call is generating' example: - item_id: call-123 + item_id: 'call-123' output_index: 0 sequence_number: 2 - type: response.image_generation_call.generating + type: 'response.image_generation_call.generating' ImageGenCallInProgressEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress' - properties: {} - type: object - description: Image generation call in progress + type: 'object' + description: 'Image generation call in progress' example: - item_id: call-123 + item_id: 'call-123' output_index: 0 sequence_number: 1 - type: response.image_generation_call.in_progress + type: 'response.image_generation_call.in_progress' ImageGenCallPartialImageEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage' - properties: {} - type: object - description: Image generation call with partial image + type: 'object' + description: 'Image generation call with partial image' example: - item_id: call-123 + item_id: 'call-123' output_index: 0 - partial_image_b64: base64encodedimage... + partial_image_b64: 'base64encodedimage...' partial_image_index: 0 sequence_number: 3 - type: response.image_generation_call.partial_image + type: 'response.image_generation_call.partial_image' ImageGenCompletedEvent: - description: Emitted when generation completes and the final image is available + description: 'Emitted when generation completes and the final image is available' example: - b64_json: + b64_json: '' created: 1748372400 - type: image_generation.completed + type: 'image_generation.completed' usage: completion_tokens: 4175 cost: 0.04 @@ -9634,72 +9638,63 @@ components: total_tokens: 4175 properties: b64_json: - description: Base64-encoded final image data - type: string + description: 'Base64-encoded final image data' + type: 'string' created: - description: Unix timestamp (seconds) when the image was generated - type: integer + description: 'Unix timestamp (seconds) when the image was generated' + type: 'integer' media_type: - description: >- - Media type (MIME type) of the image, e.g. `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml`. May be - omitted if the format could not be determined. - example: image/png - type: string + description: 'Media type (MIME type) of the image, e.g. `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml`. May be omitted if the format could not be determined.' + example: 'image/png' + type: 'string' type: - description: The event type + description: 'The event type' enum: - - image_generation.completed - type: string + - 'image_generation.completed' + type: 'string' usage: $ref: '#/components/schemas/ImageGenerationUsage' required: - - type - - b64_json - - created - type: object + - 'type' + - 'b64_json' + - 'created' + type: 'object' ImageGenerationProviderPreferences: - description: Provider routing preferences and provider-specific passthrough configuration. + description: 'Provider routing preferences and provider-specific passthrough configuration.' example: allow_fallbacks: false only: - - google-ai-studio + - 'google-ai-studio' 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 + description: "Whether to allow backup providers to serve requests\n- true: (default) when the primary provider (or your custom providers in \"order\") is unavailable, use the next best provider.\n- false: use only the primary/custom provider, and return the upstream error if it's unavailable.\n" + type: + - 'boolean' + - 'null' ignore: - description: >- - List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider - settings for this request. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' only: - description: >- - List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider - settings for this request. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' options: allOf: - $ref: '#/components/schemas/ProviderOptions' @@ -9708,37 +9703,33 @@ components: guidance: 3 steps: 40 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. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' 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 - type: object + - type: 'null' + description: 'The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed.' + example: 'price' + type: 'object' ImageGenerationRequest: - description: Image generation request input + description: 'Image generation request input' example: - model: bytedance-seed/seedream-4.5 - prompt: a red panda astronaut floating in space, studio lighting + 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. + description: 'Normalized aspect ratio of the generated image. Providers clamp to their supported subset.' enum: - '1:1' - '1:2' @@ -9756,105 +9747,94 @@ components: - '9:16' - '16:9' - '9:19.5' - - 19.5:9 + - '19.5:9' - '9:20' - '20:9' - '9:21' - '21:9' - - auto + - 'auto' example: '16:9' - type: string + type: 'string' background: - description: Background treatment. `transparent` requires an output_format that supports alpha (png or webp). + description: 'Background treatment. `transparent` requires an output_format that supports alpha (png or webp).' enum: - - auto - - transparent - - opaque - example: auto - type: string + - '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. + 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 + type: 'array' model: - description: The image generation model to use - example: bytedance-seed/seedream-4.5 - type: string + 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. + description: 'Number of images to generate (1-10). Providers that only support single-image generation reject n > 1.' example: 1 - type: integer + type: 'integer' output_compression: - description: Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. + description: 'Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob.' example: 100 - type: integer + 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 + 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 + description: 'Text description of the desired image' + example: 'a red panda astronaut floating in space, studio lighting' minLength: 1 - type: string + type: 'string' provider: $ref: '#/components/schemas/ImageGenerationProviderPreferences' quality: - description: Rendering quality. Providers without a quality knob ignore this. - enum: - - auto - - low - - medium - - high - example: high - type: string + 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. + description: 'Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider.' enum: - '512' - - 1K - - 2K - - 4K - example: 2K - type: string + - '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 + 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. A tier size is equivalent - to setting `resolution` and combines with `aspect_ratio`. An explicit pixel size is authoritative: a - mismatched `resolution` or `aspect_ratio` alongside it is rejected with a 400. - example: 2K - type: string + 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. A tier size is equivalent to setting `resolution` and combines with `aspect_ratio`. An explicit pixel size is authoritative: a mismatched `resolution` or `aspect_ratio` alongside it is rejected with a 400.' + 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 + 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 + description: 'Image generation response' example: created: 1748372400 data: - - b64_json: + - b64_json: '' usage: completion_tokens: 4175 cost: 0.04 @@ -9862,141 +9842,137 @@ components: total_tokens: 4175 properties: created: - description: Unix timestamp (seconds) when the image was generated + description: 'Unix timestamp (seconds) when the image was generated' example: 1748372400 - type: integer + type: 'integer' data: - description: Generated images + description: 'Generated images' items: properties: b64_json: - description: Base64-encoded image bytes - type: string + description: 'Base64-encoded image bytes' + type: 'string' media_type: - description: >- - Media type (MIME type) of the image, e.g. `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml`. - May be omitted if the format could not be determined. - example: image/png - type: string + description: 'Media type (MIME type) of the image, e.g. `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml`. May be omitted if the format could not be determined.' + example: 'image/png' + type: 'string' required: - - b64_json - type: object - type: array + - 'b64_json' + type: 'object' + type: 'array' usage: $ref: '#/components/schemas/ImageGenerationUsage' required: - - created - - data - type: object + - 'created' + - 'data' + type: 'object' ImageGenerationServerTool: - description: Image generation tool configuration + description: 'Image generation tool configuration' example: - quality: high - type: image_generation + quality: 'high' + type: 'image_generation' properties: background: enum: - - transparent - - opaque - - auto - type: string + - 'transparent' + - 'opaque' + - 'auto' + type: 'string' input_fidelity: enum: - - high - - low + - 'high' + - 'low' - null - nullable: true - type: string + type: + - 'string' + - 'null' input_image_mask: properties: file_id: - type: string + type: 'string' image_url: - type: string - type: object + type: 'string' + type: 'object' model: - type: string + type: 'string' moderation: enum: - - auto - - low - type: string + - 'auto' + - 'low' + type: 'string' output_compression: - type: integer + type: 'integer' output_format: enum: - - png - - webp - - jpeg - type: string + - 'png' + - 'webp' + - 'jpeg' + type: 'string' partial_images: - type: integer + type: 'integer' quality: enum: - - low - - medium - - high - - auto - type: string + - 'low' + - 'medium' + - 'high' + - 'auto' + type: 'string' size: - type: string + type: 'string' type: enum: - - image_generation - type: string + - 'image_generation' + type: 'string' required: - - type - type: object + - '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 + 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 + - 'openrouter:image_generation' + type: 'string' required: - - type - type: object + - '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. + - type: 'string' + - format: 'double' + type: 'number' + - items: {} + 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 + 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 + 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 + - 'in_progress' + - 'completed' + - 'generating' + - 'failed' + example: 'completed' + type: 'string' ImageGenerationUsage: - description: Token and cost usage for the image generation request, when available + description: 'Token and cost usage for the image generation request, when available' example: completion_tokens: 4175 cost: 0.04 @@ -10006,403 +9982,414 @@ components: cache_creation: $ref: '#/components/schemas/AnthropicCacheCreation' completion_tokens: - description: The tokens generated - type: integer + 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 + description: 'Tokens generated by the model for audio output.' + type: + - 'integer' + - 'null' image_tokens: - description: Tokens generated by the model for image output. - nullable: true - type: integer + description: 'Tokens generated by the model for image output.' + type: + - 'integer' + - 'null' reasoning_tokens: - description: Tokens generated by the model for reasoning. - nullable: true - type: integer - type: object + description: 'Tokens generated by the model for reasoning.' + type: + - 'integer' + - 'null' + type: + - 'object' + - 'null' cost: - description: Cost of the completion - format: double - nullable: true - type: number + description: 'Cost of the completion' + format: 'double' + type: + - 'number' + - 'null' cost_details: $ref: '#/components/schemas/CostDetails' is_byok: - description: Whether a request was made using a Bring Your Own Key configuration - type: boolean + 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 + type: + - 'array' + - 'null' prompt_tokens: - description: Including images, input audio, and tools if any - type: integer + description: 'Including images, input audio, and tools if any' + type: 'integer' prompt_tokens_details: - description: Breakdown of tokens used in the prompt. - nullable: true + description: 'Breakdown of tokens used in the prompt.' properties: audio_tokens: - description: Tokens used for input audio. - nullable: true - type: integer + description: 'Tokens used for input audio.' + type: + - 'integer' + - 'null' cache_write_tokens: - description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing. - nullable: true - type: integer + description: 'Tokens written to cache. Only returned for models with explicit caching and cache write pricing.' + type: + - 'integer' + - 'null' cached_tokens: - description: Tokens cached by the endpoint. - nullable: true - type: integer + description: 'Tokens cached by the endpoint.' + type: + - 'integer' + - 'null' file_tokens: - description: Tokens used for input files/documents. - nullable: true - type: integer + description: 'Tokens used for input files/documents.' + type: + - 'integer' + - 'null' video_tokens: - description: Tokens used for input video. - nullable: true - type: integer - type: object + description: 'Tokens used for input video.' + type: + - 'integer' + - 'null' + type: + - 'object' + - 'null' server_tool_use: - description: Usage for server-side tool execution (e.g., web search) - nullable: true + description: 'Usage for server-side tool execution (e.g., web search)' properties: tool_calls_executed: - description: Number of OpenRouter server tool calls that executed and produced a result. - nullable: true - type: integer + description: 'Number of OpenRouter server tool calls that executed and produced a result.' + type: + - 'integer' + - 'null' 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 + 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.' + type: + - 'integer' + - 'null' 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 + 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.' + type: + - 'integer' + - 'null' + type: + - 'object' + - 'null' service_tier: - description: The service tier used by the upstream provider for this request - nullable: true - type: string + description: 'The service tier used by the upstream provider for this request' + type: + - 'string' + - 'null' speed: $ref: '#/components/schemas/AnthropicSpeed' total_tokens: - description: Sum of the above two fields - type: integer + description: 'Sum of the above two fields' + type: 'integer' required: - - prompt_tokens - - completion_tokens - - total_tokens - type: object + - 'prompt_tokens' + - 'completion_tokens' + - 'total_tokens' + type: 'object' ImageGenPartialImageEvent: - description: Emitted when a partial image becomes available during streaming generation + description: 'Emitted when a partial image becomes available during streaming generation' example: - b64_json: + b64_json: '' partial_image_index: 0 - type: image_generation.partial_image + type: 'image_generation.partial_image' properties: b64_json: - description: Base64-encoded partial image data - type: string + 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 + description: '0-based index indicating which partial image this is in the sequence' + type: 'integer' type: - description: The event type + description: 'The event type' enum: - - image_generation.partial_image - type: string + - 'image_generation.partial_image' + type: 'string' required: - - type - - partial_image_index - - b64_json - type: object + - 'type' + - 'partial_image_index' + - 'b64_json' + type: 'object' ImageGenStreamErrorEvent: - description: Emitted when streaming generation fails after the SSE response starts + description: 'Emitted when streaming generation fails after the SSE response starts' example: error: - code: upstream_error - message: The upstream provider returned an error + code: 'upstream_error' + message: 'The upstream provider returned an error' param: null - type: provider_error - type: error + type: 'provider_error' + type: 'error' properties: error: - description: Provider error details + description: 'Provider error details' properties: code: - description: Provider error code, when supplied - nullable: true - type: string + description: 'Provider error code, when supplied' + type: + - 'string' + - 'null' message: - description: Provider error message - type: string + description: 'Provider error message' + type: 'string' param: - description: Request parameter associated with the error, when supplied - nullable: true - type: string + description: 'Request parameter associated with the error, when supplied' + type: + - 'string' + - 'null' type: - description: Provider error type, when supplied - nullable: true - type: string + description: 'Provider error type, when supplied' + type: + - 'string' + - 'null' required: - - message - type: object + - 'message' + type: 'object' type: - description: The event type + description: 'The event type' enum: - - error - type: string + - 'error' + type: 'string' required: - - type - - error - type: object + - 'type' + - 'error' + type: 'object' ImageGenTextChunkEvent: - description: Emitted when a text chunk becomes available during streaming generation of text-based formats (e.g. SVG) + description: 'Emitted when a text chunk becomes available during streaming generation of text-based formats (e.g. SVG)' example: - phase: content - text: - type: image_generation.text_chunk + phase: 'content' + text: '' + type: 'image_generation.text_chunk' properties: phase: - description: >- - The generation phase this chunk belongs to. `content` is the renderable output; `reasoning` and `draft` are - intermediate provider phases. - enum: - - content - - reasoning - - draft - type: string + description: 'The generation phase this chunk belongs to. `content` is the renderable output; `reasoning` and `draft` are intermediate provider phases.' + enum: + - 'content' + - 'reasoning' + - 'draft' + type: 'string' text: - description: A text fragment of the image being generated (e.g. partial SVG markup) - type: string + description: 'A text fragment of the image being generated (e.g. partial SVG markup)' + type: 'string' type: - description: The event type + description: 'The event type' enum: - - image_generation.text_chunk - type: string + - 'image_generation.text_chunk' + type: 'string' required: - - type - - text - - phase - type: object + - 'type' + - 'text' + - 'phase' + type: 'object' ImageInputModality: enum: - - text - - image - - file - - audio - - video - example: text - type: string + - 'text' + - 'image' + - 'file' + - 'audio' + - 'video' + example: 'text' + type: 'string' ImageModelArchitecture: example: input_modalities: - - text - - image + - 'text' + - 'image' output_modalities: - - image + - 'image' properties: input_modalities: - description: Supported input modalities + description: 'Supported input modalities' items: $ref: '#/components/schemas/ImageInputModality' - type: array + type: 'array' output_modalities: - description: Supported output modalities + description: 'Supported output modalities' items: $ref: '#/components/schemas/ImageOutputModality' - type: array + type: 'array' required: - - input_modalities - - output_modalities - type: object + - 'input_modalities' + - 'output_modalities' + type: 'object' ImageModelEndpointsResponse: - description: The full per-endpoint records for an image model. + description: 'The full per-endpoint records for an image model.' example: endpoints: - allowed_passthrough_parameters: [] pricing: - - billable: output_image + - billable: 'output_image' cost_usd: 0.05 - unit: image - provider_name: Bytedance - provider_slug: bytedance - provider_tag: bytedance + unit: 'image' + provider_name: 'Bytedance' + provider_slug: 'bytedance' + provider_tag: 'bytedance' supported_parameters: resolution: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' supports_streaming: false - id: bytedance-seed/seedream-4.5 + id: 'bytedance-seed/seedream-4.5' properties: endpoints: items: $ref: '#/components/schemas/ImageEndpoint' - type: array + type: 'array' id: - description: Model slug - example: bytedance-seed/seedream-4.5 - type: string + description: 'Model slug' + example: 'bytedance-seed/seedream-4.5' + type: 'string' required: - - id - - endpoints - type: object + - 'id' + - 'endpoints' + type: 'object' ImageModelListItem: - description: A single image model in the discovery listing. + description: 'A single image model in the discovery listing.' example: architecture: input_modalities: - - text - - image + - 'text' + - 'image' output_modalities: - - image + - '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 + 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 + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' seed: - type: boolean + type: 'boolean' supports_streaming: false properties: architecture: $ref: '#/components/schemas/ImageModelArchitecture' created: - description: Unix timestamp (seconds) of when the model was created + description: 'Unix timestamp (seconds) of when the model was created' example: 1692901234 - type: integer + type: 'integer' description: - example: A text-to-image model. - type: string + 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 + 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 + description: 'Model slug' + example: 'bytedance-seed/seedream-4.5' + type: 'string' name: - description: Display name - example: Seedream 4.5 - type: string + 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. + 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 + type: 'boolean' + required: + - 'id' + - 'name' + - 'description' + - 'created' + - 'architecture' + - 'supported_parameters' + - 'supports_streaming' + - 'endpoints' + type: 'object' ImageModelsListResponse: - description: List of image generation models. + description: 'List of image generation models.' example: data: - architecture: input_modalities: - - text + - 'text' output_modalities: - - image + - '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 + 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 + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' supports_streaming: false properties: data: items: $ref: '#/components/schemas/ImageModelListItem' - type: array + type: 'array' required: - - data - type: object + - 'data' + type: 'object' ImageOutputModality: enum: - - text - - image - - embeddings - - audio - - video - - rerank - - speech - - transcription - example: image - type: string + - 'text' + - 'image' + - 'embeddings' + - 'audio' + - 'video' + - 'rerank' + - 'speech' + - 'transcription' + example: 'image' + type: 'string' ImagePricingEntry: - description: One billable pricing line for an image provider. + description: 'One billable pricing line for an image provider.' example: - billable: output_image + billable: 'output_image' cost_usd: 0.05 - unit: image + unit: 'image' properties: billable: enum: - - output_image - - input_image - - input_font - - input_reference - - input_text - type: string + - 'output_image' + - 'input_image' + - 'input_font' + - 'input_reference' + - 'input_text' + type: 'string' cost_usd: - format: double - type: number + format: 'double' + type: 'number' unit: enum: - - image - - megapixel - - token - type: string + - 'image' + - 'megapixel' + - 'token' + type: 'string' variant: - type: string + type: 'string' required: - - billable - - unit - - cost_usd - type: object + - 'billable' + - 'unit' + - 'cost_usd' + type: 'object' ImageStreamingResponse: example: data: - b64_json: + b64_json: '' partial_image_index: 0 - type: image_generation.partial_image + type: 'image_generation.partial_image' properties: data: anyOf: @@ -10411,176 +10398,185 @@ components: - $ref: '#/components/schemas/ImageGenCompletedEvent' - $ref: '#/components/schemas/ImageGenStreamErrorEvent' required: - - data - type: object + - 'data' + type: 'object' IncompleteDetails: example: - reason: max_output_tokens - nullable: true + reason: 'max_output_tokens' properties: reason: enum: - - max_output_tokens - - content_filter - type: string - type: object + - 'max_output_tokens' + - 'content_filter' + type: 'string' + type: + - 'object' + - 'null' IncompleteEvent: - description: Event emitted when a response is incomplete + description: 'Event emitted when a response is incomplete' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: incomplete + presence_penalty: null + status: 'incomplete' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 5 - type: response.incomplete + type: 'response.incomplete' properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: - type: integer + type: 'integer' type: enum: - - response.incomplete - type: string + - 'response.incomplete' + type: 'string' required: - - type - - response - - sequence_number - type: object + - 'type' + - 'response' + - 'sequence_number' + type: 'object' InProgressEvent: - description: Event emitted when a response is in progress + description: 'Event emitted when a response is in progress' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: in_progress + presence_penalty: null + status: 'in_progress' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 1 - type: response.in_progress + type: 'response.in_progress' properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: - type: integer + type: 'integer' type: enum: - - response.in_progress - type: string + - 'response.in_progress' + type: 'string' required: - - type - - response - - sequence_number - type: object + - 'type' + - 'response' + - 'sequence_number' + type: 'object' InputAudio: - description: Audio input content item + description: 'Audio input content item' example: input_audio: - data: SGVsbG8gV29ybGQ= - format: mp3 - type: input_audio + data: 'SGVsbG8gV29ybGQ=' + format: 'mp3' + type: 'input_audio' properties: input_audio: properties: data: - type: string + type: 'string' format: enum: - - mp3 - - wav - type: string + - 'mp3' + - 'wav' + type: 'string' required: - - data - - format - type: object + - 'data' + - 'format' + type: 'object' type: enum: - - input_audio - type: string + - 'input_audio' + type: 'string' required: - - type - - input_audio - type: object + - 'type' + - 'input_audio' + type: 'object' InputFile: - description: File input content item + description: 'File input content item' example: - file_id: file-abc123 - filename: document.pdf - type: input_file + file_id: 'file-abc123' + filename: 'document.pdf' + type: 'input_file' properties: file_data: - type: string + type: 'string' file_id: - nullable: true - type: string + type: + - 'string' + - 'null' file_url: - type: string + type: 'string' filename: - type: string + type: 'string' type: enum: - - input_file - type: string + - 'input_file' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' InputImage: - description: Image input content item + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image + detail: 'auto' + image_url: 'https://example.com/image.jpg' + type: 'input_image' properties: detail: enum: - - auto - - high - - low - - original - type: string + - 'auto' + - 'high' + - 'low' + - 'original' + type: 'string' image_url: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - input_image - type: string + - 'input_image' + type: 'string' required: - - type - - detail - type: object + - 'type' + - 'detail' + type: 'object' InputMessageItem: example: content: - - text: Hello, how are you? - type: input_text - id: msg-abc123 - role: user - type: message + - text: 'Hello, how are you?' + type: 'input_text' + id: 'msg-abc123' + role: 'user' + type: 'message' properties: content: items: @@ -10589,67 +10585,66 @@ components: - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} - type: object - description: Image input content item + type: 'object' + description: 'Image input content item' example: - detail: auto - image_url: https://example.com/image.jpg - type: input_image + 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 + type: + - 'array' + - 'null' id: - type: string + type: 'string' role: anyOf: - enum: - - user - type: string + - 'user' + type: 'string' - enum: - - system - type: string + - 'system' + type: 'string' - enum: - - developer - type: string + - 'developer' + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - role - type: object + - 'role' + type: 'object' InputModality: enum: - - text - - image - - file - - audio - - video - example: text - type: string + - '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). + 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 + propertyName: 'type' example: image_url: - url: https://example.com/image.png - type: 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 + - type: 'string' - items: anyOf: - $ref: '#/components/schemas/ReasoningItem' @@ -10668,42 +10663,43 @@ components: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - type: array - - type: string - - nullable: true - type: object - description: An output message item + type: 'array' + - type: 'string' + - type: 'null' + 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 + 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 + type: + - 'array' + - 'null' + 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 + - 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 + - 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' @@ -10744,240 +10740,240 @@ components: - $ref: '#/components/schemas/ItemReferenceItem' - $ref: '#/components/schemas/AdditionalToolsItem' - $ref: '#/components/schemas/AgentMessageItem' - type: array - description: Input for a response request - can be a string or array of items + 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 + - content: 'What is the weather today?' + role: 'user' InputText: - description: Text input content item + description: 'Text input content item' example: - text: Hello, how can I help you? - type: input_text + text: 'Hello, how can I help you?' + type: 'input_text' properties: prompt_cache_breakpoint: $ref: '#/components/schemas/PromptCacheBreakpoint' text: - type: string + type: 'string' type: enum: - - input_text - type: string + - 'input_text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' InputVideo: - description: Video input content item + description: 'Video input content item' example: - type: input_video - video_url: https://example.com/video.mp4 + type: 'input_video' + video_url: 'https://example.com/video.mp4' properties: type: enum: - - input_video - type: string + - 'input_video' + type: 'string' video_url: - description: A base64 data URL or remote URL that resolves to a video file - type: string + description: 'A base64 data URL or remote URL that resolves to a video file' + type: 'string' required: - - type - - video_url - type: object + - 'type' + - 'video_url' + type: 'object' InstructType: - description: Instruction format 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 + - '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 + example: 'chatml' + type: + - 'string' + - 'null' InternalServerResponse: - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' properties: error: $ref: '#/components/schemas/InternalServerResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' InternalServerResponseErrorData: - description: Error data for InternalServerResponse + description: 'Error data for InternalServerResponse' example: code: 500 - message: Internal Server Error + message: 'Internal Server Error' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' ItemReferenceItem: - description: A reference to a previous response item by ID + description: 'A reference to a previous response item by ID' example: - id: msg-abc123 - type: item_reference + id: 'msg-abc123' + type: 'item_reference' properties: id: - type: string + type: 'string' type: enum: - - item_reference - type: string + - 'item_reference' + type: 'string' required: - - type - - id - type: object + - 'type' + - 'id' + type: 'object' KeyAssignment: example: - assigned_by: user_abc123 + 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 + 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 + description: 'User ID of who made the assignment' + example: 'user_abc123' + type: + - 'string' + - 'null' created_at: - description: ISO 8601 timestamp of when the assignment was created + description: 'ISO 8601 timestamp of when the assignment was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' guardrail_id: - description: ID of the guardrail - example: 550e8400-e29b-41d4-a716-446655440001 - format: uuid - type: string + 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 + 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 + description: 'Hash of the assigned API key' + example: 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' + type: 'string' key_label: - description: Label of the API key - example: prod-key - type: string + 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 + 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) + description: 'Video input content part (legacy format - deprecated)' example: - type: input_video + type: 'input_video' video_url: - url: https://example.com/video.mp4 + url: 'https://example.com/video.mp4' properties: type: enum: - - input_video - type: string + - 'input_video' + type: 'string' video_url: $ref: '#/components/schemas/Legacy_ChatContentVideoInput' required: - - type - - video_url - type: object + - 'type' + - 'video_url' + type: 'object' Legacy_ChatContentVideoInput: - description: Video input object + description: 'Video input object' example: - url: https://example.com/video.mp4 + url: 'https://example.com/video.mp4' properties: url: description: 'URL of the video (data: URLs supported)' - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' Legacy_WebSearchServerTool: - description: Web search tool configuration + description: 'Web search tool configuration' example: - engine: auto + engine: 'auto' filters: allowed_domains: - - example.com - type: web_search + - '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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - - web_search - type: string + - 'web_search' + type: 'string' user_location: $ref: '#/components/schemas/WebSearchUserLocation' required: - - type - type: object + - 'type' + type: 'object' ListBYOKKeysResponse: example: data: @@ -10986,41 +10982,41 @@ components: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' total_count: 1 properties: data: - description: List of BYOK credentials. + description: 'List of BYOK credentials.' items: $ref: '#/components/schemas/BYOKKey' - type: array + type: 'array' total_count: - description: Total number of BYOK credentials matching the filters. + description: 'Total number of BYOK credentials matching the filters.' example: 1 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListEndpointsResponse: - description: List of available endpoints for a model + description: 'List of available endpoints for a model' example: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' endpoints: - context_length: 8192 latency_last_30m: @@ -11030,24 +11026,25 @@ components: p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 - model_name: GPT-4 + 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 + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 supported_parameters: - - temperature - - top_p - - max_tokens - - frequency_penalty - - presence_penalty + - 'temperature' + - 'top_p' + - 'max_tokens' + - 'frequency_penalty' + - 'presence_penalty' supports_implicit_caching: true - tag: openai + tag: 'openai' throughput_last_30m: p50: 45.2 p75: 38.5 @@ -11056,238 +11053,235 @@ components: uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 - id: openai/gpt-4 - name: GPT-4 + id: 'openai/gpt-4' + name: 'GPT-4' properties: architecture: allOf: - $ref: '#/components/schemas/ModelArchitecture' - - example: - instruct_type: chatml - modality: text - tokenizer: GPT - properties: + - properties: input_modalities: - description: Supported input modalities + description: 'Supported input modalities' items: $ref: '#/components/schemas/InputModality' - type: array + type: 'array' instruct_type: $ref: '#/components/schemas/InstructType' modality: - description: Primary modality of the model - example: text - nullable: true - type: string + description: 'Primary modality of the model' + example: 'text' + type: + - 'string' + - 'null' output_modalities: - description: Supported output modalities + description: 'Supported output modalities' items: $ref: '#/components/schemas/OutputModality' - type: array + type: 'array' tokenizer: - allOf: + anyOf: - $ref: '#/components/schemas/ModelGroup' - - nullable: true + - type: 'null' required: - - tokenizer - - instruct_type - - modality - - input_modalities - - output_modalities + - 'tokenizer' + - 'instruct_type' + - 'modality' + - 'input_modalities' + - 'output_modalities' created: - description: Unix timestamp of when the model was created + description: 'Unix timestamp of when the model was created' example: 1692901234 - type: integer + 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 + 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 + description: 'List of available endpoints for this model' items: $ref: '#/components/schemas/PublicEndpoint' - type: array + type: 'array' id: - description: Unique identifier for the model - example: openai/gpt-4 - type: string + 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 + 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 + - 'openai' + - 'anthropic' + - 'google' content_filter_builtins: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' content_filters: null created_at: '2025-08-24T10:30:00Z' - description: Guardrail for production environment + description: 'Guardrail for production environment' enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true enforce_zdr_other: false enforce_zdr_xai: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 100 - name: Production Guardrail - reset_interval: monthly + name: 'Production Guardrail' + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' total_count: 1 properties: data: - description: List of guardrails + description: 'List of guardrails' items: $ref: '#/components/schemas/Guardrail' - type: array + type: 'array' total_count: - description: Total number of guardrails + description: 'Total number of guardrails' example: 25 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListKeyAssignmentsResponse: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of key assignments' items: $ref: '#/components/schemas/KeyAssignment' - type: array + type: 'array' total_count: - description: Total number of key assignments for this guardrail + description: 'Total number of key assignments for this guardrail' example: 25 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListMemberAssignmentsResponse: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of member assignments' items: $ref: '#/components/schemas/MemberAssignment' - type: array + type: 'array' total_count: - description: Total number of member assignments + description: 'Total number of member assignments' example: 10 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - '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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' total_count: 1 properties: data: - description: List of observability destinations. + description: 'List of observability destinations.' items: $ref: '#/components/schemas/ObservabilityDestination' - type: array + type: 'array' total_count: - description: Total number of destinations matching the filters. + description: 'Total number of destinations matching the filters.' example: 1 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListPresetsResponse: - description: A paginated list of presets. + description: 'A paginated list of presets.' example: data: - created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' total_count: 1 properties: data: items: $ref: '#/components/schemas/Preset' - type: array + type: 'array' total_count: - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListPresetVersionsResponse: - description: A paginated list of preset versions. + description: 'A paginated list of preset versions.' example: data: - config: - model: openai/gpt-4o + 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. + 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 @@ -11295,355 +11289,361 @@ components: data: items: $ref: '#/components/schemas/PresetDesignatedVersion' - type: array + type: 'array' total_count: - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' ListWorkspaceBudgetsResponse: example: data: - created_at: '2025-08-24T10:30:00Z' - id: 770e8400-e29b-41d4-a716-446655440000 + id: '770e8400-e29b-41d4-a716-446655440000' limit_usd: 100 - reset_interval: monthly + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: - description: List of budgets configured for the workspace + description: 'List of budgets configured for the workspace' items: $ref: '#/components/schemas/WorkspaceBudget' - type: array + type: 'array' required: - - data - type: object + - '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 + 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 + description: 'List of workspace members' items: $ref: '#/components/schemas/WorkspaceMember' - type: array + type: 'array' total_count: - description: Total number of members in the workspace + description: 'Total number of members in the workspace' example: 5 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - '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 + 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 + name: 'Production' + slug: 'production' updated_at: '2025-08-24T15:45:00Z' total_count: 1 properties: data: - description: List of workspaces + description: 'List of workspaces' items: $ref: '#/components/schemas/Workspace' - type: array + type: 'array' total_count: - description: Total number of workspaces + description: 'Total number of workspaces' example: 5 - type: integer + type: 'integer' required: - - data - - total_count - type: object + - 'data' + - 'total_count' + type: 'object' LocalShellCallItem: - description: A local shell command execution call + description: 'A local shell command execution call' example: action: command: - - ls + - 'ls' - '-la' env: - PATH: /usr/bin + PATH: '/usr/bin' timeout_ms: 5000 - type: exec - call_id: call-abc123 - id: shell-abc123 - status: completed - type: local_shell_call + type: 'exec' + call_id: 'call-abc123' + id: 'shell-abc123' + status: 'completed' + type: 'local_shell_call' properties: action: properties: command: items: - type: string - type: array + type: 'string' + type: 'array' env: additionalProperties: - type: string - type: object + type: 'string' + type: 'object' timeout_ms: - nullable: true - type: integer + type: + - 'integer' + - 'null' type: enum: - - exec - type: string + - 'exec' + type: 'string' user: - nullable: true - type: string + type: + - 'string' + - 'null' working_directory: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - type - - command - - env - type: object + - 'type' + - 'command' + - 'env' + type: 'object' call_id: - type: string + type: 'string' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - local_shell_call - type: string + - 'local_shell_call' + type: 'string' required: - - type - - id - - call_id - - action - - status - type: object + - 'type' + - 'id' + - 'call_id' + - 'action' + - 'status' + type: 'object' LocalShellCallOutputItem: - description: Output from a local shell command execution + 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 + id: 'output-abc123' + output: "total 24\ndrwxr-xr-x 5 user staff 160 Jan 1 12:00 ." + status: 'completed' + type: 'local_shell_call_output' properties: id: - type: string + type: 'string' output: - type: string + type: 'string' status: - allOf: + anyOf: - $ref: '#/components/schemas/ToolCallStatus' - - nullable: true + - type: 'null' type: enum: - - local_shell_call_output - type: string + - 'local_shell_call_output' + type: 'string' required: - - type - - id - - output - type: object + - 'type' + - 'id' + - 'output' + type: 'object' McpApprovalRequestItem: - description: Request for approval to execute an MCP tool + 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 + id: 'approval-abc123' + name: 'delete_record' + server_label: 'database-server' + type: 'mcp_approval_request' properties: arguments: - type: string + type: 'string' id: - type: string + type: 'string' name: - type: string + type: 'string' server_label: - type: string + type: 'string' type: enum: - - mcp_approval_request - type: string + - 'mcp_approval_request' + type: 'string' required: - - type - - id - - name - - arguments - - server_label - type: object + - 'type' + - 'id' + - 'name' + - 'arguments' + - 'server_label' + type: 'object' McpApprovalResponseItem: - description: User response to an MCP tool approval request + description: 'User response to an MCP tool approval request' example: - approval_request_id: approval-abc123 + approval_request_id: 'approval-abc123' approve: true - reason: Approved for execution - type: mcp_approval_response + reason: 'Approved for execution' + type: 'mcp_approval_response' properties: approval_request_id: - type: string + type: 'string' approve: - type: boolean + type: 'boolean' id: - nullable: true - type: string + type: + - 'string' + - 'null' reason: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - mcp_approval_response - type: string + - 'mcp_approval_response' + type: 'string' required: - - type - - approval_request_id - - approve - type: object + - 'type' + - 'approval_request_id' + - 'approve' + type: 'object' McpCallItem: - description: An MCP tool call with its output or error + description: 'An MCP tool call with its output or error' example: arguments: '{"query":"SELECT * FROM users"}' - id: mcp-call-abc123 - name: query_database + id: 'mcp-call-abc123' + name: 'query_database' output: '[{"id":1,"name":"Alice"}]' - server_label: database-server - type: mcp_call + server_label: 'database-server' + type: 'mcp_call' properties: arguments: - type: string + type: 'string' error: - nullable: true - type: string + type: + - 'string' + - 'null' id: - type: string + type: 'string' name: - type: string + type: 'string' output: - nullable: true - type: string + type: + - 'string' + - 'null' server_label: - type: string + type: 'string' type: enum: - - mcp_call - type: string + - 'mcp_call' + type: 'string' required: - - type - - id - - name - - arguments - - server_label - type: object + - 'type' + - 'id' + - 'name' + - 'arguments' + - 'server_label' + type: 'object' McpListToolsItem: - description: List of available MCP tools from a server + description: 'List of available MCP tools from a server' example: - id: mcp-list-abc123 - server_label: database-server + id: 'mcp-list-abc123' + server_label: 'database-server' tools: - - description: Execute a database query + - description: 'Execute a database query' input_schema: properties: query: - type: string - type: object - name: query_database - type: mcp_list_tools + type: 'string' + type: 'object' + name: 'query_database' + type: 'mcp_list_tools' properties: error: - nullable: true - type: string + type: + - 'string' + - 'null' id: - type: string + type: 'string' server_label: - type: string + type: 'string' tools: items: properties: - annotations: - nullable: true + annotations: {} description: - nullable: true - type: string + type: + - 'string' + - 'null' input_schema: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' name: - type: string + type: 'string' required: - - name - - input_schema - type: object - type: array + - 'name' + - 'input_schema' + type: 'object' + type: 'array' type: enum: - - mcp_list_tools - type: string + - 'mcp_list_tools' + type: 'string' required: - - type - - id - - server_label - - tools - type: object + - 'type' + - 'id' + - 'server_label' + - 'tools' + type: 'object' McpServerTool: - description: MCP (Model Context Protocol) tool configuration + description: 'MCP (Model Context Protocol) tool configuration' example: - server_label: my-server - server_url: https://example.com/mcp - type: mcp + server_label: 'my-server' + server_url: 'https://example.com/mcp' + type: 'mcp' properties: allowed_tools: anyOf: - items: - type: string - type: array + type: 'string' + type: 'array' - properties: read_only: - type: boolean + type: 'boolean' tool_names: items: - type: string - type: array - type: object - - nullable: true + type: 'string' + type: 'array' + type: 'object' + - type: 'null' authorization: - type: string + type: 'string' connector_id: enum: - - connector_dropbox - - connector_gmail - - connector_googlecalendar - - connector_googledrive - - connector_microsoftteams - - connector_outlookcalendar - - connector_outlookemail - - connector_sharepoint - type: string + - '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 + type: 'string' + type: + - 'object' + - 'null' require_approval: anyOf: - properties: @@ -11651,163 +11651,161 @@ components: properties: tool_names: items: - type: string - type: array - type: object + type: 'string' + type: 'array' + type: 'object' never: properties: tool_names: items: - type: string - type: array - type: object - type: object + type: 'string' + type: 'array' + type: 'object' + type: 'object' - enum: - - always - type: string + - 'always' + type: 'string' - enum: - - never - type: string - - nullable: true + - 'never' + type: 'string' + - type: 'null' server_description: - type: string + type: 'string' server_label: - type: string + type: 'string' server_url: - type: string + type: 'string' type: enum: - - mcp - type: string + - 'mcp' + type: 'string' required: - - type - - server_label - type: object + - 'type' + - 'server_label' + type: 'object' MemberAssignment: example: - assigned_by: user_abc123 + 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 + 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 + description: 'User ID of who made the assignment' + example: 'user_abc123' + type: + - 'string' + - 'null' created_at: - description: ISO 8601 timestamp of when the assignment was created + description: 'ISO 8601 timestamp of when the assignment was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' guardrail_id: - description: ID of the guardrail - example: 550e8400-e29b-41d4-a716-446655440001 - format: uuid - type: string + 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 + 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 + 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 + 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. + 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 + text: 'Advisor response text' + type: 'advisor_result' + tool_use_id: 'srvtoolu_01abc' + type: 'advisor_tool_result' properties: content: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' tool_use_id: - type: string + type: 'string' type: enum: - - advisor_tool_result - type: string + - 'advisor_tool_result' + type: 'string' required: - - type - - tool_use_id - - content - type: object + - 'type' + - 'tool_use_id' + - 'content' + type: 'object' MessagesContentBlockDeltaEvent: - description: Event sent when content is added to a content block + description: 'Event sent when content is added to a content block' example: delta: - text: Hello - type: text_delta + text: 'Hello' + type: 'text_delta' index: 0 - type: content_block_delta + type: 'content_block_delta' properties: delta: oneOf: - properties: text: - type: string + type: 'string' type: enum: - - text_delta - type: string + - 'text_delta' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' - properties: partial_json: - type: string + type: 'string' type: enum: - - input_json_delta - type: string + - 'input_json_delta' + type: 'string' required: - - type - - partial_json - type: object + - 'type' + - 'partial_json' + type: 'object' - properties: thinking: - type: string + type: 'string' type: enum: - - thinking_delta - type: string + - 'thinking_delta' + type: 'string' required: - - type - - thinking - type: object + - 'type' + - 'thinking' + type: 'object' - properties: signature: - type: string + type: 'string' type: enum: - - signature_delta - type: string + - 'signature_delta' + type: 'string' required: - - type - - signature - type: object + - 'type' + - 'signature' + type: 'object' - properties: citation: discriminator: @@ -11817,7 +11815,7 @@ components: page_location: '#/components/schemas/AnthropicCitationPageLocation' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocation' - $ref: '#/components/schemas/AnthropicCitationPageLocation' @@ -11826,43 +11824,45 @@ components: - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' type: enum: - - citations_delta - type: string + - 'citations_delta' + type: 'string' required: - - type - - citation - type: object + - 'type' + - 'citation' + type: 'object' - properties: content: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - compaction_delta - type: string + - 'compaction_delta' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: 'object' index: - type: integer + type: 'integer' type: enum: - - content_block_delta - type: string + - 'content_block_delta' + type: 'string' required: - - type - - index - - delta - type: object + - 'type' + - 'index' + - 'delta' + type: 'object' MessagesContentBlockStartEvent: - description: Event sent when a new content block starts + description: 'Event sent when a new content block starts' example: content_block: + citations: [] text: '' - type: text + type: 'text' index: 0 - type: content_block_start + type: 'content_block_start' properties: content_block: anyOf: @@ -11882,53 +11882,60 @@ components: - $ref: '#/components/schemas/AnthropicAdvisorToolResult' - properties: content: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - compaction - type: string + - 'compaction' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: 'object' index: - type: integer + type: 'integer' type: enum: - - content_block_start - type: string + - 'content_block_start' + type: 'string' required: - - type - - index - - content_block - type: object + - 'type' + - 'index' + - 'content_block' + type: 'object' MessagesContentBlockStopEvent: - description: Event sent when a content block is complete + description: 'Event sent when a content block is complete' example: index: 0 - type: content_block_stop + type: 'content_block_stop' properties: index: - type: integer + type: 'integer' type: enum: - - content_block_stop - type: string + - 'content_block_stop' + type: 'string' required: - - type - - index - type: object + - 'type' + - 'index' + type: 'object' MessagesDeltaEvent: - description: Event sent when the message metadata changes (e.g., stop_reason) + description: 'Event sent when the message metadata changes (e.g., stop_reason)' example: delta: + container: null stop_details: null - stop_reason: end_turn + stop_reason: 'end_turn' stop_sequence: null - type: message_delta + type: 'message_delta' usage: + cache_creation_input_tokens: null + cache_read_input_tokens: null + input_tokens: null output_tokens: 15 + output_tokens_details: null + server_tool_use: null properties: delta: properties: @@ -11939,150 +11946,152 @@ components: stop_reason: $ref: '#/components/schemas/ORAnthropicStopReason' stop_sequence: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - container - - stop_details - - stop_reason - - stop_sequence - type: object + - 'container' + - 'stop_details' + - 'stop_reason' + - 'stop_sequence' + type: 'object' type: enum: - - message_delta - type: string + - 'message_delta' + type: 'string' usage: properties: cache_creation: $ref: '#/components/schemas/AnthropicCacheCreation' cache_creation_input_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' cache_read_input_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' input_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' - type: array + type: 'array' output_tokens: - type: integer + type: 'integer' output_tokens_details: $ref: '#/components/schemas/AnthropicOutputTokensDetails' server_tool_use: - nullable: true properties: web_fetch_requests: - type: integer + type: 'integer' web_search_requests: - type: integer + type: 'integer' required: - - web_search_requests - - web_fetch_requests - type: object + - 'web_search_requests' + - 'web_fetch_requests' + type: + - 'object' + - 'null' 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 + - '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 + error_type: 'invalid_request' + message: 'Invalid request parameters' + type: 'invalid_request_error' properties: error_type: $ref: '#/components/schemas/ApiErrorType' message: - type: string + type: 'string' type: - type: string + type: 'string' required: - - type - - message - type: object + - 'type' + - 'message' + type: 'object' MessagesErrorEvent: - description: Error event in the stream + description: 'Error event in the stream' example: error: - error_type: provider_overloaded - message: Overloaded - type: overloaded_error - type: 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: 'string' type: - type: string + type: 'string' required: - - type - - message - type: object + - 'type' + - 'message' + type: 'object' openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' type: enum: - - error - type: string + - 'error' + type: 'string' required: - - type - - error - type: object + - 'type' + - 'error' + type: 'object' MessagesErrorResponse: example: error: - message: Invalid request parameters - type: invalid_request_error - type: error + message: 'Invalid request parameters' + type: 'invalid_request_error' + type: 'error' properties: error: $ref: '#/components/schemas/MessagesErrorDetail' type: enum: - - error - type: string + - 'error' + type: 'string' required: - - type - - error - type: object + - '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. + additionalProperties: {} + 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 + model: 'claude-opus-4-8' properties: model: - type: string + type: 'string' required: - - model - type: object + - 'model' + type: 'object' MessagesMessageParam: - description: Anthropic message with OpenRouter extensions + description: 'Anthropic message with OpenRouter extensions' example: - content: Hello, how are you? - role: user + content: 'Hello, how are you?' + role: 'user' properties: content: anyOf: - - type: string + - type: 'string' - items: oneOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' @@ -12092,99 +12101,97 @@ components: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' id: - type: string - input: - nullable: true + type: 'string' + input: {} name: - type: string + type: 'string' type: enum: - - tool_use - type: string + - 'tool_use' + type: 'string' required: - - type - - id - - name - type: object + - 'type' + - 'id' + - 'name' + type: 'object' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' content: anyOf: - - type: string + - type: 'string' - items: anyOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' - $ref: '#/components/schemas/AnthropicImageBlockParam' - properties: tool_name: - type: string + type: 'string' type: enum: - - tool_reference - type: string + - 'tool_reference' + type: 'string' required: - - type - - tool_name - type: object + - 'type' + - 'tool_name' + type: 'object' - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - $ref: '#/components/schemas/AnthropicDocumentBlockParam' - type: array + type: 'array' is_error: - type: boolean + type: 'boolean' tool_use_id: - type: string + type: 'string' type: enum: - - tool_result - type: string + - 'tool_result' + type: 'string' required: - - type - - tool_use_id - type: object + - 'type' + - 'tool_use_id' + type: 'object' - properties: signature: - type: string + type: 'string' thinking: - type: string + type: 'string' type: enum: - - thinking - type: string + - 'thinking' + type: 'string' required: - - type - - thinking - - signature - type: object + - 'type' + - 'thinking' + - 'signature' + type: 'object' - properties: data: - type: string + type: 'string' type: enum: - - redacted_thinking - type: string + - 'redacted_thinking' + type: 'string' required: - - type - - data - type: object + - 'type' + - 'data' + type: 'object' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' id: - type: string - input: - nullable: true + type: 'string' + input: {} name: - type: string + type: 'string' type: enum: - - server_tool_use - type: string + - 'server_tool_use' + type: 'string' required: - - type - - id - - name - type: object + - 'type' + - 'id' + - 'name' + type: 'object' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' @@ -12192,150 +12199,147 @@ components: anyOf: - items: $ref: '#/components/schemas/AnthropicWebSearchResultBlockParam' - type: array + type: 'array' - properties: error_code: enum: - - invalid_tool_input - - unavailable - - max_uses_exceeded - - too_many_requests - - query_too_long - type: string + - 'invalid_tool_input' + - 'unavailable' + - 'max_uses_exceeded' + - 'too_many_requests' + - 'query_too_long' + type: 'string' type: enum: - - web_search_tool_result_error - type: string + - 'web_search_tool_result_error' + type: 'string' required: - - type - - error_code - type: object + - 'type' + - 'error_code' + type: 'object' tool_use_id: - type: string + type: 'string' type: enum: - - web_search_tool_result - type: string + - 'web_search_tool_result' + type: 'string' required: - - type - - tool_use_id - - content - type: object + - 'type' + - 'tool_use_id' + - 'content' + type: 'object' - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' content: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - compaction - type: string + - 'compaction' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: 'object' - $ref: '#/components/schemas/MessagesAdvisorToolResultBlock' - type: array + type: 'array' role: enum: - - user - - assistant - - system - type: string + - 'user' + - 'assistant' + - 'system' + type: 'string' required: - - role - - content - type: object + - 'role' + - 'content' + type: 'object' MessagesOutputConfig: - description: Configuration for controlling output behavior. Supports the effort parameter and structured output format. + description: 'Configuration for controlling output behavior. Supports the effort parameter and structured output format.' example: - effort: medium + 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 + 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 + example: 'medium' + type: + - 'string' + - 'null' 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 + 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).' properties: schema: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' type: enum: - - json_schema - type: string + - 'json_schema' + type: 'string' required: - - type - - schema - type: object + - 'type' + - 'schema' + type: + - 'object' + - 'null' 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. + 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 + type: 'tokens' properties: remaining: minimum: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' total: minimum: 20000 - type: integer + type: 'integer' type: enum: - - tokens - type: string + - 'tokens' + type: 'string' required: - - type - - total - type: object - type: object + - 'type' + - 'total' + type: + - 'object' + - 'null' + type: 'object' MessagesPingEvent: - description: Keep-alive ping event + description: 'Keep-alive ping event' example: - type: ping + type: 'ping' properties: type: enum: - - ping - type: string + - 'ping' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' MessagesRequest: - description: Request schema for Anthropic Messages API endpoint + 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 + - 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: @@ -12345,16 +12349,17 @@ components: $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast' clear_tool_inputs: anyOf: - - type: boolean + - type: 'boolean' - items: - type: string - type: array - - nullable: true + type: 'string' + type: 'array' + - type: 'null' exclude_tools: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' keep: $ref: '#/components/schemas/AnthropicToolUsesKeep' trigger: @@ -12362,17 +12367,17 @@ components: mapping: input_tokens: '#/components/schemas/AnthropicInputTokensTrigger' tool_uses: '#/components/schemas/AnthropicToolUsesTrigger' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - $ref: '#/components/schemas/AnthropicToolUsesTrigger' type: enum: - - clear_tool_uses_20250919 - type: string + - 'clear_tool_uses_20250919' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: keep: anyOf: @@ -12380,79 +12385,83 @@ components: - properties: type: enum: - - all - type: string + - 'all' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - enum: - - all - type: string + - 'all' + type: 'string' type: enum: - - clear_thinking_20251015 - type: string + - 'clear_thinking_20251015' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: instructions: - nullable: true - type: string + type: + - 'string' + - 'null' pause_after_compaction: - type: boolean + type: 'boolean' trigger: - allOf: - - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - - nullable: true - properties: {} - type: object + anyOf: + - allOf: + - $ref: '#/components/schemas/AnthropicInputTokensTrigger' + - properties: {} + type: 'object' + - type: 'null' example: - type: input_tokens + type: 'input_tokens' value: 100000 type: enum: - - compact_20260112 - type: string + - 'compact_20260112' + type: 'string' required: - - type - type: object - type: array - type: object + - 'type' + type: 'object' + type: 'array' + type: + - 'object' + - 'null' 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. + 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 + - model: 'claude-opus-4-8' items: $ref: '#/components/schemas/MessagesFallbackParam' - nullable: true - type: array + type: + - 'array' + - 'null' max_tokens: - type: integer + type: 'integer' messages: items: $ref: '#/components/schemas/MessagesMessageParam' - nullable: true - type: array + type: + - 'array' + - 'null' metadata: properties: user_id: - nullable: true - type: string - type: object + type: + - 'string' + - 'null' + type: 'object' model: - type: string + type: 'string' models: items: - type: string - type: array + type: 'string' + type: 'array' output_config: $ref: '#/components/schemas/MessagesOutputConfig' plugins: - description: Plugins you want to enable for this request, including their settings. + description: 'Plugins you want to enable for this request, including their settings.' items: discriminator: mapping: @@ -12465,7 +12474,7 @@ components: response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' - propertyName: id + propertyName: 'id' oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' @@ -12476,121 +12485,115 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' - type: array + type: 'array' provider: $ref: '#/components/schemas/ProviderPreferences' route: $ref: '#/components/schemas/DeprecatedRoute' service_tier: - type: string + 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. + 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 + 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 + - 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 + type: 'string' + type: 'array' stop_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' stream: - type: boolean + type: 'boolean' system: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/AnthropicTextBlockParam' - type: array + type: 'array' temperature: - format: double - type: number + format: 'double' + type: 'number' thinking: oneOf: - properties: budget_tokens: - type: integer + type: 'integer' display: $ref: '#/components/schemas/AnthropicThinkingDisplay' type: enum: - - enabled - type: string + - 'enabled' + type: 'string' required: - - type - - budget_tokens - type: object + - 'type' + - 'budget_tokens' + type: 'object' - properties: type: enum: - - disabled - type: string + - 'disabled' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: display: $ref: '#/components/schemas/AnthropicThinkingDisplay' type: enum: - - adaptive - type: string + - 'adaptive' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' tool_choice: oneOf: - properties: disable_parallel_tool_use: - type: boolean + type: 'boolean' type: enum: - - auto - type: string + - 'auto' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: disable_parallel_tool_use: - type: boolean + type: 'boolean' type: enum: - - any - type: string + - 'any' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: type: enum: - - none - type: string + - 'none' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: disable_parallel_tool_use: - type: boolean + type: 'boolean' name: - type: string + type: 'string' type: enum: - - tool - type: string + - 'tool' + type: 'string' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' tools: items: anyOf: @@ -12598,206 +12601,207 @@ components: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' description: - type: string + type: 'string' input_schema: - additionalProperties: - nullable: true + additionalProperties: {} properties: - properties: - nullable: true + properties: {} required: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' type: - default: object - type: string - type: object + default: 'object' + type: 'string' + type: 'object' name: - type: string + type: 'string' type: enum: - - custom - type: string + - 'custom' + type: 'string' required: - - name - - input_schema - type: object + - 'name' + - 'input_schema' + type: 'object' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' name: enum: - - bash - type: string + - 'bash' + type: 'string' type: enum: - - bash_20250124 - type: string + - 'bash_20250124' + type: 'string' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' name: enum: - - str_replace_editor - type: string + - 'str_replace_editor' + type: 'string' type: enum: - - text_editor_20250124 - type: string + - 'text_editor_20250124' + type: 'string' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' - properties: allowed_domains: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' blocked_domains: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' max_uses: - nullable: true - type: integer + type: + - 'integer' + - 'null' name: enum: - - web_search - type: string + - 'web_search' + type: 'string' type: enum: - - web_search_20250305 - type: string + - 'web_search_20250305' + type: 'string' user_location: $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' - properties: allowed_callers: $ref: '#/components/schemas/AnthropicAllowedCallers' allowed_domains: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' blocked_domains: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' max_uses: - nullable: true - type: integer + type: + - 'integer' + - 'null' name: enum: - - web_search - type: string + - 'web_search' + type: 'string' type: enum: - - web_search_20260209 - type: string + - 'web_search_20260209' + type: 'string' user_location: $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' - properties: allowed_callers: $ref: '#/components/schemas/AnthropicAllowedCallers' cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' caching: - allOf: + anyOf: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - - nullable: true + - type: 'null' defer_loading: - type: boolean + type: 'boolean' max_uses: - type: integer + type: 'integer' model: - type: string + type: 'string' name: enum: - - advisor - type: string + - 'advisor' + type: 'string' type: enum: - - advisor_20260301 - type: string + - 'advisor_20260301' + type: 'string' required: - - type - - name - - model - type: object + - 'type' + - 'name' + - 'model' + type: 'object' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/MessagesSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - - additionalProperties: - nullable: true + - additionalProperties: {} properties: type: - type: string + type: 'string' required: - - type - type: object - type: array + - 'type' + type: 'object' + type: 'array' top_k: - type: integer + type: 'integer' top_p: - format: double - type: number + 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. + 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: 'string' required: - - model - - messages - type: object + - 'model' + - 'messages' + type: 'object' MessagesResult: allOf: - $ref: '#/components/schemas/BaseMessagesResult' - properties: context_management: - nullable: true properties: applied_edits: items: - additionalProperties: - nullable: true + additionalProperties: {} properties: type: - type: string + type: 'string' required: - - type - type: object - type: array + - 'type' + type: 'object' + type: 'array' required: - - applied_edits - type: object + - 'applied_edits' + type: + - 'object' + - 'null' openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' provider: @@ -12807,23 +12811,25 @@ components: - $ref: '#/components/schemas/AnthropicUsage' - properties: cost: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' cost_details: $ref: '#/components/schemas/CostDetails' is_byok: - type: boolean + type: 'boolean' iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' - type: array + type: 'array' service_tier: - nullable: true - type: string + type: + - 'string' + - 'null' speed: $ref: '#/components/schemas/AnthropicSpeed' - type: object + type: 'object' example: cache_creation: null cache_creation_input_tokens: null @@ -12831,23 +12837,24 @@ components: inference_geo: null input_tokens: 100 output_tokens: 50 + output_tokens_details: null server_tool_use: null - service_tier: standard - type: object - description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions + 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 + 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_reason: 'end_turn' stop_sequence: null - type: message + type: 'message' usage: cache_creation: null cache_creation_input_tokens: null @@ -12855,40 +12862,49 @@ components: inference_geo: null input_tokens: 12 output_tokens: 15 + output_tokens_details: null server_tool_use: null - service_tier: standard + service_tier: 'standard' MessagesSearchModelsServerTool: description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter' example: parameters: max_results: 5 - type: openrouter:experimental__search_models + type: 'openrouter:experimental__search_models' properties: parameters: $ref: '#/components/schemas/SearchModelsServerToolConfig' type: enum: - - openrouter:experimental__search_models - type: string + - 'openrouter:experimental__search_models' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' MessagesStartEvent: - description: Event sent at the start of a streaming message + description: 'Event sent at the start of a streaming message' example: message: + container: null content: [] - id: msg_01XFDUDYJgAACzvnptvVoYEL - model: claude-sonnet-4-5-20250929 - role: assistant + id: 'msg_01XFDUDYJgAACzvnptvVoYEL' + model: 'claude-sonnet-4-5-20250929' + role: 'assistant' stop_details: null stop_reason: null stop_sequence: null - type: message + type: 'message' usage: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null input_tokens: 12 output_tokens: 0 - type: message_start + output_tokens_details: null + server_tool_use: null + service_tier: 'standard' + type: 'message_start' properties: message: properties: @@ -12897,151 +12913,150 @@ components: content: items: $ref: '#/components/schemas/ORAnthropicContentBlock' - type: array + type: 'array' id: - type: string + type: 'string' model: - type: string + type: 'string' provider: enum: - - AnyScale - - Atoma - - Cent-ML - - CrofAI - - Enfer - - GoPomelo - - HuggingFace - - Hyperbolic - - Hyperbolic 2 - - InoCloud - - Kluster - - Lambda - - Lepton - - Lynn 2 - - Lynn - - Mancer - - 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 - - Deepgram - - 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 - - Meta - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - Nex AGI - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Poolside - - Perceptron - - Perplexity - - Phala - - Recraft - - Reka - - Relace - - Sail Research - - Sakana AI - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Tenstorrent - - Together - - Upstage - - Venice - - Wafer - - WandB - - Quiver - - Krea - - Xiaomi - - xAI - - Z.AI - - FakeProvider - type: string + - 'AnyScale' + - 'Atoma' + - 'Cent-ML' + - 'CrofAI' + - 'Enfer' + - 'GoPomelo' + - 'HuggingFace' + - 'Hyperbolic' + - 'Hyperbolic 2' + - 'InoCloud' + - 'Kluster' + - 'Lambda' + - 'Lepton' + - 'Lynn 2' + - 'Lynn' + - 'Mancer' + - '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' + - 'Deepgram' + - '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' + - 'Meta' + - 'Minimax' + - 'ModelRun' + - 'Mistral' + - 'Modular' + - 'Moonshot AI' + - 'Morph' + - 'NCompass' + - 'Nebius' + - 'Nex AGI' + - 'NextBit' + - 'Novita' + - 'Nvidia' + - 'OpenAI' + - 'OpenInference' + - 'Parasail' + - 'Poolside' + - 'Perceptron' + - 'Perplexity' + - 'Phala' + - 'Recraft' + - 'Reka' + - 'Relace' + - 'Sail Research' + - 'Sakana AI' + - 'SambaNova' + - 'Seed' + - 'SiliconFlow' + - 'Sourceful' + - 'StepFun' + - 'Stealth' + - 'StreamLake' + - 'Switchpoint' + - 'Tencent' + - 'Tenstorrent' + - 'Together' + - 'Upstage' + - 'Venice' + - 'Wafer' + - 'WandB' + - 'Quiver' + - 'Krea' + - 'Xiaomi' + - 'xAI' + - 'Z.AI' + - 'FakeProvider' + type: 'string' role: enum: - - assistant - type: string + - 'assistant' + type: 'string' stop_details: $ref: '#/components/schemas/AnthropicRefusalStopDetails' - stop_reason: - nullable: true - stop_sequence: - nullable: true + stop_reason: {} + stop_sequence: {} type: enum: - - message - type: string + - 'message' + type: 'string' usage: allOf: - $ref: '#/components/schemas/AnthropicUsage' @@ -13049,10 +13064,10 @@ components: iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' - type: array + type: 'array' speed: $ref: '#/components/schemas/AnthropicSpeed' - type: object + type: 'object' example: cache_creation: null cache_creation_input_tokens: null @@ -13060,44 +13075,45 @@ components: inference_geo: null input_tokens: 100 output_tokens: 50 + output_tokens_details: null server_tool_use: null - service_tier: standard + 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 + - '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 + description: 'Event sent when the message is complete' example: - type: message_stop + type: 'message_stop' properties: openrouter_metadata: $ref: '#/components/schemas/OpenRouterMetadata' type: enum: - - message_stop - type: string + - 'message_stop' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' MessagesStreamEvents: - description: Union of all possible streaming events + description: 'Union of all possible streaming events' discriminator: mapping: content_block_delta: '#/components/schemas/MessagesContentBlockDeltaEvent' @@ -13108,13 +13124,13 @@ components: message_start: '#/components/schemas/MessagesStartEvent' message_stop: '#/components/schemas/MessagesStopEvent' ping: '#/components/schemas/MessagesPingEvent' - propertyName: type + propertyName: 'type' example: delta: - text: Hello - type: text_delta + text: 'Hello' + type: 'text_delta' index: 0 - type: content_block_delta + type: 'content_block_delta' oneOf: - $ref: '#/components/schemas/MessagesStartEvent' - $ref: '#/components/schemas/MessagesDeltaEvent' @@ -13128,49 +13144,49 @@ components: example: data: delta: - text: Hello - type: text_delta + text: 'Hello' + type: 'text_delta' index: 0 - type: content_block_delta - event: content_block_delta + type: 'content_block_delta' + event: 'content_block_delta' properties: data: $ref: '#/components/schemas/MessagesStreamEvents' event: - type: string + type: 'string' required: - - event - - data - type: object + - 'event' + - 'data' + type: 'object' MetadataLevel: - description: Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`. + description: 'Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`.' enum: - - disabled - - enabled - example: enabled - type: string + - 'disabled' + - 'enabled' + example: 'enabled' + type: 'string' Model: - description: Information about an AI model available on OpenRouter + description: 'Information about an AI model available on OpenRouter' example: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT - canonical_slug: openai/gpt-4 + - '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. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' expiration_date: null - id: openai/gpt-4 + id: 'openai/gpt-4' knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-5.4/endpoints - name: GPT-4 + details: '/api/v1/models/openai/gpt-5.4/endpoints' + name: 'GPT-4' per_request_limits: null pricing: completion: '0.00006' @@ -13178,18 +13194,18 @@ components: prompt: '0.00003' request: '0' reasoning: - default_effort: medium + default_effort: 'medium' default_enabled: true mandatory: false supported_efforts: - - high - - medium - - low - - minimal + - 'high' + - 'medium' + - 'low' + - 'minimal' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supported_voices: null top_provider: context_length: 8192 @@ -13201,49 +13217,53 @@ components: benchmarks: $ref: '#/components/schemas/ModelBenchmarks' canonical_slug: - description: Canonical slug for the model - example: openai/gpt-4 - type: string + description: 'Canonical slug for the model' + example: 'openai/gpt-4' + type: 'string' context_length: - description: Maximum context length in tokens + description: 'Maximum context length in tokens' example: 8192 - nullable: true - type: integer + type: + - 'integer' + - 'null' created: - description: Unix timestamp of when the model was created + description: 'Unix timestamp of when the model was created' example: 1692901234 - type: integer + 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 + 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. + 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 + type: + - 'string' + - 'null' hugging_face_id: - description: Hugging Face model identifier, if applicable - example: microsoft/DialoGPT-medium - nullable: true - type: string + description: 'Hugging Face model identifier, if applicable' + example: 'microsoft/DialoGPT-medium' + type: + - 'string' + - 'null' id: - description: Unique identifier for the model - example: openai/gpt-4 - type: string + 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. + 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 + type: + - 'string' + - 'null' links: $ref: '#/components/schemas/ModelLinks' name: - description: Display name of the model - example: GPT-4 - type: string + description: 'Display name of the model' + example: 'GPT-4' + type: 'string' per_request_limits: $ref: '#/components/schemas/PerRequestLimits' pricing: @@ -13251,79 +13271,81 @@ components: reasoning: $ref: '#/components/schemas/ModelReasoning' supported_parameters: - description: List of supported parameters for this model + description: 'List of supported parameters for this model' items: $ref: '#/components/schemas/Parameter' - type: array + type: 'array' supported_voices: - description: List of supported voice identifiers for TTS models. Null for non-TTS models. + description: 'List of supported voice identifiers for TTS models. Null for non-TTS models.' example: null items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' 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 + - '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 + description: 'Model architecture information' example: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' properties: input_modalities: - description: Supported input modalities + description: 'Supported input modalities' items: $ref: '#/components/schemas/InputModality' - type: array + type: 'array' instruct_type: $ref: '#/components/schemas/InstructType' modality: - description: Primary modality of the model - example: text->text - nullable: true - type: string + description: 'Primary modality of the model' + example: 'text->text' + type: + - 'string' + - 'null' output_modalities: - description: Supported output modalities + description: 'Supported output modalities' items: $ref: '#/components/schemas/OutputModality' - type: array + type: 'array' tokenizer: $ref: '#/components/schemas/ModelGroup' required: - - modality - - input_modalities - - output_modalities - type: object + - 'modality' + - 'input_modalities' + - 'output_modalities' + type: 'object' ModelBenchmarks: - description: Third-party benchmark rankings for this model. Omitted when no benchmark data is available. + 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 + - arena: 'models' + category: 'website' elo: 1385.2 rank: 5 win_rate: 62.5 @@ -13331,118 +13353,118 @@ components: artificial_analysis: $ref: '#/components/schemas/AABenchmarkEntry' design_arena: - description: Design Arena ELO rankings across arena+category pairs. + description: 'Design Arena ELO rankings across arena+category pairs.' example: - - arena: models - category: website + - arena: 'models' + category: 'website' elo: 1385.2 rank: 5 win_rate: 62.5 items: $ref: '#/components/schemas/DABenchmarkEntry' - type: array + type: 'array' required: - - design_arena - type: object + - 'design_arena' + type: 'object' ModelGroup: - description: Tokenizer type used by the model + 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 + - '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. + description: 'Related API endpoints and resources for this model.' example: - details: /api/v1/models/openai/gpt-5.4/endpoints + 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 + description: 'URL for the model details/endpoints API' + example: '/api/v1/models/openai/gpt-5.4/endpoints' + type: 'string' required: - - details - type: object + - 'details' + type: 'object' ModelName: - description: Model to use for completion - example: openai/gpt-4 - type: string + 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. + description: 'Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models.' example: - default_effort: medium + default_effort: 'medium' default_enabled: true mandatory: false supported_efforts: - - high - - medium - - low - - minimal + - '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. + - 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 + 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 + 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. + 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 + type: + - 'array' + - 'null' 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 + 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 + - 'mandatory' + type: 'object' ModelResponse: - description: Single model response + description: 'Single model response' example: data: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' + canonical_slug: 'openai/gpt-4' 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 + 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' @@ -13450,9 +13472,10 @@ components: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' + supported_voices: null top_provider: context_length: 8192 is_moderated: true @@ -13461,52 +13484,52 @@ components: data: $ref: '#/components/schemas/Model' required: - - data - type: object + - 'data' + type: 'object' ModelsCountResponse: - description: Model count data + description: 'Model count data' example: data: count: 150 properties: data: - description: Model count data + description: 'Model count data' example: count: 150 properties: count: - description: Total number of available models + description: 'Total number of available models' example: 150 - type: integer + type: 'integer' required: - - count - type: object + - 'count' + type: 'object' required: - - data - type: object + - 'data' + type: 'object' ModelsListResponse: - description: List of available models + description: 'List of available models' example: data: - architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT - canonical_slug: openai/gpt-4 + - '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. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' expiration_date: null - id: openai/gpt-4 + id: 'openai/gpt-4' knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-4/endpoints - name: GPT-4 + details: '/api/v1/models/openai/gpt-4/endpoints' + name: 'GPT-4' per_request_limits: null pricing: completion: '0.00006' @@ -13514,64 +13537,65 @@ components: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens - - frequency_penalty - - presence_penalty + - 'temperature' + - 'top_p' + - 'max_tokens' + - 'frequency_penalty' + - 'presence_penalty' supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 links: - next: /api/v1/models?offset=500&limit=500 + next: '/api/v1/models?offset=500&limit=500' total_count: 150 properties: data: $ref: '#/components/schemas/ModelsListResponseData' links: - description: Pagination links + description: 'Pagination links' properties: next: - description: URL for the next page of results, or null if this is the last page - example: /api/v1/models?offset=500&limit=500 - nullable: true - type: string + description: 'URL for the next page of results, or null if this is the last page' + example: '/api/v1/models?offset=500&limit=500' + type: + - 'string' + - 'null' required: - - next - type: object + - 'next' + type: 'object' total_count: - description: Total number of models matching the query + description: 'Total number of models matching the query' example: 150 - type: integer + type: 'integer' required: - - data - - total_count - - links - type: object + - 'data' + - 'total_count' + - 'links' + type: 'object' ModelsListResponseData: - description: List of available models + description: 'List of available models' example: - architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT - canonical_slug: openai/gpt-4 + - '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. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' expiration_date: null - id: openai/gpt-4 + id: 'openai/gpt-4' knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-4/endpoints - name: GPT-4 + details: '/api/v1/models/openai/gpt-4/endpoints' + name: 'GPT-4' per_request_limits: null pricing: completion: '0.00006' @@ -13579,9 +13603,9 @@ components: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supported_voices: null top_provider: context_length: 8192 @@ -13589,575 +13613,577 @@ components: max_completion_tokens: 4096 items: $ref: '#/components/schemas/Model' - type: array + type: 'array' ModerationPlugin: example: - id: moderation + id: 'moderation' properties: id: enum: - - moderation - type: string + - 'moderation' + type: 'string' required: - - id - type: object + - 'id' + type: 'object' MultimodalMedia: example: - data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA... - format: wav + data: 'data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...' + format: 'wav' properties: data: - type: string + type: 'string' format: - type: string + type: 'string' required: - - data - type: object + - 'data' + type: 'object' NamespaceFunctionTool: - description: A function tool grouped inside a namespace tool + description: 'A function tool grouped inside a namespace tool' example: - name: spawn_agent - type: function + name: 'spawn_agent' + type: 'function' properties: allowed_callers: items: enum: - - direct - - programmatic - type: string - nullable: true - type: array + - 'direct' + - 'programmatic' + type: 'string' + type: + - 'array' + - 'null' defer_loading: - type: boolean + type: 'boolean' description: - nullable: true - type: string + type: + - 'string' + - 'null' name: - type: string + type: 'string' output_schema: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' parameters: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' strict: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' NamespaceTool: - description: Groups function/custom tools under a shared namespace + description: 'Groups function/custom tools under a shared namespace' example: - description: Tools for spawning and managing sub-agents. - name: multi_agent_v1 + description: 'Tools for spawning and managing sub-agents.' + name: 'multi_agent_v1' tools: - - name: spawn_agent - type: function - type: namespace + - name: 'spawn_agent' + type: 'function' + type: 'namespace' properties: description: - type: string + type: 'string' name: - type: string + type: 'string' tools: items: anyOf: - $ref: '#/components/schemas/NamespaceFunctionTool' - $ref: '#/components/schemas/CustomTool' - type: array + type: 'array' type: enum: - - namespace - type: string + - 'namespace' + type: 'string' required: - - type - - name - - description - - tools - type: object + - 'type' + - 'name' + - 'description' + - 'tools' + type: 'object' NotFoundResponse: - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' example: error: code: 404 - message: Resource not found + message: 'Resource not found' properties: error: $ref: '#/components/schemas/NotFoundResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' NotFoundResponseErrorData: - description: Error data for NotFoundResponse + description: 'Error data for NotFoundResponse' example: code: 404 - message: Resource not found + message: 'Resource not found' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Arize' privacy_mode: false sampling_rate: 1 - type: arize + type: 'arize' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' baseUrl: - default: https://otlp.arize.com - type: string + default: 'https://otlp.arize.com' + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + 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 + description: 'The name of the tracing project in Arize AX' minLength: 1 - type: string + type: 'string' spaceKey: minLength: 1 - type: string + type: 'string' required: - - apiKey - - spaceKey - - modelId - type: object + - 'apiKey' + - 'spaceKey' + - 'modelId' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - arize - type: string + - 'arize' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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_... + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Braintrust' privacy_mode: false sampling_rate: 1 - type: braintrust + type: 'braintrust' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' baseUrl: - default: https://api.braintrust.dev - type: string + default: 'https://api.braintrust.dev' + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' projectId: minLength: 1 - type: string + type: 'string' required: - - apiKey - - projectId - type: object + - 'apiKey' + - 'projectId' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - braintrust - type: string + - 'braintrust' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + database: 'analytics' + host: 'https://clickhouse.example.com:8123' password: '********' - table: OPENROUTER_TRACES - username: default + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production ClickHouse' privacy_mode: false sampling_rate: 1 - type: clickhouse + type: 'clickhouse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: database: minLength: 1 - type: string + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' host: minLength: 1 - type: string + type: 'string' password: minLength: 1 - type: string + type: 'string' table: - default: OPENROUTER_TRACES - type: string + default: 'OPENROUTER_TRACES' + type: 'string' username: - description: If you have not set a specific username in ClickHouse, simply type in 'default' below. + description: 'If you have not set a specific username in ClickHouse, simply type in ''default'' below.' minLength: 1 - type: string + type: 'string' required: - - host - - database - - username - - password - type: object + - 'host' + - 'database' + - 'username' + - 'password' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - clickhouse - type: string + - 'clickhouse' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Datadog' privacy_mode: false sampling_rate: 1 - type: datadog + type: 'datadog' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: description: 'Datadog API key must have LLM Observability permissions. Create at: ' minLength: 1 - type: string + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + 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 + description: 'Name to identify your application in Datadog LLM Observability' minLength: 1 - type: string + 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 + 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 + - 'apiKey' + - 'mlApp' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - datadog - type: string + - 'datadog' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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: @@ -14178,23 +14204,23 @@ components: snowflake: '#/components/schemas/ObservabilitySnowflakeDestination' weave: '#/components/schemas/ObservabilityWeaveDestination' webhook: '#/components/schemas/ObservabilityWebhookDestination' - propertyName: type + propertyName: 'type' example: api_key_hashes: null config: - baseUrl: https://us.cloud.langfuse.com - publicKey: pk-l...EfGh - secretKey: sk-l...AbCd + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' oneOf: - $ref: '#/components/schemas/ObservabilityArizeDestination' - $ref: '#/components/schemas/ObservabilityBraintrustDestination' @@ -14215,1586 +14241,1582 @@ components: - $ref: '#/components/schemas/ObservabilityWebhookDestination' ObservabilityFilterRuleGroup: example: - logic: and + logic: 'and' rules: - - field: model - operator: equals - value: openai/gpt-4o + - field: 'model' + operator: 'equals' + value: 'openai/gpt-4o' properties: logic: - default: and + default: 'and' enum: - - and - - or - type: string + - '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 + - '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 + - '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 + - type: 'string' + - type: 'number' required: - - field - - operator - type: object - type: array + - 'field' + - 'operator' + type: 'object' + type: 'array' required: - - rules - type: object + - 'rules' + type: 'object' ObservabilityFilterRulesConfig: - description: Optional structured filter rules controlling which events are forwarded. + description: 'Optional structured filter rules controlling which events are forwarded.' example: null - nullable: true properties: enabled: default: true - type: boolean + type: 'boolean' groups: items: $ref: '#/components/schemas/ObservabilityFilterRuleGroup' - type: array + type: 'array' required: - - groups - type: object + - 'groups' + type: + - 'object' + - 'null' ObservabilityFilterRulesConfigNullable: - description: Optional structured filter rules controlling which events are forwarded. + description: 'Optional structured filter rules controlling which events are forwarded.' example: null - nullable: true properties: enabled: default: true - type: boolean + type: 'boolean' groups: items: $ref: '#/components/schemas/ObservabilityFilterRuleGroup' - type: array + type: 'array' required: - - groups - type: object + - 'groups' + type: + - 'object' + - 'null' ObservabilityGrafanaDestination: example: api_key_hashes: null config: - apiKey: glc_...AbCd - baseUrl: https://otlp-gateway-prod-us-west-0.grafana.net + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Grafana' privacy_mode: false sampling_rate: 1 - type: grafana + type: 'grafana' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' baseUrl: - default: https://otlp-gateway-prod-us-west-0.grafana.net - type: string + 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 + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' instanceId: minLength: 1 - type: string + type: 'string' required: - - apiKey - - instanceId - type: object + - 'apiKey' + - 'instanceId' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - grafana - type: string + - 'grafana' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: baseUrl: - default: https://us.cloud.langfuse.com - type: string + 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 + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' publicKey: minLength: 1 - type: string + type: 'string' secretKey: minLength: 1 - type: string + type: 'string' required: - - secretKey - - publicKey - type: object + - 'secretKey' + - 'publicKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - langfuse - type: string + - 'langfuse' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production LangSmith' privacy_mode: false sampling_rate: 1 - type: langsmith + type: 'langsmith' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' endpoint: - default: https://api.smith.langchain.com - type: string + 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 + 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. + default: 'main' + description: 'The name for this project, such as pr-openrouter-demo. Defaults to "main" if not set.' minLength: 1 - type: string + type: 'string' workspaceId: - description: Required for org-scoped API keys. Find this in your LangSmith workspace settings. - type: string + description: 'Required for org-scoped API keys. Find this in your LangSmith workspace settings.' + type: 'string' required: - - apiKey - type: object + - 'apiKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - langsmith - type: string + - 'langsmith' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + region: 'us' created_at: '2025-08-24T10:30:00Z' enabled: true filter_rules: null - id: 99999999-aaaa-bbbb-cccc-dddddddddddd - name: Production New Relic + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production New Relic' privacy_mode: false sampling_rate: 1 - type: newrelic + type: 'newrelic' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' licenseKey: minLength: 1 - type: string + type: 'string' region: - default: us + default: 'us' enum: - - us - - eu - type: string + - 'us' + - 'eu' + type: 'string' required: - - licenseKey - type: object + - 'licenseKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - newrelic - type: string + - 'newrelic' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Opik' privacy_mode: false sampling_rate: 1 - type: opik + type: 'opik' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' projectName: minLength: 1 - type: string + type: 'string' workspace: minLength: 1 - type: string + type: 'string' required: - - apiKey - - workspace - - projectName - type: object + - 'apiKey' + - 'workspace' + - 'projectName' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - opik - type: string + - 'opik' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production OTel Collector' privacy_mode: false sampling_rate: 1 - type: otel-collector + type: 'otel-collector' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: endpoint: - type: string + 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 + 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 + - 'endpoint' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - otel-collector - type: string + - 'otel-collector' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production PostHog' privacy_mode: false sampling_rate: 1 - type: posthog + type: 'posthog' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' endpoint: - default: https://us.i.posthog.com - type: string + 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 + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' required: - - apiKey - type: object + - 'apiKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - posthog - type: string + - 'posthog' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Ramp' privacy_mode: false sampling_rate: 1 - type: ramp + type: 'ramp' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: - description: Generate this in your Ramp integration settings. + description: 'Generate this in your Ramp integration settings.' minLength: 1 - type: string + type: 'string' baseUrl: - default: https://api.ramp.com/developer/v1/ai-usage/openrouter - type: string + 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 + type: 'string' + description: 'Custom HTTP headers to include in requests to Ramp.' + type: 'object' required: - - apiKey - type: object + - 'apiKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - ramp - type: string + - 'ramp' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production S3' privacy_mode: false sampling_rate: 1 - type: s3 + type: 's3' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: accessKeyId: minLength: 1 - type: string + type: 'string' bucketName: minLength: 1 - type: string + 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 + 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 + 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 + 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 + default: 'openrouter-traces' + type: 'string' region: - type: string + type: 'string' secretAccessKey: minLength: 1 - type: string + type: 'string' sessionToken: - type: string + type: 'string' required: - - bucketName - - accessKeyId - - secretAccessKey - type: object + - 'bucketName' + - 'accessKeyId' + - 'secretAccessKey' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - s3 - type: string + - 's3' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + dsn: 'https://abc123@o0.ingest.sentry.io/0' + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Sentry' privacy_mode: false sampling_rate: 1 - type: sentry + type: 'sentry' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: dsn: minLength: 1 - pattern: ^https:\/\/([^:@]+)(?::[^@]*)?@([^/]+)(?:\/[^/]+)*\/(\d+)\/?$ - type: string + pattern: '^https:\/\/([^:@]+)(?::[^@]*)?@([^/]+)(?:\/[^/]+)*\/(\d+)\/?$' + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' otlpEndpoint: - type: string + type: 'string' required: - - otlpEndpoint - - dsn - type: object + - 'otlpEndpoint' + - 'dsn' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - sentry - type: string + - 'sentry' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Snowflake' privacy_mode: false sampling_rate: 1 - type: snowflake + type: 'snowflake' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: account: minLength: 1 - type: string + type: 'string' database: - default: SNOWFLAKE_LEARNING_DB - type: string + default: 'SNOWFLAKE_LEARNING_DB' + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' schema: - default: PUBLIC - type: string + default: 'PUBLIC' + type: 'string' table: - default: OPENROUTER_TRACES - type: string + default: 'OPENROUTER_TRACES' + type: 'string' token: minLength: 1 - type: string + type: 'string' warehouse: - default: COMPUTE_WH - type: string + default: 'COMPUTE_WH' + type: 'string' required: - - account - - token - type: object + - 'account' + - 'token' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - snowflake - type: string + - 'snowflake' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Weave' privacy_mode: false sampling_rate: 1 - type: weave + type: 'weave' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: apiKey: minLength: 1 - type: string + type: 'string' baseUrl: - default: https://trace.wandb.ai - type: string + default: 'https://trace.wandb.ai' + type: 'string' entity: minLength: 1 - type: string + type: 'string' headers: additionalProperties: - type: string - description: Custom HTTP headers to include in requests to this destination. - type: object + type: 'string' + description: 'Custom HTTP headers to include in requests to this destination.' + type: 'object' project: minLength: 1 - type: string + type: 'string' required: - - apiKey - - entity - - project - type: object + - 'apiKey' + - 'entity' + - 'project' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - weave - type: string + - 'weave' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Webhook' privacy_mode: false sampling_rate: 1 - type: webhook + type: 'webhook' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + 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. + 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 + type: 'string' + type: + - 'array' + - 'null' config: properties: headers: additionalProperties: - type: string - type: object + type: 'string' + type: 'object' method: - default: POST + default: 'POST' enum: - - POST - - PUT - type: string + - 'POST' + - 'PUT' + type: 'string' url: - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' created_at: - description: ISO timestamp of when the destination was created. + description: 'ISO timestamp of when the destination was created.' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' enabled: - description: Whether this destination is currently enabled. + description: 'Whether this destination is currently enabled.' example: true - type: boolean + 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 + 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 + description: 'Human-readable name for the destination.' + example: 'Production Langfuse' + type: + - 'string' + - 'null' privacy_mode: - description: When true, request/response bodies are not forwarded to this destination — only metadata. + description: 'When true, request/response bodies are not forwarded to this destination — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number + format: 'double' + type: 'number' type: enum: - - webhook - type: string + - 'webhook' + type: 'string' updated_at: - description: ISO timestamp of when the destination was last updated. + description: 'ISO timestamp of when the destination was last updated.' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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 + call_id: 'call-abc123' + id: 'ctc-abc123' + input: "*** Begin Patch\n*** End Patch" + name: 'apply_patch' + type: 'custom_tool_call' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' input: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'custom_tool_call' + type: 'string' required: - - type - - call_id - - name - - input - type: object + - 'type' + - 'call_id' + - 'name' + - 'input' + type: 'object' OpenAIResponseCustomToolCallOutput: example: - call_id: call-abc123 - output: patch applied successfully - type: custom_tool_call_output + call_id: 'call-abc123' + output: 'patch applied successfully' + type: 'custom_tool_call_output' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' output: anyOf: - - type: string + - type: 'string' - items: discriminator: mapping: input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - type: array + type: 'array' type: enum: - - custom_tool_call_output - type: string + - 'custom_tool_call_output' + type: 'string' required: - - type - - call_id - - output - type: object + - '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 + call_id: 'call-abc123' + id: 'fc-abc123' + name: 'get_weather' + status: 'completed' + type: 'function_call' properties: arguments: - type: string + type: 'string' call_id: - type: string + type: 'string' id: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'function_call' + type: 'string' required: - - type - - call_id - - name - - arguments - type: object + - 'type' + - 'call_id' + - 'name' + - 'arguments' + type: 'object' OpenAIResponseFunctionToolCallOutput: example: - call_id: call-abc123 + call_id: 'call-abc123' output: '{"temperature":72,"conditions":"sunny"}' - type: function_call_output + type: 'function_call_output' properties: call_id: - type: string + type: 'string' id: - nullable: true - type: string + type: + - 'string' + - 'null' output: anyOf: - - type: string + - type: 'string' - items: discriminator: mapping: input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - type: array + type: 'array' status: - allOf: + anyOf: - $ref: '#/components/schemas/ToolCallStatus' - - nullable: true + - type: 'null' type: enum: - - function_call_output - type: string + - 'function_call_output' + type: 'string' required: - - type - - call_id - - output - type: object + - 'type' + - 'call_id' + - 'output' + type: 'object' OpenAIResponseInputMessageItem: example: content: - - text: Hello, how are you? - type: input_text - id: msg-abc123 - role: user - type: message + - text: 'Hello, how are you?' + type: 'input_text' + id: 'msg-abc123' + role: 'user' + type: 'message' properties: content: items: @@ -15804,253 +15826,254 @@ components: input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' - type: array + type: 'array' id: - type: string + type: 'string' role: anyOf: - enum: - - user - type: string + - 'user' + type: 'string' - enum: - - system - type: string + - 'system' + type: 'string' - enum: - - developer - type: string + - 'developer' + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - id - - role - - content - type: object + - '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 + file_id: 'file-abc123' + filename: 'research_paper.pdf' index: 0 - type: file_citation + type: 'file_citation' OpenAIResponsesImageGenCallCompleted: example: - item_id: ig_abc123 + item_id: 'ig_abc123' output_index: 0 sequence_number: 4 - type: response.image_generation_call.completed + type: 'response.image_generation_call.completed' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.image_generation_call.completed - type: string + - 'response.image_generation_call.completed' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'sequence_number' + type: 'object' OpenAIResponsesImageGenCallGenerating: example: - item_id: ig_abc123 + item_id: 'ig_abc123' output_index: 0 sequence_number: 2 - type: response.image_generation_call.generating + type: 'response.image_generation_call.generating' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.image_generation_call.generating - type: string + - 'response.image_generation_call.generating' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'sequence_number' + type: 'object' OpenAIResponsesImageGenCallInProgress: example: - item_id: ig_abc123 + item_id: 'ig_abc123' output_index: 0 sequence_number: 1 - type: response.image_generation_call.in_progress + type: 'response.image_generation_call.in_progress' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.image_generation_call.in_progress - type: string + - 'response.image_generation_call.in_progress' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'sequence_number' + type: 'object' OpenAIResponsesImageGenCallPartialImage: example: - item_id: ig_abc123 + item_id: 'ig_abc123' output_index: 0 - partial_image_b64: iVBORw0KGgo... + partial_image_b64: 'iVBORw0KGgo...' partial_image_index: 0 sequence_number: 3 - type: response.image_generation_call.partial_image + type: 'response.image_generation_call.partial_image' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' partial_image_b64: - type: string + type: 'string' partial_image_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.image_generation_call.partial_image - type: string + - 'response.image_generation_call.partial_image' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - - partial_image_b64 - - partial_image_index - type: object + - '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 + refusal: 'I''m sorry, I cannot assist with that request' + type: 'refusal' properties: refusal: - type: string + type: 'string' type: enum: - - refusal - type: string + - 'refusal' + type: 'string' required: - - type - - refusal - type: object + - 'type' + - 'refusal' + type: 'object' OpenAIResponsesResponseStatus: enum: - - completed - - incomplete - - in_progress - - failed - - cancelled - - queued - example: completed - type: string + - 'completed' + - 'incomplete' + - 'in_progress' + - 'failed' + - 'cancelled' + - 'queued' + example: 'completed' + type: 'string' OpenAIResponsesSearchCompleted: example: - item_id: ws_abc123 + item_id: 'ws_abc123' output_index: 0 sequence_number: 5 - type: response.web_search_call.completed + type: 'response.web_search_call.completed' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.web_search_call.completed - type: string + - 'response.web_search_call.completed' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'sequence_number' + type: 'object' OpenAIResponsesToolChoice: anyOf: - enum: - - auto - type: string + - 'auto' + type: 'string' - enum: - - none - type: string + - 'none' + type: 'string' - enum: - - required - type: string + - 'required' + type: 'string' - properties: name: - type: string + type: 'string' type: enum: - - function - type: string + - 'function' + type: 'string' required: - - type - - name - type: object + - 'type' + - 'name' + type: 'object' - properties: type: anyOf: - enum: - - web_search_preview_2025_03_11 - type: string + - 'web_search_preview_2025_03_11' + type: 'string' - enum: - - web_search_preview - type: string + - 'web_search_preview' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - $ref: '#/components/schemas/ToolChoiceAllowed' - properties: type: enum: - - apply_patch - type: string + - 'apply_patch' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' - properties: type: enum: - - shell - type: string + - 'shell' + type: 'string' required: - - type - type: object - example: auto + - 'type' + type: 'object' + example: 'auto' OpenAIResponsesTruncation: enum: - - auto - - disabled + - 'auto' + - 'disabled' - null - example: auto - nullable: true - type: string + example: 'auto' + type: + - 'string' + - 'null' OpenAIResponsesUsage: example: input_tokens: 100 @@ -16062,163 +16085,170 @@ components: total_tokens: 150 properties: input_tokens: - type: integer + type: 'integer' input_tokens_details: properties: cache_write_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' cached_tokens: - type: integer + type: 'integer' required: - - cached_tokens - type: object + - 'cached_tokens' + type: 'object' output_tokens: - type: integer + type: 'integer' output_tokens_details: properties: reasoning_tokens: - type: integer + type: 'integer' required: - - reasoning_tokens - type: object + - 'reasoning_tokens' + type: 'object' total_tokens: - type: integer - required: - - input_tokens - - input_tokens_details - - output_tokens - - output_tokens_details - - total_tokens - type: object + type: 'integer' + required: + - 'input_tokens' + - 'input_tokens_details' + - 'output_tokens' + - 'output_tokens_details' + - 'total_tokens' + type: 'object' OpenAIResponsesWebSearchCallInProgress: example: - item_id: ws_abc123 + item_id: 'ws_abc123' output_index: 0 sequence_number: 1 - type: response.web_search_call.in_progress + type: 'response.web_search_call.in_progress' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.web_search_call.in_progress - type: string + - 'response.web_search_call.in_progress' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - 'type' + - 'item_id' + - 'output_index' + - 'sequence_number' + type: 'object' OpenAIResponsesWebSearchCallSearching: example: - item_id: ws_abc123 + item_id: 'ws_abc123' output_index: 0 sequence_number: 2 - type: response.web_search_call.searching + type: 'response.web_search_call.searching' properties: item_id: - type: string + type: 'string' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.web_search_call.searching - type: string + - 'response.web_search_call.searching' + type: 'string' required: - - type - - item_id - - output_index - - sequence_number - type: object + - '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 + type: 'object' + description: 'Event emitted when a response is created' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: in_progress + presence_penalty: null + status: 'in_progress' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 0 - type: response.created + 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 + type: 'object' + description: 'Event emitted when a response is in progress' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: in_progress + presence_penalty: null + status: 'in_progress' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 1 - type: response.in_progress + type: 'response.in_progress' OpenResponsesLogProbs: - description: Log probability information for a token + description: 'Log probability information for a token' example: logprob: -0.1 - token: world + token: 'world' top_logprobs: - logprob: -0.5 - token: hello + token: 'hello' properties: bytes: items: - type: integer - type: array + type: 'integer' + type: 'array' logprob: - format: double - type: number + format: 'double' + type: 'number' token: - type: string + type: 'string' top_logprobs: items: $ref: '#/components/schemas/OpenResponsesTopLogprobs' - type: array + type: 'array' required: - - logprob - - token - type: object + - 'logprob' + - 'token' + type: 'object' OpenResponsesResult: allOf: - $ref: '#/components/schemas/BaseResponsesResult' @@ -16230,39 +16260,43 @@ components: output: items: $ref: '#/components/schemas/OutputItems' - type: array + type: 'array' service_tier: - nullable: true - type: string + type: + - 'string' + - 'null' text: $ref: '#/components/schemas/TextExtendedConfig' usage: $ref: '#/components/schemas/Usage' - type: object - description: Complete non-streaming response from the Responses API + type: 'object' + description: 'Complete non-streaming response from the Responses API' example: + completed_at: 1704067210 created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + 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 + 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 + presence_penalty: null + status: 'completed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null usage: @@ -16274,86 +16308,87 @@ components: reasoning_tokens: 0 total_tokens: 35 OpenResponsesTopLogprobs: - description: Alternative token with its log probability + description: 'Alternative token with its log probability' example: logprob: -0.5 - token: hello + token: 'hello' properties: bytes: items: - type: integer - type: array + type: 'integer' + type: 'array' logprob: - format: double - type: number + format: 'double' + type: 'number' token: - type: string - type: object + type: 'string' + type: 'object' OpenRouterMetadata: example: attempt: 1 endpoints: available: - - model: openai/gpt-4o - provider: OpenAI + - 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 + region: 'iad' + requested: 'openai/gpt-4o' + strategy: 'direct' + summary: 'available=1, selected=OpenAI' properties: attempt: - type: integer + type: 'integer' attempts: items: $ref: '#/components/schemas/RouterAttempt' - type: array + type: 'array' endpoints: $ref: '#/components/schemas/EndpointsMetadata' is_byok: - type: boolean + type: 'boolean' params: $ref: '#/components/schemas/RouterParams' pipeline: items: $ref: '#/components/schemas/PipelineStage' - type: array + type: 'array' region: - nullable: true - type: string + type: + - 'string' + - 'null' requested: - type: string + type: 'string' strategy: $ref: '#/components/schemas/RoutingStrategy' summary: - type: string - required: - - requested - - strategy - - region - - summary - - attempt - - is_byok - - endpoints - type: object + 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 + type: 'openrouter:web_search' properties: parameters: $ref: '#/components/schemas/WebSearchConfig' type: enum: - - openrouter:web_search - type: string + - 'openrouter:web_search' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ORAnthropicContentBlock: discriminator: mapping: @@ -16371,11 +16406,11 @@ components: tool_use: '#/components/schemas/AnthropicToolUseBlock' web_fetch_tool_result: '#/components/schemas/AnthropicWebFetchToolResult' web_search_tool_result: '#/components/schemas/AnthropicWebSearchToolResult' - propertyName: type + propertyName: 'type' example: citations: null - text: Hello, world! - type: text + text: 'Hello, world!' + type: 'text' oneOf: - $ref: '#/components/schemas/AnthropicTextBlock' - $ref: '#/components/schemas/AnthropicToolUseBlock' @@ -16397,585 +16432,555 @@ components: code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' direct: '#/components/schemas/AnthropicDirectCaller' - propertyName: type - example: null + propertyName: 'type' + example: + type: 'direct' oneOf: - $ref: '#/components/schemas/AnthropicDirectCaller' - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' - - nullable: true + - type: 'null' ORAnthropicServerToolUseBlock: example: - caller: null - id: srvtoolu_01abc + caller: + type: 'direct' + id: 'srvtoolu_01abc' input: {} - name: advisor - type: server_tool_use + name: 'advisor' + type: 'server_tool_use' properties: caller: $ref: '#/components/schemas/ORAnthropicNullableCaller' id: - type: string - input: - nullable: true + type: 'string' + input: {} name: - type: string + type: 'string' type: enum: - - server_tool_use - type: string + - 'server_tool_use' + type: 'string' required: - - type - - id - - name - type: object + - 'type' + - 'id' + - 'name' + type: 'object' ORAnthropicStopReason: enum: - - end_turn - - max_tokens - - stop_sequence - - tool_use - - pause_turn - - refusal - - compaction + - 'end_turn' + - 'max_tokens' + - 'stop_sequence' + - 'tool_use' + - 'pause_turn' + - 'refusal' + - 'compaction' - null - example: end_turn - nullable: true - type: string + example: 'end_turn' + type: + - 'string' + - 'null' OutputAdvisorServerToolItem: - description: An openrouter:advisor server tool output item + description: 'An openrouter:advisor server tool output item' example: - id: st_tmp_abc123 - status: completed - type: openrouter:advisor + 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 + 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 + description: 'Error message when the advisor call did not produce advice.' + type: 'string' id: - type: string + 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 + 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 + description: 'Slug of the advisor model that was consulted.' + type: 'string' prompt: - description: The prompt the executor sent to the advisor. - type: string + description: 'The prompt the executor sent to the advisor.' + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:advisor - type: string + - 'openrouter:advisor' + type: 'string' required: - - status - - type - type: object + - '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. + 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 + 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 + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + path: '/src/main.ts' + type: 'update_file' + status: 'completed' + type: 'apply_patch_call' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' operation: $ref: '#/components/schemas/ApplyPatchCallOperation' status: $ref: '#/components/schemas/ApplyPatchCallStatus' type: enum: - - apply_patch_call - type: string + - 'apply_patch_call' + type: 'string' required: - - type - - id - - call_id - - status - - operation - type: object + - '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. + 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 + 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 + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + path: '/src/main.ts' + type: 'update_file' + status: 'completed' + type: 'openrouter:apply_patch' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' operation: $ref: '#/components/schemas/ApplyPatchCallOperation' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:apply_patch - type: string + - 'openrouter:apply_patch' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputBashServerToolItem: - description: An openrouter:bash server tool output item + description: 'An openrouter:bash server tool output item' example: - command: ls -la + command: 'ls -la' exitCode: 0 - id: bash_tmp_abc123 - status: completed - stdout: | - total 0 - type: openrouter:bash + id: 'bash_tmp_abc123' + status: 'completed' + stdout: "total 0\n" + type: 'openrouter:bash' properties: command: - type: string + type: 'string' exitCode: - type: integer + type: 'integer' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' stderr: - type: string + type: 'string' stdout: - type: string + type: 'string' type: enum: - - openrouter:bash - type: string + - 'openrouter:bash' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputBrowserUseServerToolItem: - description: An openrouter:browser_use server tool output item + description: 'An openrouter:browser_use server tool output item' example: - action: screenshot - id: bu_tmp_abc123 - status: completed - type: openrouter:browser_use + action: 'screenshot' + id: 'bu_tmp_abc123' + status: 'completed' + type: 'openrouter:browser_use' properties: action: - type: string + type: 'string' id: - type: string + type: 'string' screenshotB64: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:browser_use - type: string + - 'openrouter:browser_use' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputCodeInterpreterCallItem: allOf: - $ref: '#/components/schemas/CodeInterpreterCallItem' - properties: {} - type: object - description: A code interpreter execution call with outputs + type: 'object' + description: 'A code interpreter execution call with outputs' example: - code: print("hello") - container_id: ctr-xyz789 - id: ci-abc123 + code: 'print("hello")' + container_id: 'ctr-xyz789' + id: 'ci-abc123' outputs: - - logs: | - hello - type: logs - status: completed - type: code_interpreter_call + - logs: "hello\n" + type: 'logs' + status: 'completed' + type: 'code_interpreter_call' OutputCodeInterpreterServerToolItem: - description: An openrouter:code_interpreter server tool output item + 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 + code: 'print("hello")' + id: 'ci_tmp_abc123' + language: 'python' + status: 'completed' + stdout: "hello\n" + type: 'openrouter:code_interpreter' properties: code: - type: string + type: 'string' exitCode: - type: integer + type: 'integer' id: - type: string + type: 'string' language: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' stderr: - type: string + type: 'string' stdout: - type: string + type: 'string' type: enum: - - openrouter:code_interpreter - type: string + - 'openrouter:code_interpreter' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputComputerCallItem: example: action: - type: screenshot - call_id: call-abc123 - id: cu-abc123 + type: 'screenshot' + call_id: 'call-abc123' + id: 'cu-abc123' pending_safety_checks: [] - status: completed - type: computer_call + status: 'completed' + type: 'computer_call' properties: - action: - nullable: true + action: {} call_id: - type: string + type: 'string' id: - type: string + type: 'string' pending_safety_checks: items: properties: code: - type: string + type: 'string' id: - type: string + type: 'string' message: - type: string + type: 'string' required: - - id - - code - - message - type: object - type: array + - 'id' + - 'code' + - 'message' + type: 'object' + type: 'array' status: enum: - - completed - - incomplete - - in_progress - type: string + - 'completed' + - 'incomplete' + - 'in_progress' + type: 'string' type: enum: - - computer_call - type: string + - 'computer_call' + type: 'string' required: - - type - - call_id - - status - - pending_safety_checks - type: object + - '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 + 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\n*** End Patch" + name: 'apply_patch' + type: 'custom_tool_call' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' input: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'custom_tool_call' + type: 'string' required: - - type - - name - - input - - call_id - type: object + - 'type' + - 'name' + - 'input' + - 'call_id' + type: 'object' OutputDatetimeItem: - description: An openrouter:datetime server tool output item + 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 + id: 'dt_tmp_abc123' + status: 'completed' + timezone: 'UTC' + type: 'openrouter:datetime' properties: datetime: - description: ISO 8601 datetime string - type: string + description: 'ISO 8601 datetime string' + type: 'string' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' timezone: - description: IANA timezone name - type: string + description: 'IANA timezone name' + type: 'string' type: enum: - - openrouter:datetime - type: string + - 'openrouter:datetime' + type: 'string' required: - - status - - type - - datetime - - timezone - type: object + - 'status' + - 'type' + - 'datetime' + - 'timezone' + type: 'object' OutputFileSearchCallItem: allOf: - $ref: '#/components/schemas/OutputItemFileSearchCall' - properties: {} - type: object + type: 'object' example: - id: fs-abc123 + id: 'fs-abc123' queries: - - search term + - 'search term' results: [] - status: completed - type: file_search_call + status: 'completed' + type: 'file_search_call' OutputFileSearchServerToolItem: - description: An openrouter:file_search server tool output item + description: 'An openrouter:file_search server tool output item' example: - id: fs_tmp_abc123 + id: 'fs_tmp_abc123' queries: - - search term - status: completed - type: openrouter:file_search + - 'search term' + status: 'completed' + type: 'openrouter:file_search' properties: id: - type: string + type: 'string' queries: items: - type: string - type: array + type: 'string' + type: 'array' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:file_search - type: string + - 'openrouter:file_search' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputFilesServerToolItem: - description: An openrouter:files server tool output item + description: 'An openrouter:files server tool output item' example: - filename: notes.txt - id: fl_tmp_abc123 - operation: read + filename: 'notes.txt' + id: 'fl_tmp_abc123' + operation: 'read' result: '{"id":"file_abc","filename":"notes.txt","content":"hello"}' - status: completed - type: openrouter:files + status: 'completed' + type: 'openrouter:files' properties: error: - description: Error message when the file operation failed. - type: string + 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 + 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 + description: 'The target filename supplied in the tool-call arguments.' + type: 'string' id: - type: string + type: 'string' operation: - description: The file operation performed (list, read, write, or edit). - type: string + description: 'The file operation performed (list, read, write, or edit).' + type: 'string' result: - description: JSON-serialized result of the file operation. - type: string + description: 'JSON-serialized result of the file operation.' + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:files - type: string + - 'openrouter:files' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputFunctionCallItem: allOf: - $ref: '#/components/schemas/OutputItemFunctionCall' - properties: {} - type: object + type: 'object' example: arguments: '{"location":"San Francisco"}' - call_id: call-abc123 - id: fc-abc123 - name: get_weather - status: completed - type: function_call + call_id: 'call-abc123' + id: 'fc-abc123' + name: 'get_weather' + status: 'completed' + type: 'function_call' OutputFusionServerToolItem: - description: An openrouter:fusion server tool output item + description: 'An openrouter:fusion server tool output item' example: - id: st_tmp_abc123 - status: completed - type: openrouter:fusion + 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 + 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. + 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 + description: 'Error message describing why the model failed.' + type: 'string' model: - description: Slug of the analysis model that failed. - type: string + 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 + description: 'HTTP status code from the upstream response, when available (e.g. 402, 429).' + type: 'integer' required: - - model - - error - type: object - type: array + - '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 + 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 + type: 'string' responses: - description: Analysis models that produced a response in this fusion run, with each model's full panel content. + description: 'Analysis models that produced a response in this fusion run, with each model''s full panel content.' items: properties: content: - type: string + type: 'string' model: - type: string + type: 'string' required: - - model - type: object - type: array + - '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. + 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 + type: 'array' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:fusion - type: string + - 'openrouter:fusion' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputImageGenerationCallItem: allOf: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - properties: {} - type: object + type: 'object' example: - id: img-abc123 + id: 'img-abc123' result: null - status: completed - type: image_generation_call + status: 'completed' + type: 'image_generation_call' OutputImageGenerationServerToolItem: - description: An openrouter:image_generation server tool output item + 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 + 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 + type: 'string' imageB64: - type: string + type: 'string' imageUrl: - type: string + type: 'string' result: - description: The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format - nullable: true - type: string + description: 'The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format' + type: + - 'string' + - 'null' revisedPrompt: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:image_generation - type: string + - 'openrouter:image_generation' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputItemAddedEvent: - description: Event emitted when a new output item is added to the response + 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 + id: 'item-1' + role: 'assistant' + status: 'in_progress' + type: 'message' output_index: 0 sequence_number: 2 - type: response.output_item.added + type: 'response.output_item.added' properties: item: discriminator: @@ -16988,7 +16993,7 @@ components: message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' @@ -16999,112 +17004,107 @@ components: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.output_item.added - type: string + - 'response.output_item.added' + type: 'string' required: - - type - - output_index - - item - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item' + - 'sequence_number' + type: 'object' OutputItemApplyPatchCall: example: - call_id: call_abc123 - id: apc_abc123 + 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 + diff: "@@ function main() {\n+ console.log(\"hi\");\n }" + path: '/src/main.ts' + type: 'update_file' + status: 'completed' + type: 'apply_patch_call' properties: call_id: - type: string + type: 'string' created_by: - type: string + type: 'string' id: - type: string + type: 'string' operation: discriminator: mapping: create_file: '#/components/schemas/ApplyPatchCreateFileOperation' delete_file: '#/components/schemas/ApplyPatchDeleteFileOperation' update_file: '#/components/schemas/ApplyPatchUpdateFileOperation' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/ApplyPatchCreateFileOperation' - $ref: '#/components/schemas/ApplyPatchUpdateFileOperation' - $ref: '#/components/schemas/ApplyPatchDeleteFileOperation' status: enum: - - in_progress - - completed - type: string + - 'in_progress' + - 'completed' + type: 'string' type: enum: - - apply_patch_call - type: string + - 'apply_patch_call' + type: 'string' required: - - type - - id - - call_id - - operation - - status - type: object + - '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 + call_id: 'call-abc123' + id: 'ctc-abc123' + input: "*** Begin Patch\n*** End Patch" + name: 'apply_patch' + type: 'custom_tool_call' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' input: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'custom_tool_call' + type: 'string' required: - - type - - name - - input - - call_id - type: object + - 'type' + - 'name' + - 'input' + - 'call_id' + type: 'object' OutputItemDoneEvent: - description: Event emitted when an output item is complete + 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 + 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 + type: 'response.output_item.done' properties: item: discriminator: @@ -17117,7 +17117,7 @@ components: message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' - propertyName: type + propertyName: 'type' oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' @@ -17128,153 +17128,155 @@ components: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputItemApplyPatchCall' output_index: - type: integer + type: 'integer' sequence_number: - type: integer + type: 'integer' type: enum: - - response.output_item.done - type: string + - 'response.output_item.done' + type: 'string' required: - - type - - output_index - - item - - sequence_number - type: object + - 'type' + - 'output_index' + - 'item' + - 'sequence_number' + type: 'object' OutputItemFileSearchCall: example: - id: filesearch-abc123 + id: 'filesearch-abc123' queries: - - machine learning algorithms - - neural networks - status: completed - type: file_search_call + - 'machine learning algorithms' + - 'neural networks' + status: 'completed' + type: 'file_search_call' properties: id: - type: string + type: 'string' queries: items: - type: string - type: array + type: 'string' + type: 'array' status: $ref: '#/components/schemas/WebSearchStatus' type: enum: - - file_search_call - type: string + - 'file_search_call' + type: 'string' required: - - type - - id - - queries - - status - type: object + - '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 + call_id: 'call-abc123' + id: 'call-abc123' + name: 'get_weather' + type: 'function_call' properties: arguments: - type: string + type: 'string' call_id: - type: string + type: 'string' id: - type: string + type: 'string' name: - type: string + type: 'string' namespace: - description: Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) - type: string + 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 + - 'completed' + type: 'string' - enum: - - incomplete - type: string + - 'incomplete' + type: 'string' - enum: - - in_progress - type: string + - 'in_progress' + type: 'string' type: enum: - - function_call - type: string + - 'function_call' + type: 'string' required: - - type - - name - - arguments - - call_id - type: object + - 'type' + - 'name' + - 'arguments' + - 'call_id' + type: 'object' OutputItemImageGenerationCall: example: - id: imagegen-abc123 - result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== - status: completed - type: image_generation_call + id: 'imagegen-abc123' + result: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==' + status: 'completed' + type: 'image_generation_call' properties: id: - type: string + type: 'string' result: default: null - nullable: true - type: string + type: + - 'string' + - 'null' status: $ref: '#/components/schemas/ImageGenerationStatus' type: enum: - - image_generation_call - type: string + - 'image_generation_call' + type: 'string' required: - - type - - id - - status - type: object + - 'type' + - 'id' + - 'status' + type: 'object' OutputItemReasoning: example: - id: reasoning-abc123 + id: 'reasoning-abc123' summary: - - text: Analyzed the problem using first principles - type: summary_text - type: reasoning + - text: 'Analyzed the problem using first principles' + type: 'summary_text' + type: 'reasoning' properties: content: items: $ref: '#/components/schemas/ReasoningTextContent' - type: array + type: 'array' encrypted_content: - nullable: true - type: string + type: + - 'string' + - 'null' id: - type: string + type: 'string' status: anyOf: - enum: - - completed - type: string + - 'completed' + type: 'string' - enum: - - incomplete - type: string + - 'incomplete' + type: 'string' - enum: - - in_progress - type: string + - 'in_progress' + type: 'string' summary: items: $ref: '#/components/schemas/ReasoningSummaryText' - type: array + type: 'array' type: enum: - - reasoning - type: string + - 'reasoning' + type: 'string' required: - - type - - id - - summary - type: object + - 'type' + - 'id' + - 'summary' + type: 'object' OutputItems: - description: An output item from the response + description: 'An output item from the response' discriminator: mapping: apply_patch_call: '#/components/schemas/OutputApplyPatchCallItem' @@ -17307,15 +17309,15 @@ components: shell_call: '#/components/schemas/OutputShellCallItem' shell_call_output: '#/components/schemas/OutputShellCallOutputItem' web_search_call: '#/components/schemas/OutputWebSearchCallItem' - propertyName: type + propertyName: 'type' example: content: - - text: Hello! How can I help you today? - type: output_text - id: msg-abc123 - role: assistant - status: completed - type: message + - 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' @@ -17350,216 +17352,213 @@ components: OutputItemWebSearchCall: example: action: - query: OpenAI API - type: search - id: search-abc123 - status: completed - type: web_search_call + query: 'OpenAI API' + type: 'search' + id: 'search-abc123' + status: 'completed' + type: 'web_search_call' properties: action: oneOf: - properties: queries: items: - type: string - type: array + type: 'string' + type: 'array' query: - type: string + type: 'string' sources: items: $ref: '#/components/schemas/WebSearchSource' - type: array + type: 'array' type: enum: - - search - type: string + - 'search' + type: 'string' required: - - type - - query - type: object + - 'type' + - 'query' + type: 'object' - properties: type: enum: - - open_page - type: string + - 'open_page' + type: 'string' url: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - type - type: object + - 'type' + type: 'object' - properties: pattern: - type: string + type: 'string' type: enum: - - find_in_page - type: string + - 'find_in_page' + type: 'string' url: - type: string + type: 'string' required: - - type - - pattern - - url - type: object + - 'type' + - 'pattern' + - 'url' + type: 'object' id: - type: string + type: 'string' status: $ref: '#/components/schemas/WebSearchStatus' type: enum: - - web_search_call - type: string + - 'web_search_call' + type: 'string' required: - - type - - id - - status - type: object + - 'type' + - 'id' + - 'status' + type: 'object' OutputMcpServerToolItem: - description: An openrouter:mcp server tool output item + description: 'An openrouter:mcp server tool output item' example: - id: mcp_tmp_abc123 - serverLabel: my-server - status: completed - toolName: get_data - type: openrouter:mcp + id: 'mcp_tmp_abc123' + serverLabel: 'my-server' + status: 'completed' + toolName: 'get_data' + type: 'openrouter:mcp' properties: id: - type: string + type: 'string' serverLabel: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' toolName: - type: string + type: 'string' type: enum: - - openrouter:mcp - type: string + - 'openrouter:mcp' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputMemoryServerToolItem: - description: An openrouter:memory server tool output item + description: 'An openrouter:memory server tool output item' example: - action: read - id: mem_tmp_abc123 - key: user_preference - status: completed - type: openrouter:memory + action: 'read' + id: 'mem_tmp_abc123' + key: 'user_preference' + status: 'completed' + type: 'openrouter:memory' properties: action: enum: - - read - - write - - delete - type: string + - 'read' + - 'write' + - 'delete' + type: 'string' id: - type: string + type: 'string' key: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:memory - type: string - value: - nullable: true + - 'openrouter:memory' + type: 'string' + value: {} required: - - status - - type - type: object + - '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 + - 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 + type: 'array' id: - type: string + type: 'string' phase: anyOf: - enum: - - commentary - type: string + - '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. + - 'final_answer' + type: 'string' + - type: 'null' + 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 + - 'assistant' + type: 'string' status: anyOf: - enum: - - completed - type: string + - 'completed' + type: 'string' - enum: - - incomplete - type: string + - 'incomplete' + type: 'string' - enum: - - in_progress - type: string + - 'in_progress' + type: 'string' type: enum: - - message - type: string + - 'message' + type: 'string' required: - - id - - role - - type - - content - type: object + - 'id' + - 'role' + - 'type' + - 'content' + type: 'object' OutputMessageItem: allOf: - $ref: '#/components/schemas/OutputMessage' - properties: {} - type: object - description: An output message item + 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 + 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 + - 'text' + - 'image' + - 'embeddings' + - 'audio' + - 'video' + - 'rerank' + - 'speech' + - 'transcription' + example: 'text' + type: 'string' OutputModalityEnum: enum: - - text - - image - example: text - type: string + - 'text' + - 'image' + example: 'text' + type: 'string' OutputReasoningItem: allOf: - $ref: '#/components/schemas/OutputItemReasoning' @@ -17567,127 +17566,127 @@ components: content: items: $ref: '#/components/schemas/ReasoningTextContent' - nullable: true - type: array + type: + - 'array' + - 'null' 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 + description: 'A signature for the reasoning content, used for verification' + example: 'EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...' + type: + - 'string' + - 'null' + 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 + - 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 + - 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 + 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 + 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 + description: 'The JSON arguments submitted to the search tool (e.g. {"query":"Claude"})' + type: 'string' id: - type: string + type: 'string' query: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:experimental__search_models - type: string + - 'openrouter:experimental__search_models' + type: 'string' required: - - status - - type - type: object + - '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. + 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 + - 'echo hello' max_output_length: null timeout_ms: null - call_id: call_abc123 - id: shc_abc123 - status: completed - type: shell_call + call_id: 'call_abc123' + id: 'shc_abc123' + status: 'completed' + type: 'shell_call' properties: action: properties: commands: items: - type: string - type: array + type: 'string' + type: 'array' max_output_length: - nullable: true - type: integer + type: + - 'integer' + - 'null' timeout_ms: - nullable: true - type: integer + type: + - 'integer' + - 'null' required: - - commands - - max_output_length - - timeout_ms - type: object + - 'commands' + - 'max_output_length' + - 'timeout_ms' + type: 'object' call_id: - type: string + type: 'string' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ShellCallStatus' type: enum: - - shell_call - type: string + - 'shell_call' + type: 'string' required: - - type - - id - - call_id - - status - type: object + - '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. + 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 + call_id: 'call_abc123' + id: 'sho_abc123' output: - outcome: exit_code: 0 - type: exit + type: 'exit' stderr: '' - stdout: | - hello - status: completed - type: shell_call_output + stdout: "hello\n" + status: 'completed' + type: 'shell_call_output' properties: call_id: - type: string + type: 'string' id: - type: string + type: 'string' max_output_length: - nullable: true - type: integer + type: + - 'integer' + - 'null' output: items: properties: @@ -17695,720 +17694,715 @@ components: oneOf: - properties: exit_code: - type: integer + type: 'integer' type: enum: - - exit - type: string + - 'exit' + type: 'string' required: - - type - - exit_code - type: object + - 'type' + - 'exit_code' + type: 'object' - properties: type: enum: - - timeout - type: string + - 'timeout' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' stderr: - type: string + type: 'string' stdout: - type: string + type: 'string' required: - - stdout - - stderr - - outcome - type: object - type: array + - 'stdout' + - 'stderr' + - 'outcome' + type: 'object' + type: 'array' status: $ref: '#/components/schemas/ShellCallStatus' type: enum: - - shell_call_output - type: string + - 'shell_call_output' + type: 'string' required: - - type - - id - - call_id - - status - - output - type: object + - 'type' + - 'id' + - 'call_id' + - 'status' + - 'output' + type: 'object' OutputSubagentServerToolItem: - description: An openrouter:subagent server tool output item + description: 'An openrouter:subagent server tool output item' example: - id: st_tmp_abc123 - status: completed - type: openrouter:subagent + 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 + description: 'Error message when the subagent task did not produce an outcome.' + type: 'string' id: - type: string + type: 'string' model: - description: Slug of the worker model that executed the task. - type: string + 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 + 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 + 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 + description: 'The short task identifier the delegating model supplied.' + type: 'string' type: enum: - - openrouter:subagent - type: string + - 'openrouter:subagent' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputTextEditorServerToolItem: - description: An openrouter:text_editor server tool output item + 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 + 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 + - 'view' + - 'create' + - 'str_replace' + - 'insert' + type: 'string' filePath: - type: string + type: 'string' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:text_editor - type: string + - 'openrouter:text_editor' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputToolSearchServerToolItem: - description: An openrouter:tool_search server tool output item + description: 'An openrouter:tool_search server tool output item' example: - id: ts_tmp_abc123 - query: weather tools - status: completed - type: openrouter:tool_search + id: 'ts_tmp_abc123' + query: 'weather tools' + status: 'completed' + type: 'openrouter:tool_search' properties: id: - type: string + type: 'string' query: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:tool_search - type: string + - 'openrouter:tool_search' + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputWebFetchServerToolItem: - description: An openrouter:web_fetch server tool output item + 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 + id: 'wf_tmp_abc123' + status: 'completed' + title: 'Example Domain' + type: 'openrouter:web_fetch' + url: 'https://example.com' properties: content: - type: string + type: 'string' error: - description: The error message if the fetch failed. - type: string + description: 'The error message if the fetch failed.' + type: 'string' httpStatus: - description: The HTTP status code returned by the upstream URL fetch. - type: integer + description: 'The HTTP status code returned by the upstream URL fetch.' + type: 'integer' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' title: - type: string + type: 'string' type: enum: - - openrouter:web_fetch - type: string + - 'openrouter:web_fetch' + type: 'string' url: - type: string + type: 'string' required: - - status - - type - type: object + - 'status' + - 'type' + type: 'object' OutputWebSearchCallItem: allOf: - $ref: '#/components/schemas/OutputItemWebSearchCall' - properties: {} - type: object + type: 'object' example: - id: ws-abc123 - status: completed - type: web_search_call + id: 'ws-abc123' + status: 'completed' + type: 'web_search_call' OutputWebSearchServerToolItem: - description: An openrouter:web_search server tool output item + 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 + 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. + 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 + type: 'string' sources: items: properties: type: enum: - - url - type: string + - 'url' + type: 'string' url: - type: string + type: 'string' required: - - type - - url - type: object - type: array + - 'type' + - 'url' + type: 'object' + type: 'array' type: enum: - - search - type: string + - 'search' + type: 'string' required: - - type - - query - type: object + - 'type' + - 'query' + type: 'object' id: - type: string + type: 'string' status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - - openrouter:web_search - type: string + - 'openrouter:web_search' + type: 'string' required: - - status - - type - type: object + - '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 - - prediction - - 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 + - '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' + - 'prediction' + - '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 + id: 'pareto-router' min_coding_score: 0.8 - price_source: prompt + price_source: 'prompt' properties: enabled: - description: Set to false to disable the pareto-router plugin for this request. Defaults to true. - type: boolean + description: 'Set to false to disable the pareto-router plugin for this request. Defaults to true.' + type: 'boolean' id: enum: - - pareto-router - type: string + - 'pareto-router' + type: 'string' min_coding_score: - description: >- - Minimum coding quality score between 0 and 1. Maps to internal quality tiers: >= 0.66 → high (top coding - models), >= 0.33 → medium (strong modern flagships), < 0.33 → low (capable coders above the median). Omit to - default to the highest tier (equivalent to >= 0.66). + description: 'Minimum coding quality score between 0 and 1. Maps to internal quality tiers: >= 0.66 → high (top coding models), >= 0.33 → medium (strong modern flagships), < 0.33 → low (capable coders above the median). Omit to default to the highest tier (equivalent to >= 0.66).' example: 0.8 - format: double + format: 'double' maximum: 1 minimum: 0 - type: number + type: 'number' price_source: - description: >- - Price source for the Pareto frontier cost axis. "prompt" uses catalog list price (endpoint.pricing.prompt). - "weighted_avg" uses traffic-weighted effective input price from ClickHouse, falling back to prompt price for - models without traffic data. Defaults to "prompt". + description: 'Price source for the Pareto frontier cost axis. "prompt" uses catalog list price (endpoint.pricing.prompt). "weighted_avg" uses traffic-weighted effective input price from ClickHouse, falling back to prompt price for models without traffic data. Defaults to "prompt".' enum: - - prompt - - weighted_avg - type: string + - 'prompt' + - 'weighted_avg' + type: 'string' required: - - id - type: object + - 'id' + type: 'object' PayloadTooLargeResponse: - description: Payload Too Large - Request payload exceeds size limits + description: 'Payload Too Large - Request payload exceeds size limits' example: error: code: 413 - message: Request payload too large + message: 'Request payload too large' properties: error: $ref: '#/components/schemas/PayloadTooLargeResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' PayloadTooLargeResponseErrorData: - description: Error data for PayloadTooLargeResponse + description: 'Error data for PayloadTooLargeResponse' example: code: 413 - message: Request payload too large + message: 'Request payload too large' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' PaymentRequiredResponse: - description: Payment Required - Insufficient credits or quota to complete request + description: 'Payment Required - Insufficient credits or quota to complete request' example: error: code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits + 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 + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' PaymentRequiredResponseErrorData: - description: Error data for PaymentRequiredResponse + description: 'Error data for PaymentRequiredResponse' example: code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits + message: 'Insufficient credits. Add more using https://openrouter.ai/credits' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' PDFParserEngine: anyOf: - enum: - - mistral-ocr - - native - - cloudflare-ai - type: string + - '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 + - '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. + description: 'Options for PDF parsing.' example: - engine: cloudflare-ai + engine: 'cloudflare-ai' properties: engine: $ref: '#/components/schemas/PDFParserEngine' - type: object + type: 'object' PercentileLatencyCutoffs: - description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred. + 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 + description: 'Maximum p50 latency (seconds)' + format: 'double' + type: + - 'number' + - 'null' p75: - description: Maximum p75 latency (seconds) - format: double - nullable: true - type: number + description: 'Maximum p75 latency (seconds)' + format: 'double' + type: + - 'number' + - 'null' p90: - description: Maximum p90 latency (seconds) - format: double - nullable: true - type: number + description: 'Maximum p90 latency (seconds)' + format: 'double' + type: + - 'number' + - 'null' p99: - description: Maximum p99 latency (seconds) - format: double - nullable: true - type: number - type: object + description: 'Maximum p99 latency (seconds)' + format: 'double' + type: + - 'number' + - 'null' + 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. + 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) + description: 'Median (50th percentile)' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' p75: - description: 75th percentile + description: '75th percentile' example: 35.2 - format: double - type: number + format: 'double' + type: 'number' p90: - description: 90th percentile + description: '90th percentile' example: 48.7 - format: double - type: number + format: 'double' + type: 'number' p99: - description: 99th percentile + description: '99th percentile' example: 85.3 - format: double - type: number - required: - - p50 - - p75 - - p90 - - p99 - type: object + format: 'double' + type: 'number' + required: + - 'p50' + - 'p75' + - 'p90' + - 'p99' + type: + - 'object' + - 'null' PercentileThroughputCutoffs: - description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred. + 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 + description: 'Minimum p50 throughput (tokens/sec)' + format: 'double' + type: + - 'number' + - 'null' p75: - description: Minimum p75 throughput (tokens/sec) - format: double - nullable: true - type: number + description: 'Minimum p75 throughput (tokens/sec)' + format: 'double' + type: + - 'number' + - 'null' p90: - description: Minimum p90 throughput (tokens/sec) - format: double - nullable: true - type: number + description: 'Minimum p90 throughput (tokens/sec)' + format: 'double' + type: + - 'number' + - 'null' p99: - description: Minimum p99 throughput (tokens/sec) - format: double - nullable: true - type: number - type: object + description: 'Minimum p99 throughput (tokens/sec)' + format: 'double' + type: + - 'number' + - 'null' + type: 'object' PerRequestLimits: - description: Per-request token limits + description: 'Per-request token limits' example: completion_tokens: 1000 prompt_tokens: 1000 - nullable: true properties: completion_tokens: - description: Maximum completion tokens per request + description: 'Maximum completion tokens per request' example: 1000 - type: number + type: 'number' prompt_tokens: - description: Maximum prompt tokens per request + description: 'Maximum prompt tokens per request' example: 1000 - type: number + type: 'number' required: - - prompt_tokens - - completion_tokens - type: object + - 'prompt_tokens' + - 'completion_tokens' + type: + - 'object' + - 'null' PipelineStage: example: data: - action: redacted + action: 'redacted' engines: - - presidio + - 'presidio' flagged: true matched_entity_types: - - EMAIL - - PHONE - name: content-filter - summary: PII redacted via Presidio (EMAIL, PHONE) - type: guardrail + - 'EMAIL' + - 'PHONE' + name: 'content-filter' + summary: 'PII redacted via Presidio (EMAIL, PHONE)' + type: 'guardrail' properties: cost_usd: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' data: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' guardrail_id: - type: string + type: 'string' guardrail_scope: - type: string + type: 'string' name: - type: string + type: 'string' summary: - type: string + type: 'string' type: $ref: '#/components/schemas/PipelineStageType' required: - - type - - name - type: object + - '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. + 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 + - 'guardrail' + - 'plugin' + - 'server_tools' + - 'response_healing' + - 'context_compression' + example: 'guardrail' + type: 'string' Prediction: - description: >- - Static predicted output content. Supported models can use this to reduce latency when much of the response is - known in advance. + description: 'Static predicted output content. Supported models can use this to reduce latency when much of the response is known in advance.' example: - content: Expected response - type: content - nullable: true + content: 'Expected response' + type: 'content' properties: content: anyOf: - - type: string + - type: 'string' - items: $ref: '#/components/schemas/PredictionContentText' - type: array + type: 'array' type: enum: - - content - type: string + - 'content' + type: 'string' required: - - type - - content - type: object + - 'type' + - 'content' + type: + - 'object' + - 'null' PredictionContentText: - description: Text content part for a predicted output. + description: 'Text content part for a predicted output.' example: - text: Expected response - type: text + text: 'Expected response' + type: 'text' properties: text: - type: string + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' PreferredMaxLatency: anyOf: - - format: double - type: number + - 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. + - type: 'null' + 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 + - 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. + - type: 'null' + 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. + description: 'A preset without version details.' example: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' properties: created_at: - type: string + type: 'string' creator_user_id: - nullable: true - type: string + type: + - 'string' + - 'null' description: - nullable: true - type: string + type: + - 'string' + - 'null' designated_version_id: - nullable: true - type: string + type: + - 'string' + - 'null' id: - type: string + type: 'string' name: - type: string + type: 'string' slug: - type: string + type: 'string' status: $ref: '#/components/schemas/PresetStatus' status_updated_at: - nullable: true - type: string + type: + - 'string' + - 'null' updated_at: - type: string + 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 + type: + - 'string' + - 'null' + 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. + description: 'A specific version of a preset, containing config and optional system prompt.' example: config: - model: openai/gpt-4o + 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. + 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 + additionalProperties: {} + type: 'object' created_at: - type: string + type: 'string' creator_id: - type: string + type: 'string' id: - type: string + type: 'string' preset_id: - type: string + type: 'string' system_prompt: - nullable: true - type: string + type: + - 'string' + - 'null' updated_at: - type: string + type: 'string' version: - type: integer - required: - - id - - preset_id - - creator_id - - version - - system_prompt - - config - - created_at - - updated_at - type: object + type: 'integer' + required: + - 'id' + - 'preset_id' + - 'creator_id' + - 'version' + - 'system_prompt' + - 'config' + - 'created_at' + - 'updated_at' + type: + - 'object' + - 'null' PresetStatus: - description: The status of a preset. + description: 'The status of a preset.' enum: - - active - - disabled - - archived - example: active - type: string + - 'active' + - 'disabled' + - 'archived' + example: 'active' + type: 'string' PresetWithDesignatedVersion: allOf: - $ref: '#/components/schemas/Preset' @@ -18416,1197 +18410,1044 @@ components: designated_version: $ref: '#/components/schemas/PresetDesignatedVersion' required: - - designated_version - type: object - description: A preset with its currently designated version. + - '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 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-4o + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' Preview_20250311_WebSearchServerTool: - description: Web search preview tool configuration (2025-03-11 version) + description: 'Web search preview tool configuration (2025-03-11 version)' example: - type: web_search_preview_2025_03_11 + 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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - - web_search_preview_2025_03_11 - type: string + - 'web_search_preview_2025_03_11' + type: 'string' user_location: $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - - type - type: object + - 'type' + type: 'object' Preview_WebSearchServerTool: - description: Web search preview tool configuration + description: 'Web search preview tool configuration' example: - type: web_search_preview + 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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - - web_search_preview - type: string + - 'web_search_preview' + type: 'string' user_location: $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - - type - type: object + - 'type' + type: 'object' Preview_WebSearchUserLocation: example: - city: San Francisco - country: USA - region: California - timezone: America/Los_Angeles - type: approximate - nullable: true + city: 'San Francisco' + country: 'USA' + region: 'California' + timezone: 'America/Los_Angeles' + type: 'approximate' properties: city: - nullable: true - type: string + type: + - 'string' + - 'null' country: - nullable: true - type: string + type: + - 'string' + - 'null' region: - nullable: true - type: string + type: + - 'string' + - 'null' timezone: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - approximate - type: string + - 'approximate' + type: 'string' required: - - type - type: object + - 'type' + type: + - 'object' + - 'null' PricingOverride: - description: >- - A conditional override of the base pricing. An entry applies only when all of its condition fields (e.g. - min_prompt_tokens, or the utc_start/utc_end time window) match the request; among applicable entries, later - entries win per price key; price keys absent from an entry inherit the base price. + description: 'A conditional override of the base pricing. An entry applies only when all of its condition fields (e.g. min_prompt_tokens, or the utc_start/utc_end time window) match the request; among applicable entries, later entries win per price key; price keys absent from an entry inherit the base price.' example: completion: '0.00002' min_prompt_tokens: 200000 prompt: '0.000005' properties: audio: - description: Overridden price in USD per audio input token - type: string + description: 'Overridden price in USD per audio input token' + type: 'string' completion: - description: Overridden price in USD per token for completion (output) generation - type: string + description: 'Overridden price in USD per token for completion (output) generation' + type: 'string' input_audio_cache: - description: Overridden price in USD per cached audio input token - type: string + description: 'Overridden price in USD per cached audio input token' + type: 'string' input_cache_read: - description: Overridden price in USD per cached input token (read) - type: string + description: 'Overridden price in USD per cached input token (read)' + type: 'string' input_cache_write: - description: Overridden price in USD per cache-write token - type: string + description: 'Overridden price in USD per cache-write token' + type: 'string' input_cache_write_1h: - description: Overridden price in USD per 1-hour cache-write token - type: string + description: 'Overridden price in USD per 1-hour cache-write token' + type: 'string' min_prompt_tokens: - description: >- - Condition: the entry applies when the total prompt tokens of a request are strictly greater than this - threshold - format: double - type: number + description: 'Condition: the entry applies when the total prompt tokens of a request are strictly greater than this threshold' + format: 'double' + type: 'number' prompt: - description: Overridden price in USD per token for prompt (input) processing - type: string + description: 'Overridden price in USD per token for prompt (input) processing' + type: 'string' utc_end: description: 'Condition: exclusive end of a daily UTC time window as an HHMM clock number (e.g. 400 = 04:00)' - format: double - type: number + format: 'double' + type: 'number' utc_start: - description: >- - Condition: inclusive start of a daily UTC time window as an HHMM clock number (e.g. 100 = 01:00, 1030 = - 10:30). The entry applies while the current UTC time is inside the half-open window [utc_start, utc_end), - which may wrap past midnight (utc_start > utc_end). - format: double - type: number - type: object + description: 'Condition: inclusive start of a daily UTC time window as an HHMM clock number (e.g. 100 = 01:00, 1030 = 10:30). The entry applies while the current UTC time is inside the half-open window [utc_start, utc_end), which may wrap past midnight (utc_start > utc_end).' + format: 'double' + type: 'number' + type: 'object' PromptCacheBreakpoint: - description: >- - Marks an explicit prompt-cache boundary on this content block (OpenAI-style). Everything through the block - carrying this marker is part of the candidate cached prefix. Supported natively by OpenAI GPT-5.6 and newer; on - providers that use Anthropic-style `cache_control`, OpenRouter converts the marker to that format automatically. + description: 'Marks an explicit prompt-cache boundary on this content block (OpenAI-style). Everything through the block carrying this marker is part of the candidate cached prefix. Supported natively by OpenAI GPT-5.6 and newer; on providers that use Anthropic-style `cache_control`, OpenRouter converts the marker to that format automatically.' example: - mode: explicit - nullable: true + mode: 'explicit' properties: mode: enum: - - explicit - type: string + - 'explicit' + type: 'string' required: - - mode - type: object + - 'mode' + type: + - 'object' + - 'null' PromptCacheOptions: - description: >- - Request-level prompt-cache controls. `mode: "explicit"` disables OpenAI-managed breakpoints so only blocks - marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer. + description: 'Request-level prompt-cache controls. `mode: "explicit"` disables OpenAI-managed breakpoints so only blocks marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer.' example: - mode: explicit - ttl: 30m - nullable: true + mode: 'explicit' + ttl: '30m' properties: mode: enum: - - explicit - type: string + - 'explicit' + type: 'string' ttl: - nullable: true - type: string - required: - - mode - type: object + type: + - 'string' + - 'null' + required: + - 'mode' + type: + - 'object' + - 'null' PromptInjectionScanScope: - description: >- - Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults - to all_messages. + 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 + - '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 - - Deepgram - - 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 - - Meta - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - Nex AGI - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Poolside - - Perceptron - - Perplexity - - Phala - - Recraft - - Reka - - Relace - - Sail Research - - Sakana AI - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Tenstorrent - - Together - - Upstage - - Venice - - Wafer - - WandB - - Quiver - - Krea - - Xiaomi - - xAI - - Z.AI - - FakeProvider - example: OpenAI - type: string + - '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' + - 'Deepgram' + - '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' + - 'Meta' + - 'Minimax' + - 'ModelRun' + - 'Mistral' + - 'Modular' + - 'Moonshot AI' + - 'Morph' + - 'NCompass' + - 'Nebius' + - 'Nex AGI' + - 'NextBit' + - 'Novita' + - 'Nvidia' + - 'OpenAI' + - 'OpenInference' + - 'Parasail' + - 'Poolside' + - 'Perceptron' + - 'Perplexity' + - 'Phala' + - 'Recraft' + - 'Reka' + - 'Relace' + - 'Sail Research' + - 'Sakana AI' + - 'SambaNova' + - 'Seed' + - 'SiliconFlow' + - 'Sourceful' + - 'StepFun' + - 'Stealth' + - 'StreamLake' + - 'Switchpoint' + - 'Tencent' + - 'Tenstorrent' + - 'Together' + - 'Upstage' + - 'Venice' + - 'Wafer' + - 'WandB' + - 'Quiver' + - 'Krea' + - '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. + 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 + additionalProperties: {} + type: 'object' ai21: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' aion-labs: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' akashml: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' alibaba: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' amazon-bedrock: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' amazon-nova: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' ambient: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' anthropic: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' anyscale: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' arcee-ai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' atlas-cloud: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' atoma: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' avian: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' azure: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' baidu: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' baseten: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' black-forest-labs: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' byteplus: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' centml: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' cerebras: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' chutes: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' cirrascale: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' clarifai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' cloudflare: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' cohere: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' crofai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' crucible: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' crusoe: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' darkbloom: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' decart: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' deepgram: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' deepinfra: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' deepseek: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' dekallm: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' digitalocean: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' enfer: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' fake-provider: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' featherless: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' fireworks: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' friendli: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' gmicloud: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' google-ai-studio: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' google-vertex: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' gopomelo: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' groq: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' heygen: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' huggingface: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' hyperbolic: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' hyperbolic-quantized: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inception: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inceptron: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inferact-vllm: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inference-net: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' infermatic: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inflection: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' inocloud: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' io-net: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' ionstream: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' klusterai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' krea: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' lambda: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' lepton: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' liquid: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' lynn: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' lynn-private: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' mancer: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' mancer-old: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' mara: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' meta: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' minimax: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' mistral: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' modal: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' modelrun: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' modular: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' moonshotai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' morph: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' ncompass: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' nebius: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' nex-agi: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' nextbit: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' nineteen: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' novita: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' nvidia: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' octoai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' open-inference: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' openai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' parasail: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' perceptron: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' perplexity: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' phala: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' poolside: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' quiver: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' recraft: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' recursal: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' reflection: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' reka: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' relace: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' replicate: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sail-research: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sakana: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sambanova: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sambanova-cloaked: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' seed: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sf-compute: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' siliconflow: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' sourceful: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' stealth: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' stepfun: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' streamlake: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' switchpoint: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' targon: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' + tencent: + additionalProperties: {} + type: 'object' tenstorrent: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' together: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' together-lite: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' ubicloud: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' upstage: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' venice: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' wafer: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' wandb: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' xai: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' xiaomi: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' z-ai: - additionalProperties: - nullable: true - type: object - type: object + additionalProperties: {} + type: 'object' + type: 'object' ProviderOverloadedResponse: - description: Provider Overloaded - Provider is temporarily overloaded + description: 'Provider Overloaded - Provider is temporarily overloaded' example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' properties: error: $ref: '#/components/schemas/ProviderOverloadedResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' ProviderOverloadedResponseErrorData: - description: Error data for ProviderOverloadedResponse + description: 'Error data for ProviderOverloadedResponse' example: code: 529 - message: Provider returned error + message: 'Provider returned error' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' ProviderPreferences: additionalProperties: false - description: When multiple model providers are available, optionally indicate your routing preference. + 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 + description: "Whether to allow backup providers to serve requests\n- true: (default) when the primary provider (or your custom providers in \"order\") is unavailable, use the next best provider.\n- false: use only the primary/custom provider, and return the upstream error if it's unavailable.\n" + type: + - 'boolean' + - 'null' 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 + description: "Data collection setting. If no available model provider meets the requirement, your request will return an error.\n- allow: (default) allow providers which store user data non-transiently and may train on it\n\n- deny: use only providers which do not collect user data." + enum: + - 'deny' + - 'allow' - null - example: allow - nullable: true - type: string + example: 'allow' + type: + - 'string' + - 'null' 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. + 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 + type: + - 'boolean' + - 'null' ignore: - description: >- - List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider - settings for this request. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' 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. + 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 + description: 'Maximum price in USD per audio unit' + type: 'string' completion: - description: Maximum price in USD per million completion tokens - type: string + description: 'Maximum price in USD per million completion tokens' + type: 'string' image: - description: Maximum price in USD per image - type: string + description: 'Maximum price in USD per image' + type: 'string' prompt: - description: Maximum price in USD per million prompt tokens - type: string + description: 'Maximum price in USD per million prompt tokens' + type: 'string' request: - description: Maximum price in USD per request - type: string - type: object + 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. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' 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. + 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 + - 'openai' + - 'anthropic' items: anyOf: - $ref: '#/components/schemas/ProviderName' - - type: string - nullable: true - type: array + - type: 'string' + type: + - 'array' + - 'null' 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. + description: 'A list of quantization levels to filter the provider by.' items: $ref: '#/components/schemas/Quantization' - nullable: true - type: array + type: + - 'array' + - 'null' 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 + 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.' + type: + - 'boolean' + - 'null' 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 + - type: 'null' + 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. + 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 + type: + - 'boolean' + - 'null' + type: + - 'object' + - 'null' ProviderResponse: - description: Details of a provider response for a generation attempt + description: 'Details of a provider response for a generation attempt' example: - endpoint_id: ep_abc123 - id: chatcmpl-abc123 + endpoint_id: 'ep_abc123' + id: 'chatcmpl-abc123' is_byok: false latency: 1200 - model_permaslug: openai/gpt-4 - provider_name: OpenAI + model_permaslug: 'openai/gpt-4' + provider_name: 'OpenAI' status: 200 properties: endpoint_id: - description: Internal endpoint identifier - example: ep_abc123 - type: string + description: 'Internal endpoint identifier' + example: 'ep_abc123' + type: 'string' id: - description: Upstream provider response identifier - example: chatcmpl-abc123 - type: string + description: 'Upstream provider response identifier' + example: 'chatcmpl-abc123' + type: 'string' is_byok: - description: Whether the request used a bring-your-own-key + description: 'Whether the request used a bring-your-own-key' example: false - type: boolean + type: 'boolean' latency: - description: Response latency in milliseconds + description: 'Response latency in milliseconds' example: 1200 - format: double - type: number + format: 'double' + type: 'number' model_permaslug: - description: Canonical model slug - example: openai/gpt-4 - type: string + 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 - - 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 - - Deepgram - - 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 - - Meta - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - Nex AGI - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Poolside - - Perceptron - - Perplexity - - Phala - - Recraft - - Reka - - Relace - - Sail Research - - Sakana AI - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Tenstorrent - - Together - - Upstage - - Venice - - Wafer - - WandB - - Quiver - - Krea - - Xiaomi - - xAI - - Z.AI - - FakeProvider - example: OpenAI - type: string + 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' + - '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' + - 'Deepgram' + - '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' + - 'Meta' + - 'Minimax' + - 'ModelRun' + - 'Mistral' + - 'Modular' + - 'Moonshot AI' + - 'Morph' + - 'NCompass' + - 'Nebius' + - 'Nex AGI' + - 'NextBit' + - 'Novita' + - 'Nvidia' + - 'OpenAI' + - 'OpenInference' + - 'Parasail' + - 'Poolside' + - 'Perceptron' + - 'Perplexity' + - 'Phala' + - 'Recraft' + - 'Reka' + - 'Relace' + - 'Sail Research' + - 'Sakana AI' + - 'SambaNova' + - 'Seed' + - 'SiliconFlow' + - 'Sourceful' + - 'StepFun' + - 'Stealth' + - 'StreamLake' + - 'Switchpoint' + - 'Tencent' + - 'Tenstorrent' + - 'Together' + - 'Upstage' + - 'Venice' + - 'Wafer' + - 'WandB' + - 'Quiver' + - 'Krea' + - 'Xiaomi' + - 'xAI' + - 'Z.AI' + - 'FakeProvider' + example: 'OpenAI' + type: 'string' routed_service_tier: - description: >- - The service tier this request was routed to (e.g. flex, priority). The tier actually applied and billed is - determined by the provider response and may differ. - enum: - - flex - - priority - example: priority - type: string + description: 'The service tier this request was routed to (e.g. flex, priority). The tier actually applied and billed is determined by the provider response and may differ.' + enum: + - 'flex' + - 'priority' + example: 'priority' + type: 'string' status: - description: HTTP status code from the provider + description: 'HTTP status code from the provider' example: 200 - nullable: true - type: integer + type: + - 'integer' + - 'null' required: - - status - type: object + - 'status' + type: 'object' ProviderSort: - description: The provider sorting strategy (price, throughput, latency) + description: 'The provider sorting strategy (price, throughput, latency)' enum: - - price - - throughput - - latency - - exacto - example: price - type: string + - 'price' + - 'throughput' + - 'latency' + - 'exacto' + example: 'price' + type: 'string' ProviderSortConfig: - description: The provider sorting strategy (price, throughput, latency) + description: 'The provider sorting strategy (price, throughput, latency)' example: - by: price - partition: model + by: 'price' + partition: 'model' properties: by: - description: The provider sorting strategy (price, throughput, latency) + description: 'The provider sorting strategy (price, throughput, latency)' enum: - - price - - throughput - - latency - - exacto + - 'price' + - 'throughput' + - 'latency' + - 'exacto' - null - example: price - nullable: true - type: string + example: 'price' + type: + - 'string' + - 'null' 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. + 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 + - 'model' + - 'none' - null - example: model - nullable: true - type: string - type: object + example: 'model' + type: + - 'string' + - 'null' + type: 'object' PublicEndpoint: - description: Information about a specific model endpoint + description: 'Information about a specific model endpoint' example: context_length: 8192 latency_last_30m: @@ -19616,23 +19457,23 @@ components: p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 - model_id: openai/gpt-4 - model_name: GPT-4 + 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 + provider_name: 'OpenAI' + quantization: 'fp16' status: 0 supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supports_implicit_caching: true - tag: openai + tag: 'openai' throughput_last_30m: p50: 45.2 p75: 38.5 @@ -19643,153 +19484,140 @@ components: uptime_last_5m: 100 properties: context_length: - type: integer + type: 'integer' latency_last_30m: $ref: '#/components/schemas/PercentileStats' max_completion_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' max_prompt_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' model_id: - description: The unique identifier for the model (permaslug) - example: openai/gpt-4 - type: string + description: 'The unique identifier for the model (permaslug)' + example: 'openai/gpt-4' + type: 'string' model_name: - type: string + type: 'string' name: - type: string + type: 'string' pricing: properties: audio: - description: Price in USD per audio input token - type: string + description: 'Price in USD per audio input token' + type: 'string' audio_output: - description: Price in USD per audio output token - type: string + description: 'Price in USD per audio output token' + type: 'string' completion: - description: Price in USD per token for completion (output) generation - type: string + 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 + 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 + description: 'Price in USD per input image' + type: 'string' image_output: - description: Price in USD per output image - type: string + description: 'Price in USD per output image' + type: 'string' image_token: - description: Price in USD per image token - type: string + description: 'Price in USD per image token' + type: 'string' input_audio_cache: - description: Price in USD per cached audio input token - type: string + 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 + 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 + 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 + 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 + description: 'Price in USD per internal reasoning token' + type: 'string' overrides: - description: >- - Conditional overrides of the base pricing (e.g. long-context or time-based pricing). An entry applies - when all of its condition fields (e.g. min_prompt_tokens, or the utc_start/utc_end time window) match - the request; among applicable entries, later entries win per key; price keys absent from an entry - inherit the base price. The top-level pricing keys always reflect the price that applies under default - conditions. + description: 'Conditional overrides of the base pricing (e.g. long-context or time-based pricing). An entry applies when all of its condition fields (e.g. min_prompt_tokens, or the utc_start/utc_end time window) match the request; among applicable entries, later entries win per key; price keys absent from an entry inherit the base price. The top-level pricing keys always reflect the price that applies under default conditions.' items: $ref: '#/components/schemas/PricingOverride' - type: array + type: 'array' prompt: - description: Price in USD per token for prompt (input) processing - type: string + description: 'Price in USD per token for prompt (input) processing' + type: 'string' request: - description: Price in USD per request - type: string + description: 'Price in USD per request' + type: 'string' web_search: - description: Price in USD per web search - type: string + description: 'Price in USD per web search' + type: 'string' required: - - prompt - - completion - type: object + - 'prompt' + - 'completion' + type: 'object' provider_name: $ref: '#/components/schemas/ProviderName' quantization: - allOf: + anyOf: - $ref: '#/components/schemas/Quantization' - - nullable: true + - type: 'null' status: $ref: '#/components/schemas/EndpointStatus' supported_parameters: items: $ref: '#/components/schemas/Parameter' - type: array + type: 'array' supports_implicit_caching: - type: boolean + type: 'boolean' tag: - type: string + 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. + - 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 + 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' + type: + - 'number' + - 'null' uptime_last_30m: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' 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 + 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' + type: + - 'number' + - 'null' + 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 + description: 'Pricing information for the model' example: completion: '0.00006' image: '0' @@ -19797,359 +19625,342 @@ components: request: '0' properties: audio: - description: Price in USD per audio input token - type: string + description: 'Price in USD per audio input token' + type: 'string' audio_output: - description: Price in USD per audio output token - type: string + description: 'Price in USD per audio output token' + type: 'string' completion: - description: Price in USD per token for completion (output) generation - type: string + 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 + 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 + description: 'Price in USD per input image' + type: 'string' image_output: - description: Price in USD per output image - type: string + description: 'Price in USD per output image' + type: 'string' image_token: - description: Price in USD per image token - type: string + description: 'Price in USD per image token' + type: 'string' input_audio_cache: - description: Price in USD per cached audio input token - type: string + 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 + 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 + 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 + 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 + description: 'Price in USD per internal reasoning token' + type: 'string' overrides: - description: >- - Conditional overrides of the base pricing (e.g. long-context or time-based pricing). An entry applies when - all of its condition fields (e.g. min_prompt_tokens, or the utc_start/utc_end time window) match the - request; among applicable entries, later entries win per key; price keys absent from an entry inherit the - base price. The top-level pricing keys always reflect the price that applies under default conditions. + description: 'Conditional overrides of the base pricing (e.g. long-context or time-based pricing). An entry applies when all of its condition fields (e.g. min_prompt_tokens, or the utc_start/utc_end time window) match the request; among applicable entries, later entries win per key; price keys absent from an entry inherit the base price. The top-level pricing keys always reflect the price that applies under default conditions.' items: $ref: '#/components/schemas/PricingOverride' - type: array + type: 'array' prompt: - description: Price in USD per token for prompt (input) processing - type: string + description: 'Price in USD per token for prompt (input) processing' + type: 'string' request: - description: Price in USD per request - type: string + description: 'Price in USD per request' + type: 'string' web_search: - description: Price in USD per web search - type: string + description: 'Price in USD per web search' + type: 'string' required: - - prompt - - completion - type: object + - 'prompt' + - 'completion' + type: 'object' Quantization: enum: - - int4 - - int8 - - fp4 - - fp6 - - fp8 - - fp16 - - bf16 - - fp32 - - unknown - example: fp16 - type: string + - '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. + description: 'A parameter that accepts any value within an inclusive numeric range.' example: max: 100 min: 0 - type: range + type: 'range' properties: max: - type: number + type: 'number' min: - type: number + type: 'number' type: enum: - - range - type: string + - 'range' + type: 'string' required: - - type - - min - - max - type: object + - 'type' + - 'min' + - 'max' + type: 'object' RankingsDailyItem: example: date: '2026-05-11' - model_permaslug: openai/gpt-4o-2024-05-13 + 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). + description: 'UTC calendar date the row is aggregated over (YYYY-MM-DD).' example: '2026-05-11' - type: string + 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 + 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. + 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 + type: 'string' required: - - date - - model_permaslug - - total_tokens - type: object + - '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 + 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. + 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 + type: 'string' end_date: - description: Resolved end of the date window (UTC, inclusive). + description: 'Resolved end of the date window (UTC, inclusive).' example: '2026-05-11' - type: string + type: 'string' start_date: - description: Resolved start of the date window (UTC, inclusive). + description: 'Resolved start of the date window (UTC, inclusive).' example: '2026-04-12' - type: string + type: 'string' version: - description: Dataset version. Field names and grain are stable for the life of `v1`. + description: 'Dataset version. Field names and grain are stable for the life of `v1`.' enum: - - v1 - type: string + - 'v1' + type: 'string' required: - - as_of - - version - - start_date - - end_date - type: object + - 'as_of' + - 'version' + - 'start_date' + - 'end_date' + type: 'object' RankingsDailyResponse: example: data: - date: '2026-05-11' - model_permaslug: openai/gpt-4o-2024-05-13 + model_permaslug: 'openai/gpt-4o-2024-05-13' total_tokens: '12345678' - date: '2026-05-11' - model_permaslug: anthropic/claude-3.5-sonnet-20241022 + 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 + 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. + 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 + type: 'array' meta: $ref: '#/components/schemas/RankingsDailyMeta' required: - - data - - meta - type: object + - '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 + anyOf: + - allOf: + - $ref: '#/components/schemas/BaseReasoningConfig' + - properties: + enabled: + type: + - 'boolean' + - 'null' + max_tokens: + type: + - 'integer' + - 'null' + type: 'object' + - type: 'null' + description: 'Configuration for reasoning mode in the response' example: enabled: true - summary: auto + summary: 'auto' ReasoningContext: - description: >- - Controls which reasoning is available to the model. `auto` uses the model default (same as omitting); - `all_turns` includes reasoning from earlier turns passed in input; `current_turn` limits to the current turn - only. Only supported by OpenAI GPT-5.6 and newer. + description: 'Controls which reasoning is available to the model. `auto` uses the model default (same as omitting); `all_turns` includes reasoning from earlier turns passed in input; `current_turn` limits to the current turn only. Only supported by OpenAI GPT-5.6 and newer.' enum: - - auto - - all_turns - - current_turn + - 'auto' + - 'all_turns' + - 'current_turn' - null - example: all_turns - nullable: true - type: string + example: 'all_turns' + type: + - 'string' + - 'null' ReasoningDeltaEvent: allOf: - $ref: '#/components/schemas/BaseReasoningDeltaEvent' - properties: {} - type: object - description: Event emitted when reasoning text delta is streamed + type: 'object' + description: 'Event emitted when reasoning text delta is streamed' example: content_index: 0 - delta: First, we need - item_id: item-1 + delta: 'First, we need' + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.reasoning_text.delta + type: 'response.reasoning_text.delta' ReasoningDetailEncrypted: - description: Reasoning detail encrypted schema + description: 'Reasoning detail encrypted schema' example: - data: encrypted data - type: reasoning.encrypted + data: 'encrypted data' + type: 'reasoning.encrypted' properties: data: - type: string + type: 'string' format: $ref: '#/components/schemas/ReasoningFormat' id: - nullable: true - type: string + type: + - 'string' + - 'null' index: - type: integer + type: 'integer' type: enum: - - reasoning.encrypted - type: string + - 'reasoning.encrypted' + type: 'string' required: - - type - - data - type: object + - 'type' + - 'data' + type: 'object' ReasoningDetailServerToolCall: - description: >- - Record of an OpenRouter server-tool invocation (e.g. openrouter:fusion), carried in reasoning_details so a prior - tool call can be rehydrated into a later turn of the same conversation. + description: 'Record of an OpenRouter server-tool invocation (e.g. openrouter:fusion), carried in reasoning_details so a prior tool call can be rehydrated into a later turn of the same conversation.' example: arguments: '{"prompt":"Compare carbon tax proposals"}' result: '{"status":"ok","models":["openai/gpt-4o"]}' - tool_call_id: call_abc123 - tool_name: openrouter:fusion - type: reasoning.server_tool_call + tool_call_id: 'call_abc123' + tool_name: 'openrouter:fusion' + type: 'reasoning.server_tool_call' properties: arguments: - type: string + type: 'string' format: $ref: '#/components/schemas/ReasoningFormat' id: - nullable: true - type: string + type: + - 'string' + - 'null' index: - type: integer + type: 'integer' result: - type: string + type: 'string' tool_call_id: - nullable: true - type: string + type: + - 'string' + - 'null' tool_name: - type: string + type: 'string' type: enum: - - reasoning.server_tool_call - type: string + - 'reasoning.server_tool_call' + type: 'string' required: - - type - - tool_name - - arguments - - result - type: object + - 'type' + - 'tool_name' + - 'arguments' + - 'result' + type: 'object' ReasoningDetailSummary: - description: Reasoning detail summary schema + description: 'Reasoning detail summary schema' example: - summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... - type: reasoning.summary + 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 + type: + - 'string' + - 'null' index: - type: integer + type: 'integer' summary: - type: string + type: 'string' type: enum: - - reasoning.summary - type: string + - 'reasoning.summary' + type: 'string' required: - - type - - summary - type: object + - 'type' + - 'summary' + type: 'object' ReasoningDetailText: - description: Reasoning detail text schema + 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 + 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 + type: + - 'string' + - 'null' index: - type: integer + type: 'integer' signature: - nullable: true - type: string + type: + - 'string' + - 'null' text: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - reasoning.text - type: string + - 'reasoning.text' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ReasoningDetailUnion: - description: Reasoning detail union schema + description: 'Reasoning detail union schema' discriminator: mapping: reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted' reasoning.server_tool_call: '#/components/schemas/ReasoningDetailServerToolCall' reasoning.summary: '#/components/schemas/ReasoningDetailSummary' reasoning.text: '#/components/schemas/ReasoningDetailText' - propertyName: type + propertyName: 'type' example: - summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... - type: reasoning.summary + 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' @@ -20159,41 +19970,43 @@ components: allOf: - $ref: '#/components/schemas/BaseReasoningDoneEvent' - properties: {} - type: object - description: Event emitted when reasoning text streaming is complete + type: 'object' + description: 'Event emitted when reasoning text streaming is complete' example: content_index: 0 - item_id: item-1 + 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 + 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 + - 'max' + - 'xhigh' + - 'high' + - 'medium' + - 'low' + - 'minimal' + - 'none' - null - example: medium - nullable: true - type: string + example: 'medium' + type: + - 'string' + - 'null' ReasoningFormat: enum: - - unknown - - openai-responses-v1 - - azure-openai-responses-v1 - - xai-responses-v1 - - meta-responses-v1 - - anthropic-claude-v1 - - google-gemini-v1 + - 'unknown' + - 'openai-responses-v1' + - 'azure-openai-responses-v1' + - 'xai-responses-v1' + - 'meta-responses-v1' + - 'anthropic-claude-v1' + - 'google-gemini-v1' - null - example: unknown - nullable: true - type: string + example: 'unknown' + type: + - 'string' + - 'null' ReasoningItem: allOf: - $ref: '#/components/schemas/OutputItemReasoning' @@ -20201,395 +20014,405 @@ components: content: items: $ref: '#/components/schemas/ReasoningTextContent' - nullable: true - type: array + type: + - 'array' + - 'null' format: $ref: '#/components/schemas/ReasoningFormat' signature: - nullable: true - type: string - type: object - description: Reasoning output item with signature and format extensions + type: + - 'string' + - 'null' + type: 'object' + description: 'Reasoning output item with signature and format extensions' example: - id: reasoning-abc123 + id: 'reasoning-abc123' summary: - - text: Step by step analysis - type: summary_text - type: reasoning + - text: 'Step by step analysis' + type: 'summary_text' + type: 'reasoning' ReasoningMode: - description: >- - Selects the reasoning mode. `standard` is the default; `pro` engages deeper reasoning on models that support it, - billed at standard token rates. Only supported by OpenAI GPT-5.6 and newer. + description: 'Selects the reasoning mode. `standard` is the default; `pro` engages deeper reasoning on models that support it, billed at standard token rates. Only supported by OpenAI GPT-5.6 and newer.' enum: - - standard - - pro + - 'standard' + - 'pro' - null - example: standard - nullable: true - type: string + example: 'standard' + type: + - 'string' + - 'null' ReasoningSummaryPartAddedEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent' - properties: {} - type: object - description: Event emitted when a reasoning summary part is added + type: 'object' + description: 'Event emitted when a reasoning summary part is added' example: - item_id: item-1 + item_id: 'item-1' output_index: 0 part: text: '' - type: summary_text + type: 'summary_text' sequence_number: 3 summary_index: 0 - type: response.reasoning_summary_part.added + 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 + type: 'object' + description: 'Event emitted when a reasoning summary part is complete' example: - item_id: item-1 + item_id: 'item-1' output_index: 0 part: - text: Analyzing the problem step by step to find the optimal solution. - type: summary_text + 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 + type: 'response.reasoning_summary_part.done' ReasoningSummaryText: example: - text: Analyzed the problem using first principles - type: summary_text + text: 'Analyzed the problem using first principles' + type: 'summary_text' properties: text: - type: string + type: 'string' type: enum: - - summary_text - type: string + - 'summary_text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' ReasoningSummaryTextDeltaEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent' - properties: {} - type: object - description: Event emitted when reasoning summary text delta is streamed + type: 'object' + description: 'Event emitted when reasoning summary text delta is streamed' example: - delta: Analyzing - item_id: item-1 + delta: 'Analyzing' + item_id: 'item-1' output_index: 0 sequence_number: 4 summary_index: 0 - type: response.reasoning_summary_text.delta + 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 + type: 'object' + description: 'Event emitted when reasoning summary text streaming is complete' example: - item_id: item-1 + 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 + text: 'Analyzing the problem step by step to find the optimal solution.' + type: 'response.reasoning_summary_text.done' ReasoningSummaryVerbosity: enum: - - auto - - concise - - detailed + - 'auto' + - 'concise' + - 'detailed' - null - example: auto - nullable: true - type: string + example: 'auto' + type: + - 'string' + - 'null' ReasoningTextContent: example: - text: Let me think step by step about this problem... - type: reasoning_text + text: 'Let me think step by step about this problem...' + type: 'reasoning_text' properties: text: - type: string + type: 'string' type: enum: - - reasoning_text - type: string + - 'reasoning_text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' RefusalDeltaEvent: allOf: - $ref: '#/components/schemas/BaseRefusalDeltaEvent' - properties: {} - type: object - description: Event emitted when a refusal delta is streamed + type: 'object' + description: 'Event emitted when a refusal delta is streamed' example: content_index: 0 - delta: I'm sorry - item_id: item-1 + delta: 'I''m sorry' + item_id: 'item-1' output_index: 0 sequence_number: 4 - type: response.refusal.delta + type: 'response.refusal.delta' RefusalDoneEvent: allOf: - $ref: '#/components/schemas/BaseRefusalDoneEvent' - properties: {} - type: object - description: Event emitted when refusal streaming is complete + type: 'object' + description: 'Event emitted when refusal streaming is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' output_index: 0 - refusal: I'm sorry, but I can't assist with that request. + refusal: 'I''m sorry, but I can''t assist with that request.' sequence_number: 6 - type: response.refusal.done + 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. + 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 + session_id: 'abc-def-ghi' user_id: '123' - nullable: true - type: object + type: + - 'object' + - 'null' RequestTimeoutResponse: - description: Request Timeout - Operation exceeded time limit + description: 'Request Timeout - Operation exceeded time limit' example: error: code: 408 - message: Operation timed out. Please try again later. + message: 'Operation timed out. Please try again later.' properties: error: $ref: '#/components/schemas/RequestTimeoutResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' RequestTimeoutResponseErrorData: - description: Error data for RequestTimeoutResponse + description: 'Error data for RequestTimeoutResponse' example: code: 408 - message: Operation timed out. Please try again later. + message: 'Operation timed out. Please try again later.' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' ResponseHealingPlugin: example: enabled: true - id: response-healing + id: 'response-healing' properties: enabled: - description: Set to false to disable the response-healing plugin for this request. Defaults to true. - type: boolean + description: 'Set to false to disable the response-healing plugin for this request. Defaults to true.' + type: 'boolean' id: enum: - - response-healing - type: string + - 'response-healing' + type: 'string' required: - - id - type: object + - '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 + - '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 + 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 + type: 'array' logprobs: items: properties: bytes: items: - type: integer - type: array + type: 'integer' + type: 'array' logprob: - format: double - type: number + format: 'double' + type: 'number' token: - type: string + type: 'string' top_logprobs: items: properties: bytes: items: - type: integer - type: array + type: 'integer' + type: 'array' logprob: - format: double - type: number + format: 'double' + type: 'number' token: - type: string + type: 'string' required: - - token - - bytes - - logprob - type: object - type: array + - 'token' + - 'bytes' + - 'logprob' + type: 'object' + type: 'array' required: - - token - - bytes - - logprob - - top_logprobs - type: object - type: array + - 'token' + - 'bytes' + - 'logprob' + - 'top_logprobs' + type: 'object' + type: 'array' text: - type: string + type: 'string' type: enum: - - output_text - type: string + - 'output_text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' ResponsesErrorField: - description: Error information returned from the API + description: 'Error information returned from the API' example: - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. - nullable: true + code: 'rate_limit_exceeded' + message: 'Rate limit exceeded. Please try again later.' 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 - - bio_policy - type: string + - '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' + - 'bio_policy' + type: 'string' message: - type: string + type: 'string' required: - - code - - message - type: object + - 'code' + - 'message' + type: + - 'object' + - 'null' ResponsesRequest: - description: Request schema for Responses endpoint + description: 'Request schema for Responses endpoint' example: input: - - content: Hello, how are you? - role: user - type: message - model: anthropic/claude-4.5-sonnet-20250929 + - 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 + - description: 'Get the current weather in a given location' + name: 'get_current_weather' parameters: properties: location: - type: string - type: object - type: function + type: 'string' + type: 'object' + type: 'function' top_p: 0.9 properties: background: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' debug: $ref: '#/components/schemas/ChatDebugOptions' frequency_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' image_config: $ref: '#/components/schemas/ImageConfig' include: items: $ref: '#/components/schemas/ResponseIncludesEnum' - nullable: true - type: array + type: + - 'array' + - 'null' input: $ref: '#/components/schemas/Inputs' instructions: - nullable: true - type: string + type: + - 'string' + - 'null' max_output_tokens: - nullable: true - type: integer + type: + - 'integer' + - 'null' max_tool_calls: - nullable: true - type: integer + type: + - 'integer' + - 'null' metadata: $ref: '#/components/schemas/RequestMetadata' modalities: - description: Output modalities for the response. Supported values are "text" and "image". + description: 'Output modalities for the response. Supported values are "text" and "image".' example: - - text - - image + - 'text' + - 'image' items: $ref: '#/components/schemas/OutputModalityEnum' - type: array + type: 'array' model: - type: string + type: 'string' models: items: - type: string - type: array + type: 'string' + type: 'array' parallel_tool_calls: - nullable: true - type: boolean + type: + - 'boolean' + - 'null' plugins: - description: Plugins you want to enable for this request, including their settings. + description: 'Plugins you want to enable for this request, including their settings.' items: discriminator: mapping: @@ -20602,7 +20425,7 @@ components: response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' - propertyName: id + propertyName: 'id' oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' @@ -20613,22 +20436,20 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' - type: array + type: 'array' presence_penalty: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' previous_response_id: - description: >- - Not supported. The Responses API is stateless: no responses are stored, so a previous response cannot be - referenced. Requests with a non-null value are rejected with a 400 error. Send the full conversation history - in `input` instead. - nullable: true + description: 'Not supported. The Responses API is stateless: no responses are stored, so a previous response cannot be referenced. Requests with a non-null value are rejected with a 400 error. Send the full conversation history in `input` instead.' prompt: $ref: '#/components/schemas/StoredPromptTemplate' prompt_cache_key: - nullable: true - type: string + type: + - 'string' + - 'null' prompt_cache_options: $ref: '#/components/schemas/PromptCacheOptions' provider: @@ -20638,40 +20459,39 @@ components: route: $ref: '#/components/schemas/DeprecatedRoute' safety_identifier: - nullable: true - type: string + type: + - 'string' + - 'null' service_tier: - default: auto + default: 'auto' enum: - - auto - - default - - flex - - priority - - scale + - 'auto' + - 'default' + - 'flex' + - 'priority' + - 'scale' - null - nullable: true - type: string + type: + - 'string' + - 'null' 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. + 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 + type: 'string' stop_server_tools_when: $ref: '#/components/schemas/StopServerToolsWhen' store: const: false default: false - type: boolean + type: 'boolean' stream: default: false - type: boolean + type: 'boolean' temperature: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' text: $ref: '#/components/schemas/TextExtendedConfig' tool_choice: @@ -20682,25 +20502,25 @@ components: - allOf: - $ref: '#/components/schemas/FunctionTool' - properties: {} - type: object - description: Function tool definition + type: 'object' + description: 'Function tool definition' example: - description: Get the current weather in a location - name: get_weather + description: 'Get the current weather in a location' + name: 'get_weather' parameters: properties: location: - description: The city and state - type: string + description: 'The city and state' + type: 'string' unit: enum: - - celsius - - fahrenheit - type: string + - 'celsius' + - 'fahrenheit' + type: 'string' required: - - location - type: object - type: function + - 'location' + type: 'object' + type: 'function' - $ref: '#/components/schemas/Preview_WebSearchServerTool' - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - $ref: '#/components/schemas/Legacy_WebSearchServerTool' @@ -20727,356 +20547,354 @@ components: - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter' - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/ShellServerTool_OpenRouter' - type: array + type: 'array' top_k: - type: integer + type: 'integer' top_logprobs: - nullable: true - type: integer + type: + - 'integer' + - 'null' top_p: - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' 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. + 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 + type: 'string' + type: 'object' ResponsesStreamingResponse: example: data: - delta: Hello - type: response.output_text.delta + content_index: 0 + delta: 'Hello' + item_id: 'item-1' + logprobs: [] + output_index: 0 + sequence_number: 4 + type: 'response.output_text.delta' properties: data: $ref: '#/components/schemas/StreamEvents' required: - - data - type: object + - 'data' + type: 'object' RouterAttempt: example: - model: openai/gpt-4o - provider: OpenAI + model: 'openai/gpt-4o' + provider: 'OpenAI' status: 200 properties: model: - type: string + type: 'string' provider: - type: string + type: 'string' status: - type: integer + type: 'integer' required: - - provider - - model - - status - type: object + - 'provider' + - 'model' + - 'status' + type: 'object' RouterParams: - additionalProperties: - nullable: true + additionalProperties: {} example: - version_group: anthropic/claude-sonnet-4 + version_group: 'anthropic/claude-sonnet-4' properties: quality_floor: - format: double - type: number + format: 'double' + type: 'number' throughput_floor: - format: double - type: number + format: 'double' + type: 'number' version_group: - type: string - type: object + type: 'string' + type: 'object' RoutingStrategy: enum: - - direct - - auto - - free - - latest - - alias - - fallback - - pareto - - bodybuilder - - fusion - example: direct - type: string + - '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). + 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 + type: 'integer' SearchContextSizeEnum: - description: Size of the search context for web search tools + description: 'Size of the search context for web search tools' enum: - - low - - medium - - high - example: medium - type: string + - 'low' + - 'medium' + - 'high' + example: 'medium' + type: 'string' SearchModelsServerTool_OpenRouter: description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter' example: parameters: max_results: 5 - type: openrouter:experimental__search_models + type: 'openrouter:experimental__search_models' properties: parameters: $ref: '#/components/schemas/SearchModelsServerToolConfig' type: enum: - - openrouter:experimental__search_models - type: string + - 'openrouter:experimental__search_models' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' SearchModelsServerToolConfig: - description: Configuration for the openrouter:experimental__search_models server tool + 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. + description: 'Maximum number of models to return. Defaults to 5, max 20.' example: 5 - type: integer - type: object + 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. + 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 + - 'low' + - 'medium' + - 'high' + example: 'medium' + type: 'string' ServerToolUseDetails: - description: Usage for server-side tool execution (e.g., web search) + description: 'Usage for server-side tool execution (e.g., web search)' example: tool_calls_executed: 2 tool_calls_requested: 2 web_search_requests: 2 - nullable: true properties: tool_calls_executed: - description: Number of OpenRouter server tool calls that executed and produced a result. - nullable: true - type: integer + description: 'Number of OpenRouter server tool calls that executed and produced a result.' + type: + - 'integer' + - 'null' 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 + 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.' + type: + - 'integer' + - 'null' 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 + 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.' + type: + - 'integer' + - 'null' + type: + - 'object' + - 'null' ServiceTier: enum: - - auto - - default - - flex - - priority - - scale + - 'auto' + - 'default' + - 'flex' + - 'priority' + - 'scale' - null - example: default - nullable: true - type: string + example: 'default' + type: + - 'string' + - 'null' ServiceUnavailableResponse: - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' properties: error: $ref: '#/components/schemas/ServiceUnavailableResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' ServiceUnavailableResponseErrorData: - description: Error data for ServiceUnavailableResponse + description: 'Error data for ServiceUnavailableResponse' example: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' ShellCallItem: - description: A shell command execution call (newer variant) + description: 'A shell command execution call (newer variant)' example: action: commands: - - ls + - 'ls' - '-la' max_output_length: 10000 - call_id: call-abc123 - status: completed - type: shell_call + call_id: 'call-abc123' + status: 'completed' + type: 'shell_call' properties: action: properties: commands: items: - type: string - type: array + type: 'string' + type: 'array' max_output_length: - nullable: true - type: integer + type: + - 'integer' + - 'null' timeout_ms: - nullable: true - type: integer + type: + - 'integer' + - 'null' required: - - commands - type: object + - 'commands' + type: 'object' call_id: - type: string - environment: - nullable: true + type: 'string' + environment: {} id: - nullable: true - type: string + type: + - 'string' + - 'null' status: - allOf: + anyOf: - $ref: '#/components/schemas/ToolCallStatus' - - nullable: true + - type: 'null' type: enum: - - shell_call - type: string + - 'shell_call' + type: 'string' required: - - type - - call_id - - action - type: object + - 'type' + - 'call_id' + - 'action' + type: 'object' ShellCallOutputItem: - description: Output from a shell command execution (newer variant) + description: 'Output from a shell command execution (newer variant)' example: - call_id: call-abc123 + call_id: 'call-abc123' output: - - content: | - total 0 - type: stdout - status: completed - type: shell_call_output + - content: "total 0\n" + type: 'stdout' + status: 'completed' + type: 'shell_call_output' properties: call_id: - type: string + type: 'string' id: - nullable: true - type: string + type: + - 'string' + - 'null' max_output_length: - nullable: true - type: integer + type: + - 'integer' + - 'null' output: items: - additionalProperties: - nullable: true + additionalProperties: {} properties: content: - nullable: true - type: string + type: + - 'string' + - 'null' exit_code: - nullable: true - type: integer + type: + - 'integer' + - 'null' type: - type: string + type: 'string' required: - - type - type: object - type: array + - 'type' + type: 'object' + type: 'array' status: - allOf: + anyOf: - $ref: '#/components/schemas/ToolCallStatus' - - nullable: true + - type: 'null' type: enum: - - shell_call_output - type: string + - 'shell_call_output' + type: 'string' required: - - type - - call_id - - output - type: object + - 'type' + - 'call_id' + - 'output' + type: 'object' ShellCallStatus: - description: Status of a shell call or its output. + description: 'Status of a shell call or its output.' enum: - - in_progress - - completed - - incomplete - example: completed - type: string + - 'in_progress' + - 'completed' + - 'incomplete' + example: 'completed' + type: 'string' ShellServerTool: - description: Shell tool configuration + description: 'Shell tool configuration' example: - type: shell + type: 'shell' properties: type: enum: - - shell - type: string + - 'shell' + type: 'string' required: - - type - type: object + - '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) + 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 + engine: 'openrouter' environment: - type: container_auto - type: openrouter:shell + type: 'container_auto' + type: 'openrouter:shell' properties: parameters: $ref: '#/components/schemas/ShellServerToolConfig' type: enum: - - openrouter:shell - type: string + - 'openrouter:shell' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' ShellServerToolConfig: - description: Configuration for the openrouter:shell server tool + description: 'Configuration for the openrouter:shell server tool' example: - engine: openrouter + engine: 'openrouter' environment: - type: container_auto + type: 'container_auto' properties: engine: $ref: '#/components/schemas/ShellServerToolEngine' @@ -21084,93 +20902,84 @@ components: $ref: '#/components/schemas/ShellServerToolEnvironment' sleep_after_seconds: $ref: '#/components/schemas/SandboxSleepAfterSeconds' - type: object + 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. + 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 + - '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. + 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 + propertyName: 'type' example: - type: container_auto + type: 'container_auto' oneOf: - $ref: '#/components/schemas/ContainerAutoEnvironment' - $ref: '#/components/schemas/ContainerReferenceEnvironment' SpeechRequest: - description: Text-to-speech request input + description: 'Text-to-speech request input' example: - input: Hello world - model: mistralai/voxtral-mini-tts-2603 - response_format: pcm + input: 'Hello world' + model: 'mistralai/voxtral-mini-tts-2603' + response_format: 'pcm' speed: 1 - voice: en_paul_neutral + voice: 'en_paul_neutral' properties: input: - description: Text to synthesize - example: Hello world - type: string + description: 'Text to synthesize' + example: 'Hello world' + type: 'string' model: - description: TTS model identifier - example: mistralai/voxtral-mini-tts-2603 - type: string + description: 'TTS model identifier' + example: 'mistralai/voxtral-mini-tts-2603' + type: 'string' provider: - description: Provider-specific passthrough configuration + description: 'Provider-specific passthrough configuration' properties: options: $ref: '#/components/schemas/ProviderOptions' - type: object + type: 'object' response_format: - default: pcm - description: Audio output format + default: 'pcm' + description: 'Audio output format' enum: - - mp3 - - pcm - example: pcm - type: string + - '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. + 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 + format: 'double' + type: 'number' voice: - description: Voice identifier (provider-specific). - example: en_paul_neutral - type: string - required: - - model - - input - - voice - type: object + description: 'Voice identifier (provider-specific).' + example: 'en_paul_neutral' + 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`. + 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 + type: 'step_count_is' - max_cost_in_dollars: 0.5 - type: max_cost + type: 'max_cost' items: $ref: '#/components/schemas/StopServerToolsWhenCondition' minItems: 1 - type: array + type: 'array' StopServerToolsWhenCondition: - description: A single condition that, when met, halts the server-tool agent loop. + description: 'A single condition that, when met, halts the server-tool agent loop.' discriminator: mapping: finish_reason_is: '#/components/schemas/StopServerToolsWhenFinishReasonIs' @@ -21178,10 +20987,10 @@ components: max_cost: '#/components/schemas/StopServerToolsWhenMaxCost' max_tokens_used: '#/components/schemas/StopServerToolsWhenMaxTokensUsed' step_count_is: '#/components/schemas/StopServerToolsWhenStepCountIs' - propertyName: type + propertyName: 'type' example: step_count: 5 - type: step_count_is + type: 'step_count_is' oneOf: - $ref: '#/components/schemas/StopServerToolsWhenStepCountIs' - $ref: '#/components/schemas/StopServerToolsWhenHasToolCall' @@ -21189,111 +20998,113 @@ components: - $ref: '#/components/schemas/StopServerToolsWhenMaxCost' - $ref: '#/components/schemas/StopServerToolsWhenFinishReasonIs' StopServerToolsWhenFinishReasonIs: - description: Stop when the upstream model emits this finish reason (e.g. `length`). + description: 'Stop when the upstream model emits this finish reason (e.g. `length`).' example: - reason: length - type: finish_reason_is + reason: 'length' + type: 'finish_reason_is' properties: reason: minLength: 1 - type: string + type: 'string' type: enum: - - finish_reason_is - type: string + - 'finish_reason_is' + type: 'string' required: - - type - - reason - type: object + - 'type' + - 'reason' + type: 'object' StopServerToolsWhenHasToolCall: - description: Stop after a tool with this name has been called. + description: 'Stop after a tool with this name has been called.' example: - tool_name: finalize - type: has_tool_call + tool_name: 'finalize' + type: 'has_tool_call' properties: tool_name: minLength: 1 - type: string + type: 'string' type: enum: - - has_tool_call - type: string + - 'has_tool_call' + type: 'string' required: - - type - - tool_name - type: object + - 'type' + - 'tool_name' + type: 'object' StopServerToolsWhenMaxCost: - description: Stop once cumulative cost across the loop exceeds this dollar threshold. + description: 'Stop once cumulative cost across the loop exceeds this dollar threshold.' example: max_cost_in_dollars: 0.5 - type: max_cost + type: 'max_cost' properties: max_cost_in_dollars: - format: double - type: number + format: 'double' + type: 'number' type: enum: - - max_cost - type: string + - 'max_cost' + type: 'string' required: - - type - - max_cost_in_dollars - type: object + - 'type' + - 'max_cost_in_dollars' + type: 'object' StopServerToolsWhenMaxTokensUsed: - description: Stop once cumulative token usage across the loop exceeds this threshold. + description: 'Stop once cumulative token usage across the loop exceeds this threshold.' example: max_tokens: 10000 - type: max_tokens_used + type: 'max_tokens_used' properties: max_tokens: - type: integer + type: 'integer' type: enum: - - max_tokens_used - type: string + - 'max_tokens_used' + type: 'string' required: - - type - - max_tokens - type: object + - 'type' + - 'max_tokens' + type: 'object' StopServerToolsWhenStepCountIs: - description: Stop after the agent loop has executed this many steps. + description: 'Stop after the agent loop has executed this many steps.' example: step_count: 5 - type: step_count_is + type: 'step_count_is' properties: step_count: - type: integer + type: 'integer' type: enum: - - step_count_is - type: string + - 'step_count_is' + type: 'string' required: - - type - - step_count - type: object + - 'type' + - 'step_count' + type: 'object' StoredPromptTemplate: example: - id: prompt-abc123 + id: 'prompt-abc123' variables: - name: John - nullable: true + name: 'John' properties: id: - type: string + type: 'string' variables: additionalProperties: anyOf: - - type: string + - type: 'string' - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - nullable: true - type: object - required: - - id - type: object + type: + - 'object' + - 'null' + required: + - 'id' + type: + - 'object' + - 'null' StreamEvents: - description: Union of all possible event types emitted during response streaming + description: 'Union of all possible event types emitted during response streaming' discriminator: mapping: error: '#/components/schemas/ErrorEvent' @@ -21340,27 +21151,30 @@ components: 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 + propertyName: 'type' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: in_progress + presence_penalty: null + status: 'in_progress' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 0 - type: response.created + type: 'response.created' oneOf: - $ref: '#/components/schemas/OpenResponsesCreatedEvent' - $ref: '#/components/schemas/OpenResponsesInProgressEvent' @@ -21412,123 +21226,132 @@ components: - properties: response: $ref: '#/components/schemas/OpenResponsesResult' - type: object - description: Event emitted when a response has completed successfully + type: 'object' + description: 'Event emitted when a response has completed successfully' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: completed + presence_penalty: null + status: 'completed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 10 - type: response.completed + 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 + type: 'object' + description: 'Event emitted when a response has failed' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: failed + presence_penalty: null + status: 'failed' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 3 - type: response.failed + 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 + type: 'object' + description: 'Event emitted when a response is incomplete' example: response: + completed_at: null created_at: 1704067200 error: null - id: resp-abc123 + frequency_penalty: null + id: 'resp-abc123' incomplete_details: null instructions: null max_output_tokens: null metadata: null - model: gpt-4 - object: response + model: 'gpt-4' + object: 'response' output: [] parallel_tool_calls: true - status: incomplete + presence_penalty: null + status: 'incomplete' temperature: null - tool_choice: auto + tool_choice: 'auto' tools: [] top_p: null sequence_number: 5 - type: response.incomplete + 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 + 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 + id: 'item-1' + role: 'assistant' + status: 'in_progress' + type: 'message' output_index: 0 sequence_number: 2 - type: response.output_item.added + 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 + 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 + 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 + type: 'response.output_item.done' StreamLogprob: allOf: - $ref: '#/components/schemas/OpenResponsesLogProbs' @@ -21536,9 +21359,9 @@ components: top_logprobs: items: $ref: '#/components/schemas/StreamLogprobTopLogprob' - type: array - type: object - description: Log probability information for a token + type: 'array' + type: 'object' + description: 'Log probability information for a token' example: bytes: - 72 @@ -21547,14 +21370,14 @@ components: - 108 - 111 logprob: -0.5 - token: Hello + token: 'Hello' top_logprobs: [] StreamLogprobTopLogprob: allOf: - $ref: '#/components/schemas/OpenResponsesTopLogprobs' - properties: {} - type: object - description: Alternative token with its log probability + type: 'object' + description: 'Alternative token with its log probability' example: bytes: - 72 @@ -21563,80 +21386,75 @@ components: - 108 - 111 logprob: -0.5 - token: Hello + token: 'Hello' STTInputAudio: - description: Base64-encoded audio to transcribe + description: 'Base64-encoded audio to transcribe' example: - data: UklGRiQA... - format: wav + data: 'UklGRiQA...' + format: 'wav' properties: data: - description: Base64-encoded audio data (raw bytes, not a data URI) - type: string + 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 + description: 'Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider.' + type: 'string' required: - - data - - format - type: object + - 'data' + - 'format' + type: 'object' STTRequest: - description: Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio. + 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 + 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 + 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 + description: 'STT model identifier' + example: 'openai/whisper-large-v3' + type: 'string' provider: - description: Provider-specific passthrough configuration + description: 'Provider-specific passthrough configuration' properties: options: $ref: '#/components/schemas/ProviderOptions' - type: object + type: 'object' response_format: - description: >- - Output format. "json" (default) returns { text, usage }. "verbose_json" additionally returns task, language, - duration, and segment-level timestamps; only supported by OpenAI-compatible providers. - enum: - - json - - verbose_json - example: json - type: string + description: 'Output format. "json" (default) returns { text, usage }. "verbose_json" additionally returns task, language, duration, and segment-level timestamps; only supported by OpenAI-compatible providers.' + enum: + - 'json' + - 'verbose_json' + example: 'json' + type: 'string' temperature: - description: Sampling temperature for transcription + description: 'Sampling temperature for transcription' example: 0 - format: double - type: number + format: 'double' + type: 'number' timestamp_granularities: - description: >- - Timestamp detail levels to include when response_format is "verbose_json". "segment" returns segment-level - timestamps; "word" additionally returns word-level timestamps in the words array. Ignored unless - response_format is "verbose_json". + description: 'Timestamp detail levels to include when response_format is "verbose_json". "segment" returns segment-level timestamps; "word" additionally returns word-level timestamps in the words array. Ignored unless response_format is "verbose_json".' example: - - segment + - 'segment' items: $ref: '#/components/schemas/STTTimestampGranularity' - type: array + type: 'array' required: - - model - - input_audio - type: object + - 'model' + - 'input_audio' + type: 'object' STTResponse: - description: STT response containing transcribed text and optional usage statistics + description: 'STT response containing transcribed text and optional usage statistics' example: - text: Hello, this is a test of OpenAI speech-to-text transcription. + text: 'Hello, this is a test of OpenAI speech-to-text transcription.' usage: cost: 0.000508 input_tokens: 83 @@ -21645,41 +21463,39 @@ components: total_tokens: 113 properties: duration: - description: Duration of the input audio in seconds, present when response_format is verbose_json + description: 'Duration of the input audio in seconds, present when response_format is verbose_json' example: 9.2 - format: double - type: number + format: 'double' + type: 'number' language: - description: Detected or forced language, present when response_format is verbose_json - example: english - type: string + description: 'Detected or forced language, present when response_format is verbose_json' + example: 'english' + type: 'string' segments: - description: Timestamped transcript segments, present when response_format is verbose_json + description: 'Timestamped transcript segments, present when response_format is verbose_json' items: $ref: '#/components/schemas/STTSegment' - type: array + type: 'array' task: - description: The task performed, present when response_format is verbose_json - example: transcribe - type: string + description: 'The task performed, present when response_format is verbose_json' + example: 'transcribe' + type: 'string' 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 + 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' words: - description: Timestamped words, present when the provider returns word-level timestamps + description: 'Timestamped words, present when the provider returns word-level timestamps' items: $ref: '#/components/schemas/STTWord' - type: array + type: 'array' required: - - text - type: object + - 'text' + type: 'object' STTSegment: - description: A timestamped transcript segment, returned when response_format is verbose_json + description: 'A timestamped transcript segment, returned when response_format is verbose_json' example: avg_logprob: -0.28 compression_ratio: 1.13 @@ -21689,70 +21505,70 @@ components: seek: 0 start: 0 temperature: 0 - text: Hello there. + text: 'Hello there.' tokens: - 50364 - 2425 - 456 properties: avg_logprob: - description: Average log probability of the segment - format: double - type: number + description: 'Average log probability of the segment' + format: 'double' + type: 'number' compression_ratio: - description: Compression ratio of the segment - format: double - type: number + description: 'Compression ratio of the segment' + format: 'double' + type: 'number' end: - description: Segment end time in seconds + description: 'Segment end time in seconds' example: 3.2 - format: double - type: number + format: 'double' + type: 'number' id: - description: Segment index within the transcript + description: 'Segment index within the transcript' example: 0 - type: integer + type: 'integer' no_speech_prob: - description: Probability the segment contains no speech - format: double - type: number + description: 'Probability the segment contains no speech' + format: 'double' + type: 'number' seek: - description: Seek offset of the segment + description: 'Seek offset of the segment' example: 0 - type: integer + type: 'integer' start: - description: Segment start time in seconds + description: 'Segment start time in seconds' example: 0 - format: double - type: number + format: 'double' + type: 'number' temperature: - description: Temperature used for the segment - format: double - type: number + description: 'Temperature used for the segment' + format: 'double' + type: 'number' text: - description: Transcribed text of the segment - example: Hello there. - type: string + description: 'Transcribed text of the segment' + example: 'Hello there.' + type: 'string' tokens: - description: Token IDs of the segment + description: 'Token IDs of the segment' items: - type: integer - type: array - required: - - id - - start - - end - - text - type: object + type: 'integer' + type: 'array' + required: + - 'id' + - 'start' + - 'end' + - 'text' + type: 'object' STTTimestampGranularity: - description: A timestamp detail level for verbose_json transcription responses. + description: 'A timestamp detail level for verbose_json transcription responses.' enum: - - word - - segment - example: word - type: string + - 'word' + - 'segment' + example: 'word' + type: 'string' STTUsage: - description: Aggregated usage statistics for the request + description: 'Aggregated usage statistics for the request' example: cost: 0.000508 input_tokens: 83 @@ -21761,196 +21577,175 @@ components: total_tokens: 113 properties: cost: - description: Total cost of the request in USD + description: 'Total cost of the request in USD' example: 0.000508 - format: double - type: number + format: 'double' + type: 'number' input_tokens: - description: Number of input tokens billed for this request + description: 'Number of input tokens billed for this request' example: 83 - type: integer + type: 'integer' output_tokens: - description: Number of output tokens generated + description: 'Number of output tokens generated' example: 30 - type: integer + type: 'integer' seconds: - description: Duration of the input audio in seconds + description: 'Duration of the input audio in seconds' example: 9.2 - format: double - type: number + format: 'double' + type: 'number' total_tokens: - description: Total number of tokens used (input + output) + description: 'Total number of tokens used (input + output)' example: 113 - type: integer - type: object + type: 'integer' + type: 'object' STTWord: - description: A timestamped word, returned when the provider includes word-level timestamps + description: 'A timestamped word, returned when the provider includes word-level timestamps' example: end: 0.4 start: 0 - word: Hello + word: 'Hello' properties: end: - description: Word end time in seconds + description: 'Word end time in seconds' example: 0.4 - format: double - type: number + format: 'double' + type: 'number' start: - description: Word start time in seconds + description: 'Word start time in seconds' example: 0 - format: double - type: number + format: 'double' + type: 'number' word: - description: The transcribed word - example: Hello - type: string - required: - - word - - start - - end - type: object + description: 'The transcribed word' + example: 'Hello' + type: 'string' + required: + - 'word' + - 'start' + - 'end' + 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. + additionalProperties: {} + 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 + type: 'openrouter:web_search' properties: parameters: - additionalProperties: - nullable: true - type: object + additionalProperties: {} + type: 'object' type: - type: string + type: 'string' required: - - type - type: object + - '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. + 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 + effort: 'low' properties: effort: - description: Reasoning effort level for the subagent call. - enum: - - max - - xhigh - - high - - medium - - low - - minimal - - none - type: string + 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 + 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. + 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 + model: '~anthropic/claude-haiku-latest' + type: 'openrouter:subagent' properties: parameters: $ref: '#/components/schemas/SubagentServerToolConfig' type: enum: - - openrouter:subagent - type: string + - 'openrouter:subagent' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' SubagentServerToolConfig: - description: Configuration for the openrouter:subagent server tool. + description: 'Configuration for the openrouter:subagent server tool.' example: - model: ~anthropic/claude-haiku-latest + 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 + 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. + description: 'Maximum number of output tokens (including reasoning) the subagent may produce. When omitted, the provider''s default applies.' example: 2048 - type: integer + 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. + 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 + 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 + 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. + description: 'Sampling temperature forwarded to the subagent call. When omitted, the provider''s default applies.' example: 0.7 - format: double - type: number + 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. + 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 + type: 'array' + type: 'object' SubmitGenerationFeedbackRequest: - description: Structured feedback about a specific generation + description: 'Structured feedback about a specific generation' example: - category: incorrect_response - comment: The model repeated the same paragraph three times. - generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + category: 'incorrect_response' + comment: 'The model repeated the same paragraph three times.' + generation_id: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' properties: category: - description: The category of feedback being reported - enum: - - latency - - incoherence - - incorrect_response - - formatting - - billing - - api_error - - other - example: incorrect_response - type: string + description: 'The category of feedback being reported' + enum: + - 'latency' + - 'incoherence' + - 'incorrect_response' + - 'formatting' + - 'billing' + - 'api_error' + - 'other' + example: 'incorrect_response' + type: 'string' comment: - description: An optional free-text comment describing the feedback - example: The model repeated the same paragraph three times. + description: 'An optional free-text comment describing the feedback' + example: 'The model repeated the same paragraph three times.' maxLength: 1000 - type: string + type: 'string' generation_id: - description: The generation to submit feedback on - example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + description: 'The generation to submit feedback on' + example: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' minLength: 1 - type: string + type: 'string' required: - - generation_id - - category - type: object + - 'generation_id' + - 'category' + type: 'object' SubmitGenerationFeedbackResponse: - description: Confirmation that the feedback was recorded + description: 'Confirmation that the feedback was recorded' example: data: success: true @@ -21959,169 +21754,153 @@ components: properties: success: const: true - description: Whether the feedback was recorded + description: 'Whether the feedback was recorded' example: true - type: boolean + type: 'boolean' required: - - success - type: object + - 'success' + type: 'object' required: - - data - type: object + - 'data' + 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. + 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 + type: 'range' resolution: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' seed: - type: boolean - type: object + type: 'boolean' + type: 'object' TaskClassificationItem: example: category_token_share: 0.48 category_usage_share: 0.51 - display_name: Code Generation - macro_category: code + display_name: 'Code Generation' + macro_category: 'code' models: - - id: openai/gpt-4.1-mini + - id: 'openai/gpt-4.1-mini' tag_token_share: 0.75 tag_usage_share: 0.55 - - id: anthropic/claude-sonnet-4 + - id: 'anthropic/claude-sonnet-4' tag_token_share: 0.12 tag_usage_share: 0.2 - tag: code:general_impl + 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`. + 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 + 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`. + 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 + format: 'double' + type: 'number' display_name: - description: Human-readable label for the classification. - example: Code Generation - type: string + 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 + 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. + 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 + type: 'array' tag: - description: Classification tag identifier (e.g. `code:general_impl`, `agent:web_search`). - example: code:general_impl - type: string + 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. + 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 + 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. + 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 + 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 + key: 'code' + label: 'Code' token_share: 0.52 usage_share: 0.45 properties: key: - description: Macro-category identifier. - example: code - type: string + description: 'Macro-category identifier.' + example: 'code' + type: 'string' label: - description: Human-readable label for the macro-category. - example: Code - type: string + 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). + description: 'Combined token share of all classifications in this macro-category (0–1).' example: 0.52 - format: double - type: number + format: 'double' + type: 'number' usage_share: - description: Combined usage share of all classifications in this macro-category (0–1). + 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 + format: 'double' + type: 'number' + required: + - 'key' + - 'label' + - 'usage_share' + - 'token_share' + type: 'object' TaskClassificationModel: example: - id: openai/gpt-4.1-mini + 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 + 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). + 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 + 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). + 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 + format: 'double' + type: 'number' required: - - id - - tag_usage_share - - tag_token_share - type: object + - 'id' + - 'tag_usage_share' + - 'tag_token_share' + type: 'object' TaskClassificationResponse: example: data: @@ -22129,18 +21908,18 @@ components: classifications: - category_token_share: 0.48 category_usage_share: 0.51 - display_name: Code Generation - macro_category: code + display_name: 'Code Generation' + macro_category: 'code' models: - - id: openai/gpt-4.1-mini + - id: 'openai/gpt-4.1-mini' tag_token_share: 0.75 tag_usage_share: 0.55 - tag: code:general_impl + tag: 'code:general_impl' token_share: 0.31 usage_share: 0.23 macro_categories: - - key: code - label: Code + - key: 'code' + label: 'Code' token_share: 0.52 usage_share: 0.45 window_days: 7 @@ -22148,53 +21927,51 @@ components: 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. + 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 + type: 'string' classifications: - description: Per-task classification market-share data, sorted by usage_share descending. + description: 'Per-task classification market-share data, sorted by usage_share descending.' items: $ref: '#/components/schemas/TaskClassificationItem' - type: array + type: 'array' macro_categories: - description: Aggregate market-share data per macro-category (code, data, agent, general). + description: 'Aggregate market-share data per macro-category (code, data, agent, general).' items: $ref: '#/components/schemas/TaskClassificationMacroCategory' - type: array + type: 'array' window_days: - description: Number of trailing days covered by this snapshot. + description: 'Number of trailing days covered by this snapshot.' example: 7 - type: integer + type: 'integer' required: - - window_days - - as_of - - classifications - - macro_categories - type: object - required: - - data - type: object + - 'window_days' + - 'as_of' + - 'classifications' + - 'macro_categories' + type: 'object' + required: + - 'data' + type: 'object' TextConfig: - description: Text output configuration including format and verbosity + description: 'Text output configuration including format and verbosity' example: format: - type: text - verbosity: medium + type: 'text' + verbosity: 'medium' properties: format: $ref: '#/components/schemas/Formats' verbosity: enum: - - high - - low - - medium + - 'high' + - 'low' + - 'medium' - null - nullable: true - type: string - type: object + type: + - 'string' + - 'null' + type: 'object' TextDeltaEvent: allOf: - $ref: '#/components/schemas/BaseTextDeltaEvent' @@ -22202,17 +21979,17 @@ components: logprobs: items: $ref: '#/components/schemas/StreamLogprob' - type: array - type: object - description: Event emitted when a text delta is streamed + type: 'array' + type: 'object' + description: 'Event emitted when a text delta is streamed' example: content_index: 0 - delta: Hello - item_id: item-1 + delta: 'Hello' + item_id: 'item-1' logprobs: [] output_index: 0 sequence_number: 4 - type: response.output_text.delta + type: 'response.output_text.delta' TextDoneEvent: allOf: - $ref: '#/components/schemas/BaseTextDoneEvent' @@ -22220,292 +21997,297 @@ components: logprobs: items: $ref: '#/components/schemas/StreamLogprob' - type: array - type: object - description: Event emitted when text streaming is complete + type: 'array' + type: 'object' + description: 'Event emitted when text streaming is complete' example: content_index: 0 - item_id: item-1 + item_id: 'item-1' logprobs: [] output_index: 0 sequence_number: 6 - text: Hello! How can I help you? - type: response.output_text.done + 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 + - 'low' + - 'medium' + - 'high' + - 'xhigh' + - 'max' - null - nullable: true - type: string - type: object - description: Text output configuration including format and verbosity + type: + - 'string' + - 'null' + type: 'object' + description: 'Text output configuration including format and verbosity' example: format: - type: text + type: 'text' ToolCallStatus: enum: - - in_progress - - completed - - incomplete - example: completed - type: string + - 'in_progress' + - 'completed' + - 'incomplete' + example: 'completed' + type: 'string' ToolChoiceAllowed: - description: Constrains the model to a pre-defined set of allowed tools + description: 'Constrains the model to a pre-defined set of allowed tools' example: - mode: auto + mode: 'auto' tools: - - name: get_weather - type: function - type: allowed_tools + - name: 'get_weather' + type: 'function' + type: 'allowed_tools' properties: mode: anyOf: - enum: - - auto - type: string + - 'auto' + type: 'string' - enum: - - required - type: string + - 'required' + type: 'string' tools: items: - additionalProperties: - nullable: true - type: object - type: array + additionalProperties: {} + type: 'object' + type: 'array' type: enum: - - allowed_tools - type: string + - 'allowed_tools' + type: 'string' required: - - type - - mode - - tools - type: object + - 'type' + - 'mode' + - 'tools' + type: 'object' TooManyRequestsResponse: - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' properties: error: $ref: '#/components/schemas/TooManyRequestsResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' TooManyRequestsResponseErrorData: - description: Error data for TooManyRequestsResponse + description: 'Error data for TooManyRequestsResponse' example: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' TopProviderInfo: - description: Information about the top provider for this model + 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 + description: 'Context length from the top provider' example: 8192 - nullable: true - type: integer + type: + - 'integer' + - 'null' is_moderated: - description: Whether the top provider moderates content + description: 'Whether the top provider moderates content' example: true - type: boolean + type: 'boolean' max_completion_tokens: - description: Maximum completion tokens from the top provider + description: 'Maximum completion tokens from the top provider' example: 4096 - nullable: true - type: integer + type: + - 'integer' + - 'null' required: - - is_moderated - type: object + - '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. + additionalProperties: {} + 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 + trace_id: 'trace-abc123' + trace_name: 'my-app-trace' properties: generation_name: - type: string + type: 'string' parent_span_id: - type: string + type: 'string' span_name: - type: string + type: 'string' trace_id: - type: string + type: 'string' trace_name: - type: string - type: object + type: 'string' + type: 'object' Truncation: enum: - - auto - - disabled + - 'auto' + - 'disabled' - null - example: auto - nullable: true - type: string + example: 'auto' + type: + - 'string' + - 'null' UnauthorizedResponse: - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' properties: error: $ref: '#/components/schemas/UnauthorizedResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' UnauthorizedResponseErrorData: - description: Error data for UnauthorizedResponse + description: 'Error data for UnauthorizedResponse' example: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' UnifiedBenchmarkPricing: - description: OpenRouter pricing per token for this model. Null if pricing is unavailable. + 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). + description: 'Cost per output token (USD, decimal string).' example: '0.000015' - type: string + type: 'string' prompt: - description: Cost per input token (USD, decimal string). + description: 'Cost per input token (USD, decimal string).' example: '0.000003' - type: string + type: 'string' required: - - prompt - - completion - type: object + - 'prompt' + - 'completion' + type: + - 'object' + - 'null' UnifiedBenchmarksAAItem: example: agentic_index: 58.3 coding_index: 65.8 - display_name: GPT-4o + display_name: 'GPT-4o' intelligence_index: 71.2 - model_permaslug: openai/gpt-4o + model_permaslug: 'openai/gpt-4o' pricing: completion: '0.00001' prompt: '0.0000025' - source: artificial-analysis + source: 'artificial-analysis' properties: agentic_index: - description: Artificial Analysis Agentic Index composite score. Higher is better. + description: 'Artificial Analysis Agentic Index composite score. Higher is better.' example: 58.3 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' coding_index: - description: Artificial Analysis Coding Index composite score. Higher is better. + description: 'Artificial Analysis Coding Index composite score. Higher is better.' example: 65.8 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' display_name: - description: Model name as listed on Artificial Analysis. - example: GPT-4o - type: string + 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. + description: 'Artificial Analysis Intelligence Index composite score. Higher is better.' example: 71.2 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' model_permaslug: - description: Stable OpenRouter model identifier. - example: openai/gpt-4o - type: string + 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 + 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 + arena: 'models' avg_generation_time_ms: 3200 - category: codecategories - display_name: Claude Sonnet 4 + category: 'codecategories' + display_name: 'Claude Sonnet 4' elo: 1423 - model_permaslug: anthropic/claude-sonnet-4 + model_permaslug: 'anthropic/claude-sonnet-4' pricing: completion: '0.000015' prompt: '0.000003' - source: design-arena + source: 'design-arena' tournament_stats: first_place: 12 fourth_place: 2 @@ -22515,149 +22297,157 @@ components: win_rate: 72 properties: arena: - description: Arena this ranking belongs to. - example: models - type: string + description: 'Arena this ranking belongs to.' + example: 'models' + type: 'string' avg_generation_time_ms: - description: Average generation time in milliseconds. + description: 'Average generation time in milliseconds.' example: 3200 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' category: - description: Category within the arena. - example: codecategories - type: string + 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 + description: 'Human-readable model name from Design Arena.' + example: 'Claude Sonnet 4' + type: 'string' elo: - description: ELO rating from head-to-head arena battles. + description: 'ELO rating from head-to-head arena battles.' example: 1423 - format: double - type: number + 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 + 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. + description: 'Benchmark source discriminator.' enum: - - design-arena - type: string + - 'design-arena' + type: 'string' tournament_stats: - description: Placement distribution from tournament matches. + description: 'Placement distribution from tournament matches.' properties: first_place: - nullable: true - type: integer + type: + - 'integer' + - 'null' fourth_place: - nullable: true - type: integer + type: + - 'integer' + - 'null' second_place: - nullable: true - type: integer + type: + - 'integer' + - 'null' third_place: - nullable: true - type: integer + type: + - 'integer' + - 'null' total: - nullable: true - type: integer + type: + - 'integer' + - 'null' required: - - first_place - - second_place - - third_place - - fourth_place - - total - type: object + - 'first_place' + - 'second_place' + - 'third_place' + - 'fourth_place' + - 'total' + type: 'object' win_rate: - description: Win rate as a percentage (0–100). + 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 + 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 + source: 'artificial-analysis' + source_url: 'https://artificialanalysis.ai' task_type: null - version: v1 + version: 'v1' properties: as_of: - description: ISO-8601 timestamp of when this data was last updated. + description: 'ISO-8601 timestamp of when this data was last updated.' example: '2026-06-03T12:00:00Z' - type: string + 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). + 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 + type: + - 'string' + - 'null' model_count: - description: Number of unique models in the response. - type: integer + description: 'Number of unique models in the response.' + type: 'integer' source: - description: The source filter applied, or null when all sources are returned. + description: 'The source filter applied, or null when all sources are returned.' enum: - - artificial-analysis - - design-arena + - 'artificial-analysis' + - 'design-arena' - null - example: artificial-analysis - nullable: true - type: string + example: 'artificial-analysis' + type: + - 'string' + - 'null' source_url: - description: URL of the upstream data source, or null when results span multiple sources. - example: https://artificialanalysis.ai - nullable: true - type: string + description: 'URL of the upstream data source, or null when results span multiple sources.' + example: 'https://artificialanalysis.ai' + type: + - 'string' + - 'null' task_type: - description: The task_type filter applied, or null if showing all. - nullable: true - type: string + description: 'The task_type filter applied, or null if showing all.' + type: + - 'string' + - 'null' version: - description: Dataset version. - enum: - - v1 - type: string - required: - - as_of - - version - - source - - source_url - - citation - - model_count - - task_type - type: object + 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 + display_name: 'GPT-4o' intelligence_index: 71.2 - model_permaslug: openai/gpt-4o + model_permaslug: 'openai/gpt-4o' pricing: completion: '0.00001' prompt: '0.0000025' - source: artificial-analysis + source: 'artificial-analysis' meta: as_of: '2026-06-03T12:00:00Z' citation: null @@ -22665,7 +22455,7 @@ components: source: null source_url: null task_type: null - version: v1 + version: 'v1' properties: data: items: @@ -22673,101 +22463,101 @@ components: mapping: artificial-analysis: '#/components/schemas/UnifiedBenchmarksAAItem' design-arena: '#/components/schemas/UnifiedBenchmarksDAItem' - propertyName: source + propertyName: 'source' oneOf: - $ref: '#/components/schemas/UnifiedBenchmarksAAItem' - $ref: '#/components/schemas/UnifiedBenchmarksDAItem' - type: array + type: 'array' meta: $ref: '#/components/schemas/UnifiedBenchmarksMeta' required: - - data - - meta - type: object + - 'data' + - 'meta' + type: 'object' UnprocessableEntityResponse: - description: Unprocessable Entity - Semantic validation failure + description: 'Unprocessable Entity - Semantic validation failure' example: error: code: 422 - message: Invalid argument + message: 'Invalid argument' properties: error: $ref: '#/components/schemas/UnprocessableEntityResponseErrorData' openrouter_metadata: - additionalProperties: - nullable: true - nullable: true - type: object + additionalProperties: {} + type: + - 'object' + - 'null' user_id: - nullable: true - type: string + type: + - 'string' + - 'null' required: - - error - type: object + - 'error' + type: 'object' UnprocessableEntityResponseErrorData: - description: Error data for UnprocessableEntityResponse + description: 'Error data for UnprocessableEntityResponse' example: code: 422 - message: Invalid argument + message: 'Invalid argument' properties: code: - type: integer + type: 'integer' message: - type: string + type: 'string' metadata: - additionalProperties: - nullable: true - nullable: true - type: object - required: - - code - - message - type: object + additionalProperties: {} + type: + - 'object' + - 'null' + required: + - 'code' + - 'message' + type: 'object' UpdateBYOKKeyRequest: example: disabled: false - name: Updated OpenAI Key + name: 'Updated OpenAI Key' properties: allowed_models: - description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. + description: 'Optional allowlist of model slugs this credential may be used for. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_user_ids: - description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. + description: 'Optional allowlist of user IDs that may use this credential. `null` means no restriction.' example: null items: - type: string + type: 'string' maxItems: 100 - nullable: true - type: array + type: + - 'array' + - 'null' disabled: - description: Whether this credential is disabled. + description: 'Whether this credential is disabled.' example: false - type: boolean + 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. + 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 + 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... + 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 + type: 'string' name: - description: Optional human-readable name for the credential. - example: Updated OpenAI Key + description: 'Optional human-readable name for the credential.' + example: 'Updated OpenAI Key' maxLength: 255 - nullable: true - type: string - type: object + type: + - 'string' + - 'null' + type: 'object' UpdateBYOKKeyResponse: example: data: @@ -22776,435 +22566,443 @@ components: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Updated OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Updated OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/BYOKKey' - - description: The updated BYOK credential. + - description: 'The updated BYOK credential.' required: - - data - type: object + - 'data' + type: 'object' UpdateGuardrailRequest: example: - description: Updated description + description: 'Updated description' limit_usd: 75 - name: Updated Guardrail Name - reset_interval: weekly + name: 'Updated Guardrail Name' + reset_interval: 'weekly' properties: allowed_models: - description: Array of model identifiers (slug or canonical_slug accepted) + description: 'Array of model identifiers (slug or canonical_slug accepted)' example: - - openai/gpt-5.2 + - 'openai/gpt-5.2' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' allowed_providers: - description: New list of allowed provider IDs + description: 'New list of allowed provider IDs' example: - - openai - - anthropic - - deepseek + - 'openai' + - 'anthropic' + - 'deepseek' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' 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. + 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 + - action: 'block' + slug: 'regex-prompt-injection' items: $ref: '#/components/schemas/ContentFilterBuiltinEntryInput' - nullable: true - type: array + type: + - 'array' + - 'null' content_filters: - description: Custom regex content filters to apply. Set to null to remove. + description: 'Custom regex content filters to apply. Set to null to remove.' example: null items: $ref: '#/components/schemas/ContentFilterEntry' - nullable: true - type: array + type: + - 'array' + - 'null' description: - description: New description for the guardrail - example: Updated description + description: 'New description for the guardrail' + example: 'Updated description' maxLength: 1000 - nullable: true - type: string + type: + - 'string' + - 'null' enforce_zdr: deprecated: true - description: >- - Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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. + description: 'Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, enforce_zdr_xai, 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 + type: + - 'boolean' + - 'null' enforce_zdr_anthropic: - description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_google: - description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_openai: - description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_other: - description: >- - Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls - back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when not provided.' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' enforce_zdr_xai: - description: Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided. + description: 'Whether to enforce zero data retention for xAI models. Falls back to enforce_zdr when not provided.' example: true - nullable: true - type: boolean + type: + - 'boolean' + - 'null' ignored_models: - description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted) + description: 'Array of model identifiers to exclude from routing (slug or canonical_slug accepted)' example: - - openai/gpt-4o-mini + - 'openai/gpt-4o-mini' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' ignored_providers: - description: List of provider IDs to exclude from routing + description: 'List of provider IDs to exclude from routing' example: - - azure + - 'azure' items: - type: string + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' limit_usd: - description: New spending limit in USD + description: 'New spending limit in USD' example: 75 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' name: - description: New name for the guardrail - example: Updated Guardrail Name + description: 'New name for the guardrail' + example: 'Updated Guardrail Name' maxLength: 200 minLength: 1 - type: string + type: 'string' reset_interval: $ref: '#/components/schemas/GuardrailInterval' - type: object + type: 'object' UpdateGuardrailResponse: example: data: allowed_models: null allowed_providers: - - openai + - 'openai' content_filter_builtins: - - action: redact + - action: 'redact' label: '[EMAIL]' - slug: email + slug: 'email' content_filters: null created_at: '2025-08-24T10:30:00Z' - description: Updated description + description: 'Updated description' enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: true enforce_zdr_openai: true enforce_zdr_other: true enforce_zdr_xai: true - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 75 - name: Updated Guardrail Name - reset_interval: weekly + name: 'Updated Guardrail Name' + reset_interval: 'weekly' updated_at: '2025-08-24T16:00:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - - description: The updated guardrail + - description: 'The updated guardrail' required: - - data - type: object + - 'data' + type: 'object' UpdateObservabilityDestinationRequest: example: enabled: false - name: Updated Langfuse + 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. + 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 + type: 'string' minItems: 1 - nullable: true - type: array + type: + - 'array' + - 'null' config: - additionalProperties: - nullable: true - description: >- - Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current - value. + additionalProperties: {} + 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 + baseUrl: 'https://us.cloud.langfuse.com' + publicKey: 'pk-l...EfGh' + secretKey: 'sk-l...AbCd' + type: 'object' enabled: - description: Whether the destination is enabled. + description: 'Whether the destination is enabled.' example: true - type: boolean + type: 'boolean' filter_rules: allOf: - $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable' - - description: Optional structured filter rules. `null` clears the rules. Omitting keeps the current value. + - 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 + 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. + description: 'When true, request/response bodies are not forwarded — only metadata.' example: false - type: boolean + type: 'boolean' sampling_rate: - description: Sampling rate between 0.0001 and 1 (1 = 100%). + description: 'Sampling rate between 0.0001 and 1 (1 = 100%).' example: 1 - format: double - type: number - type: object + 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 + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/ObservabilityDestination' - - description: The updated observability destination. + - description: 'The updated observability destination.' required: - - data - type: object + - 'data' + type: 'object' UpdateWorkspaceRequest: example: - name: Updated Workspace - slug: updated-workspace + 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 + description: 'Default image model for this workspace' + example: 'openai/dall-e-3' + type: + - 'string' + - 'null' default_provider_sort: - description: Default provider sort preference (price, throughput, latency, exacto) - example: price - nullable: true - type: string + description: 'Default provider sort preference (price, throughput, latency, exacto)' + example: 'price' + type: + - 'string' + - 'null' default_text_model: - description: Default text model for this workspace - example: openai/gpt-4o - nullable: true - type: string + description: 'Default text model for this workspace' + example: 'openai/gpt-4o' + type: + - 'string' + - 'null' description: - description: New description for the workspace - example: Updated description + description: 'New description for the workspace' + example: 'Updated description' maxLength: 500 - nullable: true - type: string + type: + - 'string' + - 'null' io_logging_api_key_ids: - description: Optional array of API key IDs to filter I/O logging + description: 'Optional array of API key IDs to filter I/O logging' example: null items: - type: integer - nullable: true - type: array + type: 'integer' + type: + - 'array' + - 'null' io_logging_sampling_rate: - description: Sampling rate for I/O logging (0.0001-1) + description: 'Sampling rate for I/O logging (0.0001-1)' example: 1 - format: double - type: number + format: 'double' + type: 'number' is_data_discount_logging_enabled: - description: Whether data discount logging is enabled + description: 'Whether data discount logging is enabled' example: true - type: boolean + type: 'boolean' is_observability_broadcast_enabled: - description: Whether broadcast is enabled + description: 'Whether broadcast is enabled' example: false - type: boolean + type: 'boolean' is_observability_io_logging_enabled: - description: Whether private logging is enabled + description: 'Whether private logging is enabled' example: false - type: boolean + type: 'boolean' name: - description: New name for the workspace - example: Updated Workspace + description: 'New name for the workspace' + example: 'Updated Workspace' maxLength: 100 minLength: 1 - type: string + type: 'string' slug: - description: >- - New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing - hyphens) - example: updated-workspace + 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 + 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 + 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 + name: 'Updated Workspace' + slug: 'updated-workspace' updated_at: '2025-08-25T10:00:00Z' properties: data: allOf: - $ref: '#/components/schemas/Workspace' - - description: The updated workspace + - description: 'The updated workspace' required: - - data - type: object + - 'data' + type: 'object' UpsertWorkspaceBudgetRequest: example: limit_usd: 100 properties: limit_usd: - description: Spending limit in USD. Must be greater than 0. + description: 'Spending limit in USD. Must be greater than 0.' example: 100 - format: double - type: number + format: 'double' + type: 'number' required: - - limit_usd - type: object + - 'limit_usd' + type: 'object' UpsertWorkspaceBudgetResponse: example: data: created_at: '2025-08-24T10:30:00Z' - id: 770e8400-e29b-41d4-a716-446655440000 + id: '770e8400-e29b-41d4-a716-446655440000' limit_usd: 100 - reset_interval: monthly + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: data: allOf: - $ref: '#/components/schemas/WorkspaceBudget' - - description: The created or updated budget + - description: 'The created or updated budget' required: - - data - type: object + - 'data' + type: 'object' URLCitation: example: - content: OpenRouter provides a unified API for accessing LLMs from multiple providers. + 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 + title: 'OpenRouter Documentation' + type: 'url_citation' + url: 'https://openrouter.ai/docs' properties: content: - type: string + type: 'string' end_index: - type: integer + type: 'integer' start_index: - type: integer + type: 'integer' title: - type: string + type: 'string' type: enum: - - url_citation - type: string + - 'url_citation' + type: 'string' url: - type: string - required: - - type - - url - - title - - start_index - - end_index - type: object + 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 - server_tool_use_details: - $ref: '#/components/schemas/ServerToolUseDetails' - type: object - description: Token usage information for the response + anyOf: + - allOf: + - $ref: '#/components/schemas/OpenAIResponsesUsage' + - properties: + cost: + description: 'Cost of the completion' + format: 'double' + type: + - 'number' + - 'null' + cost_details: + properties: + upstream_inference_cost: + format: 'double' + type: + - 'number' + - 'null' + 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' + server_tool_use_details: + $ref: '#/components/schemas/ServerToolUseDetails' + type: 'object' + - type: 'null' + description: 'Token usage information for the response' example: cost: 0.0012 cost_details: @@ -23222,12 +23020,12 @@ components: example: aspect_ratio: '16:9' duration: 8 - model: google/veo-3.1 - prompt: A serene mountain landscape at sunset - resolution: 720p + model: 'google/veo-3.1' + prompt: 'A serene mountain landscape at sunset' + resolution: '720p' properties: aspect_ratio: - description: Aspect ratio of the generated video + description: 'Aspect ratio of the generated video' enum: - '16:9' - '9:16' @@ -23239,46 +23037,37 @@ components: - '21:9' - '9:21' example: '16:9' - type: string + 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 + 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 + description: 'Duration of the generated video in seconds' example: 8 minimum: 1 - type: integer + 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. + 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 + 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. + 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 + 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. + 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 + type: 'array' model: - type: string + type: 'string' prompt: - type: string + type: 'string' provider: - description: Provider-specific passthrough configuration + description: 'Provider-specific passthrough configuration' properties: options: allOf: @@ -23286,94 +23075,91 @@ components: - example: google-vertex: output_config: - effort: low - type: object + effort: 'low' + type: 'object' resolution: - description: Resolution of the generated video - enum: - - 480p - - 720p - - 1080p - - 1K - - 2K - - 4K - example: 720p - type: string + 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 + 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 + 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 + generation_id: 'gen-xyz789' + id: 'job-abc123' + polling_url: '/api/v1/videos/job-abc123' + status: 'pending' properties: error: - type: string + type: 'string' generation_id: - description: The generation ID associated with this video generation job. Available once the job has been processed. - type: string + description: 'The generation ID associated with this video generation job. Available once the job has been processed.' + type: 'string' id: - type: string + type: 'string' polling_url: - type: string + type: 'string' status: enum: - - pending - - in_progress - - completed - - failed - - cancelled - - expired - type: string + - 'pending' + - 'in_progress' + - 'completed' + - 'failed' + - 'cancelled' + - 'expired' + type: 'string' unsigned_urls: items: - type: string - type: array + type: 'string' + type: 'array' usage: $ref: '#/components/schemas/VideoGenerationUsage' required: - - id - - polling_url - - status - type: object + - 'id' + - 'polling_url' + - 'status' + type: 'object' VideoGenerationUsage: - description: Usage and cost information for the video generation. Available once the job has completed. + 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 + description: 'The cost of the video generation in USD.' + format: 'double' + type: + - 'number' + - 'null' is_byok: - description: Whether the request was made using a Bring Your Own Key configuration. - type: boolean - type: object + 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 + canonical_slug: 'google/veo-3.1' created: 1700000000 - description: Google video generation model + description: 'Google video generation model' generate_audio: true - id: google/veo-3.1 - name: Veo 3.1 + id: 'google/veo-3.1' + name: 'Veo 3.1' pricing_skus: generate: '0.50' seed: null @@ -23383,58 +23169,62 @@ components: - 5 - 8 supported_frame_images: - - first_frame - - last_frame + - 'first_frame' + - 'last_frame' supported_resolutions: - - 720p + - '720p' supported_sizes: null properties: allowed_passthrough_parameters: - description: List of parameters that are allowed to be passed through to the provider + description: 'List of parameters that are allowed to be passed through to the provider' items: - type: string - type: array + type: 'string' + type: 'array' canonical_slug: - description: Canonical slug for the model - example: openai/gpt-4 - type: string + description: 'Canonical slug for the model' + example: 'openai/gpt-4' + type: 'string' created: - description: Unix timestamp of when the model was created + description: 'Unix timestamp of when the model was created' example: 1692901234 - type: integer + 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 + 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 + description: 'Whether the model supports generating audio alongside video' + type: + - 'boolean' + - 'null' hugging_face_id: - description: Hugging Face model identifier, if applicable - example: microsoft/DialoGPT-medium - nullable: true - type: string + description: 'Hugging Face model identifier, if applicable' + example: 'microsoft/DialoGPT-medium' + type: + - 'string' + - 'null' id: - description: Unique identifier for the model - example: openai/gpt-4 - type: string + description: 'Unique identifier for the model' + example: 'openai/gpt-4' + type: 'string' name: - description: Display name of the model - example: GPT-4 - type: string + 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 + type: 'string' + description: 'Pricing SKUs with provider prefix stripped, values as strings' + type: + - 'object' + - 'null' seed: - description: Whether the model supports deterministic generation via seed parameter - nullable: true - type: boolean + description: 'Whether the model supports deterministic generation via seed parameter' + type: + - 'boolean' + - 'null' supported_aspect_ratios: - description: Supported output aspect ratios + description: 'Supported output aspect ratios' items: enum: - '16:9' @@ -23446,104 +23236,109 @@ components: - '2:3' - '21:9' - '9:21' - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' supported_durations: - description: Supported video durations in seconds + description: 'Supported video durations in seconds' items: - type: integer - nullable: true - type: array + type: 'integer' + type: + - 'array' + - 'null' supported_frame_images: - description: Supported frame image types (e.g. first_frame, last_frame) + description: 'Supported frame image types (e.g. first_frame, last_frame)' items: enum: - - first_frame - - last_frame - type: string - nullable: true - type: array + - 'first_frame' + - 'last_frame' + type: 'string' + type: + - 'array' + - 'null' supported_resolutions: - description: Supported output resolutions + description: 'Supported output resolutions' items: enum: - - 480p - - 720p - - 1080p - - 1K - - 2K - - 4K - type: string - nullable: true - type: array + - '480p' + - '720p' + - '1080p' + - '1K' + - '2K' + - '4K' + type: 'string' + type: + - 'array' + - 'null' supported_sizes: - description: Supported output sizes (width x height) + 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 + - '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' + type: + - 'array' + - 'null' + 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 + canonical_slug: 'google/veo-3.1' created: 1700000000 - description: Google video generation model + description: 'Google video generation model' generate_audio: true - id: google/veo-3.1 - name: Veo 3.1 + id: 'google/veo-3.1' + name: 'Veo 3.1' pricing_skus: generate: '0.50' seed: null @@ -23553,731 +23348,697 @@ components: - 5 - 8 supported_frame_images: - - first_frame - - last_frame + - 'first_frame' + - 'last_frame' supported_resolutions: - - 720p + - '720p' supported_sizes: null properties: data: items: $ref: '#/components/schemas/VideoModel' - type: array + type: 'array' required: - - data - type: object + - '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. + 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 + - 'auto' + - 'native' + - 'openrouter' + - 'exa' + - 'parallel' + - 'firecrawl' + example: 'auto' + type: 'string' WebFetchPlugin: example: - id: web-fetch + id: 'web-fetch' max_uses: 10 properties: allowed_domains: - description: Only fetch from these domains. + description: 'Only fetch from these domains.' items: - type: string - type: array + type: 'string' + type: 'array' blocked_domains: - description: Never fetch from these domains. + description: 'Never fetch from these domains.' items: - type: string - type: array + type: 'string' + type: 'array' id: enum: - - web-fetch - type: string + - 'web-fetch' + type: 'string' max_content_tokens: - description: Maximum content length in approximate tokens. Content exceeding this limit is truncated. - type: integer + 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 + description: 'Maximum number of web fetches per request. Once exceeded, the tool returns an error.' + type: 'integer' required: - - id - type: object + - '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 + type: 'openrouter:web_fetch' properties: parameters: $ref: '#/components/schemas/WebFetchServerToolConfig' type: enum: - - openrouter:web_fetch - type: string + - 'openrouter:web_fetch' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' WebFetchServerToolConfig: - description: Configuration for the openrouter:web_fetch server tool + 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. + description: 'Only fetch from these domains.' items: - type: string - type: array + type: 'string' + type: 'array' blocked_domains: - description: Never fetch from these domains. + description: 'Never fetch from these domains.' items: - type: string - type: array + 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. + description: 'Maximum content length in approximate tokens. Content exceeding this limit is truncated.' example: 100000 - type: integer + type: 'integer' max_uses: - description: Maximum number of web fetches per request. Once exceeded, the tool returns an error. + description: 'Maximum number of web fetches per request. Once exceeded, the tool returns an error.' example: 10 - type: integer - type: object + type: 'integer' + type: 'object' WebSearchCallCompletedEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesSearchCompleted' - properties: {} - type: object - description: Web search call completed + type: 'object' + description: 'Web search call completed' example: - item_id: ws-123 + item_id: 'ws-123' output_index: 0 sequence_number: 3 - type: response.web_search_call.completed + type: 'response.web_search_call.completed' WebSearchCallInProgressEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallInProgress' - properties: {} - type: object - description: Web search call in progress + type: 'object' + description: 'Web search call in progress' example: - item_id: ws-123 + item_id: 'ws-123' output_index: 0 sequence_number: 1 - type: response.web_search_call.in_progress + type: 'response.web_search_call.in_progress' WebSearchCallSearchingEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallSearching' - properties: {} - type: object - description: Web search call is searching + type: 'object' + description: 'Web search call is searching' example: - item_id: ws-123 + item_id: 'ws-123' output_index: 0 sequence_number: 2 - type: response.web_search_call.searching + type: 'response.web_search_call.searching' WebSearchConfig: example: max_results: 5 - search_context_size: medium + 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. + 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 + 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. + 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 + 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). + 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 + 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. + 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 + 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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchQualityLevel' user_location: $ref: '#/components/schemas/WebSearchUserLocationServerTool' - type: object + type: 'object' WebSearchDomainFilter: example: allowed_domains: - - example.com + - 'example.com' excluded_domains: - - spam.com - nullable: true + - 'spam.com' properties: allowed_domains: items: - type: string - nullable: true - type: array + type: 'string' + type: + - 'array' + - 'null' excluded_domains: items: - type: string - nullable: true - type: array - type: object + type: 'string' + type: + - 'array' + - 'null' + type: + - 'object' + - 'null' WebSearchEngine: - description: The search engine to use for web search. + description: 'The search engine to use for web search.' enum: - - native - - exa - - firecrawl - - parallel - - perplexity - example: exa - type: string + - '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). + 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 + - 'native' + - 'exa' + - 'parallel' + - 'firecrawl' + - 'perplexity' + - 'auto' + example: 'auto' + type: 'string' WebSearchPlugin: example: enabled: true - id: web + 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 + 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"). + 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 + - 'example.com' - '*.substack.com' - - openai.com/blog + - 'openai.com/blog' items: - type: string - type: array + type: 'string' + type: 'array' id: enum: - - web - type: string + - '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"). + 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 + - 'example.com' - '*.substack.com' - - openai.com/blog + - 'openai.com/blog' items: - type: string - type: array + type: 'string' + type: 'array' max_results: - type: integer + 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 + 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 + 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 + - 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 + - 'type' required: - - id - type: object + - 'id' + type: 'object' WebSearchServerTool: - description: Web search tool configuration (2025-08-26 version) + description: 'Web search tool configuration (2025-08-26 version)' example: - engine: auto + engine: 'auto' filters: allowed_domains: - - example.com - type: web_search_2025_08_26 + - '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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - - web_search_2025_08_26 - type: string + - 'web_search_2025_08_26' + type: 'string' user_location: $ref: '#/components/schemas/WebSearchUserLocation' required: - - type - type: object + - '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 + type: 'openrouter:web_search' properties: parameters: $ref: '#/components/schemas/WebSearchServerToolConfig' type: enum: - - openrouter:web_search - type: string + - 'openrouter:web_search' + type: 'string' required: - - type - type: object + - 'type' + type: 'object' WebSearchServerToolConfig: - description: Configuration for the openrouter:web_search server tool + description: 'Configuration for the openrouter:web_search server tool' example: max_results: 5 - search_context_size: medium + 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. + 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 + 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. + 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 + 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). + 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 + 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. + 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 + 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. + 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 + type: 'integer' search_context_size: $ref: '#/components/schemas/SearchQualityLevel' user_location: $ref: '#/components/schemas/WebSearchUserLocationServerTool' - type: object + type: 'object' WebSearchSource: example: - type: url - url: https://example.com/article + type: 'url' + url: 'https://example.com/article' properties: type: enum: - - url - type: string + - 'url' + type: 'string' url: - type: string + type: 'string' required: - - type - - url - type: object + - 'type' + - 'url' + type: 'object' WebSearchStatus: enum: - - completed - - searching - - in_progress - - failed - example: completed - type: string + - 'completed' + - 'searching' + - 'in_progress' + - 'failed' + example: 'completed' + type: 'string' WebSearchUserLocation: - description: User location information for web search + description: 'User location information for web search' example: - city: San Francisco - country: USA - region: California - timezone: America/Los_Angeles - type: approximate - nullable: true + city: 'San Francisco' + country: 'USA' + region: 'California' + timezone: 'America/Los_Angeles' + type: 'approximate' properties: city: - nullable: true - type: string + type: + - 'string' + - 'null' country: - nullable: true - type: string + type: + - 'string' + - 'null' region: - nullable: true - type: string + type: + - 'string' + - 'null' timezone: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - approximate - type: string - type: object + - 'approximate' + type: 'string' + type: + - 'object' + - 'null' WebSearchUserLocationServerTool: - description: Approximate user location for location-biased results. + description: 'Approximate user location for location-biased results.' example: - city: San Francisco - country: US - region: California - timezone: America/Los_Angeles - type: approximate + city: 'San Francisco' + country: 'US' + region: 'California' + timezone: 'America/Los_Angeles' + type: 'approximate' properties: city: - nullable: true - type: string + type: + - 'string' + - 'null' country: - nullable: true - type: string + type: + - 'string' + - 'null' region: - nullable: true - type: string + type: + - 'string' + - 'null' timezone: - nullable: true - type: string + type: + - 'string' + - 'null' type: enum: - - approximate - type: string - type: object + - '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 + 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 + name: 'Production' + slug: 'production' updated_at: '2025-08-24T15:45:00Z' properties: created_at: - description: ISO 8601 timestamp of when the workspace was created + description: 'ISO 8601 timestamp of when the workspace was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' created_by: - description: User ID of the workspace creator - example: user_abc123 - nullable: true - type: string + description: 'User ID of the workspace creator' + example: 'user_abc123' + type: + - 'string' + - 'null' default_image_model: - description: Default image model for this workspace - example: openai/dall-e-3 - nullable: true - type: string + description: 'Default image model for this workspace' + example: 'openai/dall-e-3' + type: + - 'string' + - 'null' default_provider_sort: - description: Default provider sort preference (price, throughput, latency, exacto) - example: price - nullable: true - type: string + description: 'Default provider sort preference (price, throughput, latency, exacto)' + example: 'price' + type: + - 'string' + - 'null' default_text_model: - description: Default text model for this workspace - example: openai/gpt-4o - nullable: true - type: string + description: 'Default text model for this workspace' + example: 'openai/gpt-4o' + type: + - 'string' + - 'null' description: - description: Description of the workspace - example: Production environment workspace - nullable: true - type: string + description: 'Description of the workspace' + example: 'Production environment workspace' + type: + - 'string' + - 'null' id: - description: Unique identifier for the workspace - example: 550e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + 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. + 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 + type: 'integer' + type: + - 'array' + - 'null' io_logging_sampling_rate: - description: Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged. + description: 'Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged.' example: 1 - format: double - type: number + format: 'double' + type: 'number' is_data_discount_logging_enabled: - description: Whether data discount logging is enabled for this workspace + description: 'Whether data discount logging is enabled for this workspace' example: true - type: boolean + type: 'boolean' is_observability_broadcast_enabled: - description: Whether broadcast is enabled for this workspace + description: 'Whether broadcast is enabled for this workspace' example: false - type: boolean + type: 'boolean' is_observability_io_logging_enabled: - description: Whether private logging is enabled for this workspace + description: 'Whether private logging is enabled for this workspace' example: false - type: boolean + type: 'boolean' name: - description: Name of the workspace - example: Production - type: string + description: 'Name of the workspace' + example: 'Production' + type: 'string' slug: - description: URL-friendly slug for the workspace - example: production - type: string + description: 'URL-friendly slug for the workspace' + example: 'production' + type: 'string' updated_at: - description: ISO 8601 timestamp of when the workspace was last updated + 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 + type: + - 'string' + - 'null' + 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 + id: '770e8400-e29b-41d4-a716-446655440000' limit_usd: 100 - reset_interval: monthly + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' properties: created_at: - description: ISO 8601 timestamp of when the budget was created + description: 'ISO 8601 timestamp of when the budget was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' id: - description: Unique identifier for the budget - example: 770e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + 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 + description: 'Spending limit in USD for this interval' example: 100 - format: double - type: number + format: 'double' + type: 'number' reset_interval: - description: Interval at which spend resets. Null means a lifetime (one-time) budget. + description: 'Interval at which spend resets. Null means a lifetime (one-time) budget.' enum: - - daily - - weekly - - monthly + - 'daily' + - 'weekly' + - 'monthly' - null - example: monthly - nullable: true - type: string + example: 'monthly' + type: + - 'string' + - 'null' updated_at: - description: ISO 8601 timestamp of when the budget was last updated + description: 'ISO 8601 timestamp of when the budget was last updated' example: '2025-08-24T15:45:00Z' - type: string + 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 + 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. + description: 'Budget reset interval. Use "lifetime" for a one-time budget that never resets.' enum: - - daily - - weekly - - monthly - - lifetime - example: monthly - type: string + - '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 + 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 + description: 'ISO 8601 timestamp of when the membership was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' id: - description: Unique identifier for the workspace membership - example: 660e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + 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 + description: 'Role of the member in the workspace' enum: - - admin - - member - example: member - type: string + - 'admin' + - 'member' + example: 'member' + type: 'string' user_id: - description: Clerk user ID of the member - example: user_abc123 - type: string + 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 + 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 + 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 + description: 'API key as bearer token in Authorization header' + scheme: 'bearer' + type: 'http' externalDocs: - description: OpenRouter Documentation - url: https://openrouter.ai/docs + 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 + 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 + 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 + 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 + - 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). + 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 + 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 + 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 + description: 'Filter by org member user ID. Only applicable for organization accounts.' + example: 'user_abc123' + type: 'string' responses: '200': content: @@ -24287,76 +24048,74 @@ paths: - 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 + 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 + provider_name: 'OpenAI' reasoning_tokens: 25 requests: 5 usage: 0.015 schema: $ref: '#/components/schemas/ActivityResponse' - description: Returns user activity data grouped by endpoint + description: 'Returns user activity data grouped by endpoint' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get user activity grouped by endpoint + description: 'Internal Server Error - Unexpected server error' + summary: 'Get user activity grouped by endpoint' tags: - - Analytics + - '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 + 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: @@ -24364,19 +24123,19 @@ paths: example: data: dimensions: - - display_label: Model - name: model + - display_label: 'Model' + name: 'model' granularities: - - display_label: Day - name: day + - display_label: 'Day' + name: 'day' metrics: - - display_format: number - display_label: Request Count + - display_format: 'number' + display_label: 'Request Count' is_rate: false - name: request_count + name: 'request_count' operators: - - name: eq - value_type: scalar + - name: 'eq' + value_type: 'scalar' schema: properties: data: @@ -24385,345 +24144,310 @@ paths: items: properties: display_label: - description: Human-readable label - example: Model - type: string + description: 'Human-readable label' + example: 'Model' + type: 'string' name: - description: Dimension identifier used in query requests - example: model - type: string + description: 'Dimension identifier used in query requests' + example: 'model' + type: 'string' required: - - name - - display_label - type: object - type: array + - 'name' + - 'display_label' + type: 'object' + type: 'array' granularities: items: properties: display_label: - description: Human-readable label - example: Day - type: string + description: 'Human-readable label' + example: 'Day' + type: 'string' name: - description: Granularity identifier + description: 'Granularity identifier' enum: - - minute - - hour - - day - - week - - month - example: day - type: string + - 'minute' + - 'hour' + - 'day' + - 'week' + - 'month' + example: 'day' + type: 'string' required: - - name - - display_label - type: object - type: array + - '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 $) + 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 + - 'number' + - 'currency' + - 'percent' + - 'latency' + - 'throughput' + example: 'number' + type: 'string' display_label: - description: Human-readable label - example: Request Count - type: string + description: 'Human-readable label' + example: 'Request Count' + type: 'string' is_rate: - description: Whether this metric is a rate/ratio (averaged, not summed) - type: boolean + 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 + description: 'Metric identifier used in query requests' + example: 'request_count' + type: 'string' required: - - name - - display_label - - is_rate - - display_format - type: object - type: array + - 'name' + - 'display_label' + - 'is_rate' + - 'display_format' + type: 'object' + type: 'array' operators: items: properties: name: - description: Operator identifier used in filter definitions + description: 'Operator identifier used in filter definitions' enum: - - eq - - neq - - in - - not_in - - gt - - gte - - lt - - lte - example: eq - type: string + - '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 + description: 'Whether the operator expects a single value or an array' enum: - - scalar - - array - type: string + - 'scalar' + - 'array' + type: 'string' required: - - name - - value_type - type: object - type: array + - 'name' + - 'value_type' + type: 'object' + type: 'array' required: - - metrics - - dimensions - - operators - - granularities - type: object + - 'metrics' + - 'dimensions' + - 'operators' + - 'granularities' + type: 'object' required: - - data - type: object - description: Returns analytics query metadata + - 'data' + type: 'object' + description: 'Returns analytics query metadata' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get available analytics metrics and dimensions + description: 'Internal Server Error - Unexpected server error' + summary: 'Get available analytics metrics and dimensions' tags: - - beta.Analytics + - '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 + 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 + - 'model' + granularity: 'day' limit: 100 metrics: - - request_count + - 'request_count' time_range: end: '2025-01-08T00:00:00Z' start: '2025-01-01T00:00:00Z' schema: properties: classifier_dimensions: - description: >- - Group results by custom classifier tags, breaking down metrics by the specified dimension values. - Requires an active classifier on the workspace. + description: 'Group results by custom classifier tags, breaking down metrics by the specified dimension values. Requires an active classifier on the workspace.' properties: classifier_id: - description: UUID of the classifier whose tags to group by. - example: 550e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + description: 'UUID of the classifier whose tags to group by.' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' dimension_names: items: - description: >- - Classifier dimension name (snake_case identifier). When exactly one name is provided, the - response uses it as the column key; with multiple names or none, the response uses - `clf_dimension_name`/`clf_dimension_value` columns. - example: department - type: string + description: 'Classifier dimension name (snake_case identifier). When exactly one name is provided, the response uses it as the column key; with multiple names or none, the response uses `clf_dimension_name`/`clf_dimension_value` columns.' + example: 'department' + type: 'string' maxItems: 10 - type: array + type: 'array' include_nulls: - description: >- - When true, also include generations that have no tag from this classifier. Defaults to false, - which returns only classified generations. - type: boolean + description: 'When true, also include generations that have no tag from this classifier. Defaults to false, which returns only classified generations.' + type: 'boolean' required: - - classifier_id - type: object + - 'classifier_id' + type: 'object' classifier_filters: - description: >- - Filter results to generations with specific classifier tag values. Can be combined with - classifier_dimensions (must use the same classifier_id) or used independently with standard - dimensions. + description: 'Filter results to generations with specific classifier tag values. Can be combined with classifier_dimensions (must use the same classifier_id) or used independently with standard dimensions.' properties: classifier_id: - description: >- - UUID of the classifier whose tags to filter by. Must match classifier_dimensions.classifier_id - when both are specified. - example: 550e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string + description: 'UUID of the classifier whose tags to filter by. Must match classifier_dimensions.classifier_id when both are specified.' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' filters: items: properties: field: - description: >- - Classifier dimension name to filter on (snake_case identifier, e.g. "department", - "work_type"). - example: department - type: string + description: 'Classifier dimension name to filter on (snake_case identifier, e.g. "department", "work_type").' + example: 'department' + type: 'string' operator: - description: >- - Filter operator. Only equality/set operators are supported (eq, neq, in, not_in) — ordered - comparisons are not available because classification values are strings. - example: eq - type: string + description: 'Filter operator. Only equality/set operators are supported (eq, neq, in, not_in) — ordered comparisons are not available because classification values are strings.' + example: 'eq' + type: 'string' value: anyOf: - - type: string - - format: double - type: number + - type: 'string' + - format: 'double' + type: 'number' - items: anyOf: - - type: string - - format: double - type: number - type: array - description: Filter value. Use a scalar (string or number) for eq/neq, or an array for in/not_in. - example: Engineering + - type: 'string' + - format: 'double' + type: 'number' + type: 'array' + description: 'Filter value. Use a scalar (string or number) for eq/neq, or an array for in/not_in.' + example: 'Engineering' required: - - field - - operator - - value - type: object + - 'field' + - 'operator' + - 'value' + type: 'object' maxItems: 10 minItems: 1 - type: array + type: 'array' required: - - classifier_id - - filters - type: object + - 'classifier_id' + - 'filters' + type: 'object' dimensions: items: - description: Dimension to group by (up to 2). Use the /meta endpoint for available dimensions. - example: model - type: string + description: 'Dimension to group by (up to 2). Use the /meta endpoint for available dimensions.' + example: 'model' + type: 'string' maxItems: 2 - type: array + type: 'array' filters: items: properties: field: - description: Dimension to filter on. Use the /meta endpoint for available dimensions. - example: model - type: string + description: 'Dimension to filter on. Use the /meta endpoint for available dimensions.' + example: 'model' + type: 'string' operator: - description: Filter operator - example: eq - type: string + description: 'Filter operator' + example: 'eq' + type: 'string' value: anyOf: - - type: string - - format: double - type: number + - 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. + - 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 + - 'field' + - 'operator' + - 'value' + type: 'object' maxItems: 20 - type: array + type: 'array' granularity: - description: Time granularity - example: day - type: string + 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. + 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 + 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 + 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 + description: 'Metric name' + example: 'request_count' + type: 'string' minItems: 1 - type: array + type: 'array' order_by: properties: direction: enum: - - asc - - desc - type: string + - 'asc' + - 'desc' + type: 'string' field: - description: Field to order by - example: request_count - type: string + description: 'Field to order by' + example: 'request_count' + type: 'string' required: - - field - - direction - type: object + - 'field' + - 'direction' + type: 'object' time_range: properties: end: - format: date-time - type: string + format: 'date-time' + type: 'string' start: - format: date-time - type: string + format: 'date-time' + type: 'string' required: - - start - - end - type: object + - 'start' + - 'end' + type: 'object' required: - - metrics - type: object + - 'metrics' + type: 'object' required: true responses: '200': @@ -24743,110 +24467,106 @@ paths: data: properties: cachedAt: - format: double - type: number + format: 'double' + type: 'number' data: items: - description: A row of analytics data with metric/dimension values - type: object - type: array + description: 'A row of analytics data with metric/dimension values' + type: 'object' + type: 'array' metadata: properties: query_time_ms: - format: double - type: number + format: 'double' + type: 'number' row_count: - type: integer + type: 'integer' truncated: - type: boolean + type: 'boolean' required: - - query_time_ms - - row_count - - truncated - type: object + - '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. + 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 + type: 'string' + type: 'array' required: - - data - - metadata - type: object + - 'data' + - 'metadata' + type: 'object' required: - - data - type: object - description: Analytics query results + - 'data' + type: 'object' + description: 'Analytics query results' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '408': content: application/json: example: error: code: 408 - message: Operation timed out. Please try again later. + message: 'Operation timed out. Please try again later.' schema: $ref: '#/components/schemas/RequestTimeoutResponse' - description: Request Timeout - Operation exceeded time limit + description: 'Request Timeout - Operation exceeded time limit' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Query analytics data + description: 'Internal Server Error - Unexpected server error' + summary: 'Query analytics data' tags: - - beta.Analytics + - '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 + 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: mistralai/voxtral-mini-tts-2603 - response_format: pcm + input: 'Hello world' + model: 'mistralai/voxtral-mini-tts-2603' + response_format: 'pcm' speed: 1 - voice: en_paul_neutral + voice: 'en_paul_neutral' schema: $ref: '#/components/schemas/SpeechRequest' required: true @@ -24855,186 +24575,176 @@ paths: 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 + 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 + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Create speech + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Create speech' tags: - - TTS + - 'TTS' x-speakeasy-max-method-params: 1 - x-speakeasy-name-override: createSpeech + x-speakeasy-name-override: 'createSpeech' /audio/transcriptions: post: - description: >- - Transcribes audio into text. Accepts base64-encoded audio input as JSON or an OpenAI-style multipart/form-data - file upload, and returns the transcribed text. - operationId: createAudioTranscriptions + description: 'Transcribes audio into text. Accepts base64-encoded audio input as JSON or an OpenAI-style multipart/form-data file upload, 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 + data: 'UklGRiQA...' + format: 'wav' + language: 'en' + model: 'openai/whisper-large-v3' schema: $ref: '#/components/schemas/STTRequest' multipart/form-data: example: - file: audio.wav - language: en - model: openai/whisper-large-v3 + file: 'audio.wav' + language: 'en' + model: 'openai/whisper-large-v3' schema: properties: file: - description: >- - The audio file to transcribe. The format is derived from the filename extension or the file part - content type. Max 25 MB; send larger files as base64 JSON via input_audio. - format: binary - type: string + description: 'The audio file to transcribe. The format is derived from the filename extension or the file part content type. Max 25 MB; send larger files as base64 JSON via input_audio.' + format: 'binary' + type: 'string' language: - description: The language of the input audio (ISO-639-1). - type: string + description: 'The language of the input audio (ISO-639-1).' + type: 'string' model: - description: The model to use for transcription. - type: string + description: 'The model to use for transcription.' + type: 'string' response_format: - description: >- - The response format. "json" (default) returns { text, usage }; "verbose_json" additionally returns - task, language, duration, and segment-level timestamps (OpenAI-compatible providers only). + description: 'The response format. "json" (default) returns { text, usage }; "verbose_json" additionally returns task, language, duration, and segment-level timestamps (OpenAI-compatible providers only).' enum: - - json - - verbose_json - type: string + - 'json' + - 'verbose_json' + type: 'string' temperature: - description: The sampling temperature. - type: number + description: 'The sampling temperature.' + type: 'number' timestamp_granularities[]: - description: >- - Timestamp detail levels to include when response_format is "verbose_json". "word" additionally - returns word-level timestamps in the words array. + description: 'Timestamp detail levels to include when response_format is "verbose_json". "word" additionally returns word-level timestamps in the words array.' items: enum: - - word - - segment - type: string - type: array + - 'word' + - 'segment' + type: 'string' + type: 'array' required: - - file - - model - type: object + - 'file' + - 'model' + type: 'object' required: true responses: '200': content: application/json: example: - text: Hello, this is a test of OpenAI speech-to-text transcription. + text: 'Hello, this is a test of OpenAI speech-to-text transcription.' usage: cost: 0.000508 input_tokens: 83 @@ -25043,289 +24753,290 @@ paths: total_tokens: 113 schema: $ref: '#/components/schemas/STTResponse' - description: Transcription result + description: 'Transcription result' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Create transcription + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Create transcription' tags: - - STT + - 'STT' x-speakeasy-max-method-params: 1 - x-speakeasy-name-override: createTranscription + 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 + 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 + 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 + 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 + 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 + description: 'The method used to generate the code challenge' enum: - - S256 - - plain + - 'S256' + - 'plain' - null - example: S256 - nullable: true - type: string + example: 'S256' + type: + - 'string' + - 'null' code_verifier: - description: The code verifier if code_challenge was used in the authorization request - example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk - type: string + description: 'The code verifier if code_challenge was used in the authorization request' + example: 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk' + type: 'string' required: - - code - type: object + - 'code' + type: 'object' required: true responses: '200': content: application/json: example: - key: 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 - user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah + key: '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' + user_id: 'user_2yOPcMpKoQhcd4bVgSMlELRaIah' schema: example: - key: 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 - user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah + 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 + 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 + description: 'User ID associated with the API key' + example: 'user_2yOPcMpKoQhcd4bVgSMlELRaIah' + type: + - 'string' + - 'null' required: - - key - - user_id - type: object - description: Successfully exchanged code for an API key + - '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 + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + 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 + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Exchange authorization code for API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Exchange authorization code for API key' tags: - - OAuth + - 'OAuth' /auth/keys/code: post: - description: Create an authorization code for the PKCE flow to generate a user-controlled API key - operationId: createAuthKeysCode + 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 + 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 + 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 + 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 + description: 'PKCE code challenge for enhanced security' + example: 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM' + type: 'string' code_challenge_method: - description: The method used to generate the code challenge + description: 'The method used to generate the code challenge' enum: - - S256 - - plain - example: S256 - type: string + - 'S256' + - 'plain' + example: 'S256' + type: 'string' expires_at: - description: Optional expiration time for the API key to be created + description: 'Optional expiration time for the API key to be created' example: '2027-12-31T23:59:59Z' - format: date-time - nullable: true - type: string + format: 'date-time' + type: + - 'string' + - 'null' key_label: - description: Optional custom label for the API key. Defaults to the app name if not provided. - example: My Custom Key + description: 'Optional custom label for the API key. Defaults to the app name if not provided.' + example: 'My Custom Key' maxLength: 100 - type: string + type: 'string' limit: - description: Credit limit for the API key to be created + description: 'Credit limit for the API key to be created' example: 100 - format: double - type: number + format: 'double' + type: 'number' spawn_agent: - description: Agent identifier for spawn telemetry - example: my-agent - type: string + 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 + 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. + description: 'Optional credit limit reset interval. When set, the credit limit resets on this interval.' enum: - - daily - - weekly - - monthly - example: monthly - type: string + - 'daily' + - 'weekly' + - 'monthly' + example: 'monthly' + type: 'string' workspace_id: - description: Optional workspace ID to associate the API key with - format: uuid - type: string + description: 'Optional workspace ID to associate the API key with' + format: 'uuid' + type: 'string' required: - - callback_url - type: object + - 'callback_url' + type: 'object' required: true responses: '200': @@ -25335,169 +25046,153 @@ paths: data: app_id: 12345 created_at: '2025-08-24T10:30:00Z' - id: auth_code_xyz789 + id: 'auth_code_xyz789' schema: example: data: app_id: 12345 created_at: '2025-08-24T10:30:00Z' - id: auth_code_xyz789 + id: 'auth_code_xyz789' properties: data: - description: Auth code data + description: 'Auth code data' example: app_id: 12345 created_at: '2025-08-24T10:30:00Z' - id: auth_code_xyz789 + id: 'auth_code_xyz789' properties: app_id: - description: The application ID associated with this auth code + description: 'The application ID associated with this auth code' example: 12345 - type: integer + type: 'integer' created_at: - description: ISO 8601 timestamp of when the auth code was created + description: 'ISO 8601 timestamp of when the auth code was created' example: '2025-08-24T10:30:00Z' - type: string + type: 'string' id: - description: The authorization code ID to use in the exchange request - example: auth_code_xyz789 - type: string + 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 + - 'id' + - 'app_id' + - 'created_at' + type: 'object' required: - - data - type: object - description: Successfully created authorization code + - 'data' + type: 'object' + description: 'Successfully created authorization code' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create authorization code + description: 'Internal Server Error - Unexpected server error' + summary: 'Create authorization code' tags: - - OAuth - x-speakeasy-name-override: createAuthCode + - '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 + 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 + - 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. + 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 + - '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. + 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 + - '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 + 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 + - '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 + 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. + description: 'Maximum number of items to return. When omitted, all matching results are returned.' example: 50 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -25506,13 +25201,13 @@ paths: data: - agentic_index: 58.3 coding_index: 65.8 - display_name: GPT-4o + display_name: 'GPT-4o' intelligence_index: 71.2 - model_permaslug: openai/gpt-4o + model_permaslug: 'openai/gpt-4o' pricing: completion: '0.00001' prompt: '0.0000025' - source: artificial-analysis + source: 'artificial-analysis' meta: as_of: '2026-06-03T12:00:00Z' citation: null @@ -25520,194 +25215,192 @@ paths: source: null source_url: null task_type: null - version: v1 + version: 'v1' schema: $ref: '#/components/schemas/UnifiedBenchmarksResponse' - description: Benchmark results filtered by the specified source and optional task type. + description: 'Benchmark results filtered by the specified source and optional task type.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List Benchmarks + description: 'Internal Server Error - Unexpected server error' + summary: 'List Benchmarks' tags: - - Benchmarks + - '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 + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + 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 + 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 + 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`). + 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 - - deepgram - - 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 - - krea - - liquid - - mancer - - mara - - meta - - 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 - - sail-research - - sakana - - sambanova - - seed - - siliconflow - - sourceful - - stepfun - - streamlake - - switchpoint - - tenstorrent - - together - - upstage - - venice - - wafer - - wandb - - xai - - xiaomi - - z-ai - example: openai - type: string + - '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' + - 'deepgram' + - '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' + - 'krea' + - 'liquid' + - 'mancer' + - 'mara' + - 'meta' + - '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' + - 'sail-research' + - 'sakana' + - 'sambanova' + - 'seed' + - 'siliconflow' + - 'sourceful' + - 'stepfun' + - 'streamlake' + - 'switchpoint' + - 'tencent' + - 'tenstorrent' + - 'together' + - 'upstage' + - 'venice' + - 'wafer' + - 'wandb' + - 'xai' + - 'xiaomi' + - 'z-ai' + example: 'openai' + type: 'string' responses: '200': content: @@ -25719,66 +25412,62 @@ paths: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' total_count: 1 schema: $ref: '#/components/schemas/ListBYOKKeysResponse' - description: List of BYOK credentials + description: 'List of BYOK credentials' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List BYOK provider credentials + description: 'Internal Server Error - Unexpected server error' + summary: 'List BYOK provider credentials' tags: - - BYOK - x-speakeasy-name-override: list + - 'BYOK' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + key: 'sk-proj-abc123...' + name: 'Production OpenAI Key' + provider: 'openai' schema: $ref: '#/components/schemas/CreateBYOKKeyRequest' required: true @@ -25793,77 +25482,74 @@ paths: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/CreateBYOKKeyResponse' - description: BYOK credential created successfully + description: 'BYOK credential created successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create a BYOK provider credential + description: 'Internal Server Error - Unexpected server error' + summary: 'Create a BYOK provider credential' tags: - - BYOK - x-speakeasy-name-override: create + - '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 + 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 + - 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 + description: 'The BYOK credential ID (UUID).' + example: '11111111-2222-3333-4444-555555555555' + format: 'uuid' + type: 'string' responses: '200': content: @@ -25872,56 +25558,54 @@ paths: deleted: true schema: $ref: '#/components/schemas/DeleteBYOKKeyResponse' - description: BYOK credential deleted successfully + description: 'BYOK credential deleted successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete a BYOK provider credential + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete a BYOK provider credential' tags: - - BYOK - x-speakeasy-name-override: delete + - '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 + 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 + - 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 + description: 'The BYOK credential ID (UUID).' + example: '11111111-2222-3333-4444-555555555555' + format: 'uuid' + type: 'string' responses: '200': content: @@ -25933,72 +25617,69 @@ paths: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Production OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Production OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/GetBYOKKeyResponse' - description: BYOK credential details + description: 'BYOK credential details' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get a BYOK provider credential + description: 'Internal Server Error - Unexpected server error' + summary: 'Get a BYOK provider credential' tags: - - BYOK - x-speakeasy-name-override: get + - '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 + 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 + - 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 + 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 + name: 'Updated OpenAI Key' schema: $ref: '#/components/schemas/UpdateBYOKKeyRequest' required: true @@ -26013,73 +25694,69 @@ paths: allowed_user_ids: null created_at: '2025-08-24T10:30:00Z' disabled: false - id: 11111111-2222-3333-4444-555555555555 + id: '11111111-2222-3333-4444-555555555555' is_fallback: false - label: sk-...AbCd - name: Updated OpenAI Key - provider: openai + label: 'sk-...AbCd' + name: 'Updated OpenAI Key' + provider: 'openai' sort_order: 0 - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/UpdateBYOKKeyResponse' - description: BYOK credential updated successfully + description: 'BYOK credential updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Update a BYOK provider credential + description: 'Internal Server Error - Unexpected server error' + summary: 'Update a BYOK provider credential' tags: - - BYOK - x-speakeasy-name-override: update + - '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 + 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 + - 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' @@ -26089,11 +25766,11 @@ paths: 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 + - 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' @@ -26104,15 +25781,16 @@ paths: application/json: example: choices: - - finish_reason: stop + - finish_reason: 'stop' index: 0 message: - content: The capital of France is Paris. - role: assistant + content: 'The capital of France is Paris.' + role: 'assistant' created: 1677652288 - id: chatcmpl-123 - model: openai/gpt-4 - object: chat.completion + id: 'chatcmpl-123' + model: 'openai/gpt-4' + object: 'chat.completion' + system_fingerprint: 'fp_44709d6fcb' usage: completion_tokens: 10 prompt_tokens: 25 @@ -26124,240 +25802,218 @@ paths: data: choices: - delta: - content: Hello - role: assistant + content: 'Hello' + role: 'assistant' finish_reason: null index: 0 created: 1677652288 - id: chatcmpl-123 - model: openai/gpt-4 - object: chat.completion.chunk + 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 + description: 'Successful chat completion response' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '403': content: application/json: examples: guardrail-blocked: - summary: Guardrail blocked the request + summary: 'Guardrail blocked the request' value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - - ignore all previous instructions + - 'ignore all previous instructions' openrouter_metadata: attempt: 1 endpoints: available: - - model: openai/gpt-4o - provider: OpenAI + - model: 'openai/gpt-4o' + provider: 'OpenAI' selected: false total: 1 is_byok: false pipeline: - data: - action: blocked + action: 'blocked' detected: true engines: - - regex + - 'regex' patterns: - - ignore all previous instructions - guardrail_id: grd_abc123 - guardrail_scope: api-key - name: regex_pi_detection + - '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 + type: 'guardrail' + region: 'iad' + requested: 'openai/gpt-4o' + strategy: 'direct' + summary: 'available=1' insufficient-permissions: - summary: Insufficient permissions + summary: 'Insufficient permissions' value: error: code: 403 - message: Only management keys can perform this operation + 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. + 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 + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '408': content: application/json: example: error: code: 408 - message: Operation timed out. Please try again later. + message: 'Operation timed out. Please try again later.' schema: $ref: '#/components/schemas/RequestTimeoutResponse' - description: Request Timeout - Operation exceeded time limit + description: 'Request Timeout - Operation exceeded time limit' '413': content: application/json: example: error: code: 413 - message: Request payload too large + message: 'Request payload too large' schema: $ref: '#/components/schemas/PayloadTooLargeResponse' - description: Payload Too Large - Request payload exceeds size limits + description: 'Payload Too Large - Request payload exceeds size limits' '422': content: application/json: example: error: code: 422 - message: Invalid argument + message: 'Invalid argument' schema: $ref: '#/components/schemas/UnprocessableEntityResponse' - description: Unprocessable Entity - Semantic validation failure + description: 'Unprocessable Entity - Semantic validation failure' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Create a chat completion + 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 + - '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 + description: "Returns the market-share breakdown of OpenRouter traffic by task classification\n(e.g. code generation, web search, summarization) over a trailing time window.\n\nEach classification reports its share of classified sampled requests (`usage_share`)\nand classified sampled token volume (`token_share`) as fractions between 0 and 1.\nThe unclassified `other` bucket is excluded. Absolute volumes are not exposed\nbecause the underlying data is sampled.\n\nEach classification also includes a `models` array listing the top models by\nrequest volume within that classification, with their within-tag usage and token shares.\n\nClassifications are grouped into macro-categories (Code, Data, Agent, General)\nwith aggregate shares provided for each.\n\nAuthenticate with any valid OpenRouter API key (same key used for inference).\nRate-limited to 30 requests/minute per key and 500 requests/day per account.\n\nWhen republishing or quoting this data, cite as:\n\"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 + - 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. + default: '7d' + description: 'Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported.' enum: - - 7d - example: 7d - type: string + - '7d' + example: '7d' + type: 'string' responses: '200': content: @@ -26368,73 +26024,71 @@ paths: classifications: - category_token_share: 0.48 category_usage_share: 0.51 - display_name: Code Generation - macro_category: code + display_name: 'Code Generation' + macro_category: 'code' models: - - id: openai/gpt-4.1-mini + - id: 'openai/gpt-4.1-mini' tag_token_share: 0.75 tag_usage_share: 0.55 - tag: code:general_impl + tag: 'code:general_impl' token_share: 0.31 usage_share: 0.23 macro_categories: - - key: code - label: Code + - 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. + description: 'Task classification market-share data for the requested trailing window.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Task classification market share + description: 'Internal Server Error - Unexpected server error' + summary: 'Task classification market share' tags: - - Classifications + - '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 + 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: @@ -26444,7 +26098,7 @@ paths: total_credits: 100.5 total_usage: 25.75 schema: - description: Total credits purchased and used + description: 'Total credits purchased and used' example: data: total_credits: 100.5 @@ -26456,234 +26110,178 @@ paths: total_usage: 25.75 properties: total_credits: - description: Total credits purchased + description: 'Total credits purchased' example: 100.5 - format: double - type: number + format: 'double' + type: 'number' total_usage: - description: Total credits used + description: 'Total credits used' example: 25.75 - format: double - type: number + format: 'double' + type: 'number' required: - - total_credits - - total_usage - type: object + - 'total_credits' + - 'total_usage' + type: 'object' required: - - data - type: object - description: Returns the total credits purchased and used + - 'data' + type: 'object' + description: 'Returns the total credits purchased and used' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get remaining credits + description: 'Internal Server Error - Unexpected server error' + summary: 'Get remaining credits' tags: - - Credits - x-speakeasy-name-override: getCredits + - '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 + 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. + 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. + 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 + description: 'Gone - Endpoint has been permanently removed or deprecated' security: [] - summary: Deprecated Coinbase Commerce charge endpoint + summary: 'Deprecated Coinbase Commerce charge endpoint' tags: - - Credits + - 'Credits' x-fern-ignore: true x-speakeasy-ignore: true - x-speakeasy-name-override: createCoinbaseCharge + 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 + description: "Returns the top public apps on OpenRouter ranked by token usage inside the requested\ndate window, matching the public apps marketplace on openrouter.ai/apps. Token totals\nare `prompt_tokens + completion_tokens`; hidden and private apps are excluded and\ntraffic from related app aliases is merged into the canonical visible app.\n\n`sort=popular` (default) ranks by total token volume inside the window.\n`sort=trending` ranks by absolute excess token growth: window volume minus the average\nvolume of the three equal-length periods immediately preceding the window. Apps with\nno excess growth are omitted, so `trending` may return fewer than `limit` rows.\n\nFilter with `category` (marketplace category group, e.g. `coding`) or `subcategory`\n(e.g. `cli-agent`). Ranks are re-numbered 1..N after filtering. Page with `offset` —\n`rank` stays absolute, so the first row of `offset=50` is `rank: 51`.\n\nAuthenticate with any valid OpenRouter API key (same key used for inference).\nRate-limited to 30 requests/minute per key and 500 requests/day per account.\n\nWhen republishing or quoting this dataset, OpenRouter must be cited as:\n\"Source: OpenRouter (openrouter.ai/apps), as of {as_of}.\"\n\nToken counts come from each upstream provider's own tokenizer, so a token attributed\nto one app is not directly comparable to a token attributed to another app whose\ntraffic 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 + - 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. + 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 + - '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. + 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 + - '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. + 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 + - '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`. + 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 + 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. + 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 + 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. + 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 + 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`. + 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 + type: + - 'integer' + - 'null' responses: '200': content: @@ -26691,12 +26289,12 @@ paths: example: data: - app_id: 12345 - app_name: Cline + app_name: 'Cline' rank: 1 total_requests: 4321 total_tokens: '12345678' - app_id: 67890 - app_name: Roo Code + app_name: 'Roo Code' rank: 2 total_requests: 2109 total_tokens: '9876543' @@ -26704,229 +26302,159 @@ paths: as_of: '2026-05-12T02:00:00Z' end_date: '2026-05-11' start_date: '2026-04-12' - version: v1 + 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. + 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 + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Top apps by token usage + description: 'Internal Server Error - Unexpected server error' + summary: 'Top apps by token usage' tags: - - Datasets + - 'Datasets' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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. - - Optional filters slice the dataset. `period` (`day`/`week`/`month`) sets the time - grain. `modality` and `context_bucket` narrow the exact dataset by output/input - modality (or tool-calling activity) and request context length. `category` and - `language_type` instead read a sampled, upsampled dataset whose `total_tokens` are - weekly-grain estimates — they cannot be combined with each other or with the exact - filters, and reject `period=day` with a 400. - - 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 + description: "Returns the top 50 public models per day by total token usage on OpenRouter, plus a\nsingle aggregated `other` row per day that sums every model outside that top 50.\nToken totals are `prompt_tokens + completion_tokens`, matching the public rankings\nchart on openrouter.ai/rankings.\n\nEach row is a distinct `(date, model_permaslug)` pair. The `other` row uses the\nreserved permaslug `other` and is always returned last within its date, so callers\ncan compute `top-50 traffic / total daily traffic` without a second request.\n\nOptional filters slice the dataset. `period` (`day`/`week`/`month`) sets the time\ngrain. `modality` and `context_bucket` narrow the exact dataset by output/input\nmodality (or tool-calling activity) and request context length. `category` and\n`language_type` instead read a sampled, upsampled dataset whose `total_tokens` are\nweekly-grain estimates — they cannot be combined with each other or with the exact\nfilters, and reject `period=day` with a 400.\n\nAuthenticate with any valid OpenRouter API key (same key used for inference).\nRate-limited to 30 requests/minute per key and 500 requests/day per account.\n\nWhen republishing or quoting this dataset, OpenRouter must be cited as:\n\"Source: OpenRouter (openrouter.ai/rankings), as of {as_of}.\"\n\nToken counts come from each upstream provider's own tokenizer (Anthropic counts\nare as reported by Anthropic, OpenAI counts are as reported by OpenAI, etc.), so\na token in one row is not directly comparable to a token in another row from a\ndifferent 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 + - 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`. + 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 + 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. + 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: >- - Time grain of each row. `day` (default) returns the per-UTC-day series; `week` buckets by ISO week start; - `month` buckets by month start. With `category` or `language_type` only `week` (default) and `month` are - available — `day` is rejected with a 400 because those datasets are aggregated weekly. For those sampled - datasets `period=month` buckets each week by its week-start month, so totals are approximate at month - boundaries. - in: query - name: period + pattern: '^\d{4}-\d{2}-\d{2}$' + type: 'string' + - description: 'Time grain of each row. `day` (default) returns the per-UTC-day series; `week` buckets by ISO week start; `month` buckets by month start. With `category` or `language_type` only `week` (default) and `month` are available — `day` is rejected with a 400 because those datasets are aggregated weekly. For those sampled datasets `period=month` buckets each week by its week-start month, so totals are approximate at month boundaries.' + in: 'query' + name: 'period' required: false schema: - description: >- - Time grain of each row. `day` (default) returns the per-UTC-day series; `week` buckets by ISO week start; - `month` buckets by month start. With `category` or `language_type` only `week` (default) and `month` are - available — `day` is rejected with a 400 because those datasets are aggregated weekly. For those sampled - datasets `period=month` buckets each week by its week-start month, so totals are approximate at month - boundaries. + description: 'Time grain of each row. `day` (default) returns the per-UTC-day series; `week` buckets by ISO week start; `month` buckets by month start. With `category` or `language_type` only `week` (default) and `month` are available — `day` is rejected with a 400 because those datasets are aggregated weekly. For those sampled datasets `period=month` buckets each week by its week-start month, so totals are approximate at month boundaries.' enum: - - day - - week - - month - example: day - type: string - - description: >- - Restrict to models for a modality surface: `text` / `image_output` match output modality, `image` / `audio` - match input modality, and `tool_calling` keeps only rows that recorded at least one tool call. Exact dataset - — cannot be combined with `category` or `language_type`. - in: query - name: modality + - 'day' + - 'week' + - 'month' + example: 'day' + type: 'string' + - description: 'Restrict to models for a modality surface: `text` / `image_output` match output modality, `image` / `audio` match input modality, and `tool_calling` keeps only rows that recorded at least one tool call. Exact dataset — cannot be combined with `category` or `language_type`.' + in: 'query' + name: 'modality' required: false schema: - description: >- - Restrict to models for a modality surface: `text` / `image_output` match output modality, `image` / - `audio` match input modality, and `tool_calling` keeps only rows that recorded at least one tool call. - Exact dataset — cannot be combined with `category` or `language_type`. + description: 'Restrict to models for a modality surface: `text` / `image_output` match output modality, `image` / `audio` match input modality, and `tool_calling` keeps only rows that recorded at least one tool call. Exact dataset — cannot be combined with `category` or `language_type`.' enum: - - text - - image - - image_output - - audio - - tool_calling - example: text - type: string - - description: >- - Restrict to requests whose context length falls in this bucket (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact - dataset — cannot be combined with `category` or `language_type`. - in: query - name: context_bucket + - 'text' + - 'image' + - 'image_output' + - 'audio' + - 'tool_calling' + example: 'text' + type: 'string' + - description: 'Restrict to requests whose context length falls in this bucket (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact dataset — cannot be combined with `category` or `language_type`.' + in: 'query' + name: 'context_bucket' required: false schema: - description: >- - Restrict to requests whose context length falls in this bucket (`1K`, `10K`, `100K`, `1M`, or `10M`). - Exact dataset — cannot be combined with `category` or `language_type`. + description: 'Restrict to requests whose context length falls in this bucket (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact dataset — cannot be combined with `category` or `language_type`.' enum: - - 1K - - 10K - - 100K - - 1M - - 10M - example: 100K - type: string - - description: >- - Restrict to a use-case category (e.g. `programming`, `roleplay`). Sourced from a sampled, upsampled dataset, - so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic - past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `language_type`. - in: query - name: category + - '1K' + - '10K' + - '100K' + - '1M' + - '10M' + example: '100K' + type: 'string' + - description: 'Restrict to a use-case category (e.g. `programming`, `roleplay`). Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `language_type`.' + in: 'query' + name: 'category' required: false schema: - description: >- - Restrict to a use-case category (e.g. `programming`, `roleplay`). Sourced from a sampled, upsampled - dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include - traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `language_type`. + description: 'Restrict to a use-case category (e.g. `programming`, `roleplay`). Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `language_type`.' enum: - - programming - - roleplay - - marketing - - marketing/seo - - technology - - science - - translation - - legal - - finance - - health - - trivia - - academia - example: programming - type: string - - description: >- - Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled - dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include - traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `category`. - in: query - name: language_type + - 'programming' + - 'roleplay' + - 'marketing' + - 'marketing/seo' + - 'technology' + - 'science' + - 'translation' + - 'legal' + - 'finance' + - 'health' + - 'trivia' + - 'academia' + example: 'programming' + type: 'string' + - description: 'Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `category`.' + in: 'query' + name: 'language_type' required: false schema: - description: >- - Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled - dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include - traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `category`. + description: 'Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `category`.' enum: - - natural - - programming - example: natural - type: string + - 'natural' + - 'programming' + example: 'natural' + type: 'string' responses: '200': content: @@ -26934,108 +26462,105 @@ paths: example: data: - date: '2026-05-11' - model_permaslug: openai/gpt-4o-2024-05-13 + model_permaslug: 'openai/gpt-4o-2024-05-13' total_tokens: '12345678' - date: '2026-05-11' - model_permaslug: anthropic/claude-3.5-sonnet-20241022 + model_permaslug: 'anthropic/claude-3.5-sonnet-20241022' total_tokens: '9876543' - date: '2026-05-11' - model_permaslug: other + 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 + 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. + 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 + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Daily token totals for top 50 models + description: 'Internal Server Error - Unexpected server error' + summary: 'Daily token totals for top 50 models' tags: - - Datasets + - 'Datasets' /embeddings: post: - description: Submits an embedding request to the embeddings router - operationId: createEmbeddings + description: 'Submits an embedding request to the embeddings router' + operationId: 'createEmbeddings' requestBody: content: application/json: schema: - description: Embeddings request input + description: 'Embeddings request input' example: dimensions: 1536 - input: The quick brown fox jumps over the lazy dog - model: openai/text-embedding-3-small + 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 + description: 'The number of dimensions for the output embeddings' example: 1536 minimum: 1 - type: integer + type: 'integer' encoding_format: - description: The format of the output embeddings + description: 'The format of the output embeddings' enum: - - float - - base64 - example: float - type: string + - 'float' + - 'base64' + example: 'float' + type: 'string' input: anyOf: - - type: string + - type: 'string' - items: - type: string - type: array + type: 'string' + type: 'array' - items: - type: number - type: array + type: 'number' + type: 'array' - items: items: - type: number - type: array - type: array + type: 'number' + type: 'array' + type: 'array' - items: properties: content: @@ -27043,68 +26568,68 @@ paths: oneOf: - properties: text: - type: string + type: 'string' type: enum: - - text - type: string + - 'text' + type: 'string' required: - - type - - text - type: object + - 'type' + - 'text' + type: 'object' - properties: image_url: properties: url: - type: string + type: 'string' required: - - url - type: object + - 'url' + type: 'object' type: enum: - - image_url - type: string + - 'image_url' + type: 'string' required: - - type - - image_url - type: object + - 'type' + - 'image_url' + type: 'object' - $ref: '#/components/schemas/ContentPartInputAudio' - $ref: '#/components/schemas/ContentPartInputVideo' - $ref: '#/components/schemas/ContentPartInputFile' - type: array + 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 + - '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 + 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 + 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. + - description: 'Provider routing preferences for the request.' user: - description: A unique identifier for the end-user - example: user-1234 - type: string + description: 'A unique identifier for the end-user' + example: 'user-1234' + type: 'string' required: - - input - - model - type: object + - 'input' + - 'model' + type: 'object' required: true responses: '200': content: application/json: schema: - description: Embeddings response containing embedding vectors + description: 'Embeddings response containing embedding vectors' example: data: - embedding: @@ -27112,269 +26637,261 @@ paths: - -0.009327292 - 0.015797347 index: 0 - object: embedding - model: openai/text-embedding-3-small - object: list + object: 'embedding' + model: 'openai/text-embedding-3-small' + object: 'list' usage: prompt_tokens: 8 total_tokens: 8 properties: data: - description: List of embedding objects + description: 'List of embedding objects' example: - embedding: - 0.0023064255 - -0.009327292 - 0.015797347 index: 0 - object: embedding + object: 'embedding' items: - description: A single embedding object + description: 'A single embedding object' example: embedding: - 0.0023064255 - -0.009327292 - 0.015797347 index: 0 - object: embedding + object: 'embedding' properties: embedding: anyOf: - items: - type: number - type: array - - type: string - description: Embedding vector as an array of floats or a base64 string + 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 + description: 'Index of the embedding in the input list' example: 0 - type: integer + type: 'integer' object: enum: - - embedding - type: string + - 'embedding' + type: 'string' required: - - object - - embedding - type: object - type: array + - 'object' + - 'embedding' + type: 'object' + type: 'array' id: - description: Unique identifier for the embeddings response - example: embd-1234567890 - type: string + 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 + description: 'The model used for embeddings' + example: 'openai/text-embedding-3-small' + type: 'string' object: enum: - - list - type: string + - 'list' + type: 'string' usage: - description: Token usage statistics + description: 'Token usage statistics' example: prompt_tokens: 8 total_tokens: 8 properties: cost: - description: Cost of the request in credits + description: 'Cost of the request in credits' example: 0.0001 - format: double - type: number + format: 'double' + 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 + description: 'Whether a request was made using a Bring Your Own Key configuration' + type: 'boolean' prompt_tokens: - description: Number of tokens in the input + description: 'Number of tokens in the input' example: 8 - type: integer + 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. + 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 + description: 'Number of audio tokens in the input' + type: 'integer' file_tokens: - description: Number of file/document tokens in the input - type: integer + description: 'Number of file/document tokens in the input' + type: 'integer' image_tokens: - description: Number of image tokens in the input + description: 'Number of image tokens in the input' example: 258 - type: integer + type: 'integer' text_tokens: - description: Number of text tokens in the input + description: 'Number of text tokens in the input' example: 8 - type: integer + type: 'integer' video_tokens: - description: Number of video tokens in the input - type: integer - type: object + description: 'Number of video tokens in the input' + type: 'integer' + type: 'object' total_tokens: - description: Total number of tokens used + description: 'Total number of tokens used' example: 8 - type: integer + type: 'integer' required: - - prompt_tokens - - total_tokens - type: object + - 'prompt_tokens' + - 'total_tokens' + type: 'object' required: - - object - - data - - model - type: object + - 'object' + - 'data' + - 'model' + type: 'object' text/event-stream: example: 'data: [DONE]' schema: - description: Not used for embeddings - embeddings do not support streaming - type: string + description: 'Not used for embeddings - embeddings do not support streaming' + type: 'string' x-speakeasy-sse-sentinel: '[DONE]' - description: Embedding response + description: 'Embedding response' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Submit an embedding request + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Submit an embedding request' tags: - - Embeddings - x-speakeasy-name-override: generate + - 'Embeddings' + x-speakeasy-name-override: 'generate' /embeddings/models: get: - description: Returns a list of all available embeddings models and their properties - operationId: listEmbeddingsModels + description: 'Returns a list of all available embeddings models and their properties' + operationId: 'listEmbeddingsModels' parameters: - - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned - in: query - name: offset + - description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: >- - Number of records to skip for pagination. When both offset and limit are omitted, the full list is - returned + description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' example: 0 minimum: 0 - nullable: true - type: integer - - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned - in: query - name: limit + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'limit' required: false schema: default: 500 - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned + description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' example: 500 maximum: 1000 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -27383,23 +26900,23 @@ paths: data: - architecture: input_modalities: - - text + - 'text' instruct_type: null - modality: text->text + modality: 'text->text' output_modalities: - - embeddings - tokenizer: GPT - canonical_slug: openai/text-embedding-3-small + - '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. + description: 'OpenAI text embedding model optimized for performance.' expiration_date: null - id: openai/text-embedding-3-small + 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 + details: '/api/v1/models/openai/text-embedding-3-small/endpoints' + name: 'Text Embedding 3 Small' per_request_limits: null pricing: completion: '0' @@ -27414,45 +26931,45 @@ paths: max_completion_tokens: null schema: $ref: '#/components/schemas/ModelsListResponse' - description: Returns a list of embeddings models + description: 'Returns a list of embeddings models' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all embeddings models + description: 'Internal Server Error - Unexpected server error' + summary: 'List all embeddings models' tags: - - Embeddings - x-speakeasy-name-override: listModels + - 'Embeddings' + x-speakeasy-name-override: 'listModels' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /endpoints/zdr: get: - operationId: listEndpointsZdr + operationId: 'listEndpointsZdr' responses: '200': content: @@ -27467,23 +26984,23 @@ paths: p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 - model_id: openai/gpt-4 - model_name: GPT-4 + 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 + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supports_implicit_caching: true - tag: openai + tag: 'openai' throughput_last_30m: p50: 45.2 p75: 38.5 @@ -27503,23 +27020,23 @@ paths: p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 - model_id: openai/gpt-4 - model_name: GPT-4 + 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 + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supports_implicit_caching: true - tag: openai + tag: 'openai' throughput_last_30m: p50: 45.2 p75: 38.5 @@ -27532,57 +27049,57 @@ paths: data: items: $ref: '#/components/schemas/PublicEndpoint' - type: array + type: 'array' required: - - data - type: object - description: Returns a list of endpoints + - 'data' + type: 'object' + description: 'Returns a list of endpoints' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + 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 + description: 'Internal Server Error - Unexpected server error' + summary: 'Preview the impact of ZDR on the available endpoints' tags: - - Endpoints - x-speakeasy-name-override: listZdrEndpoints + - 'Endpoints' + x-speakeasy-name-override: 'listZdrEndpoints' /files: get: - description: Lists files belonging to the workspace of the authenticating API key. - operationId: listFiles + 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 + - 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). + 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 + 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 + 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 + 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: @@ -27592,98 +27109,96 @@ paths: data: - created_at: '2025-01-01T00:00:00Z' downloadable: false - filename: document.pdf - id: file_011CNha8iCJcU1wXNR6q4V8w - mime_type: application/pdf + filename: 'document.pdf' + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + mime_type: 'application/pdf' size_bytes: 1024000 - type: file - first_id: file_011CNha8iCJcU1wXNR6q4V8w + type: 'file' + first_id: 'file_011CNha8iCJcU1wXNR6q4V8w' has_more: false - last_id: file_011CNha8iCJcU1wXNR6q4V8w + last_id: 'file_011CNha8iCJcU1wXNR6q4V8w' schema: $ref: '#/components/schemas/FileListResponse' - description: A page of files. + description: 'A page of files.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List files + description: 'Internal Server Error - Unexpected server error' + summary: 'List files' tags: - - Files - x-speakeasy-name-override: list + - 'Files' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: cursor - type: cursor + - in: 'parameters' + name: 'cursor' + type: 'cursor' outputs: - nextCursor: $.cursor - results: $.data - type: cursor + 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 + 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 + - 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 + 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 + file: 'document.pdf' schema: properties: file: - format: binary - type: string + format: 'binary' + type: 'string' required: - - file - type: object + - 'file' + type: 'object' required: true responses: '200': @@ -27692,171 +27207,171 @@ paths: example: created_at: '2025-01-01T00:00:00Z' downloadable: false - filename: document.pdf - id: file_011CNha8iCJcU1wXNR6q4V8w - mime_type: application/pdf + filename: 'document.pdf' + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + mime_type: 'application/pdf' size_bytes: 1024000 - type: file + type: 'file' schema: $ref: '#/components/schemas/FileMetadata' - description: The uploaded file metadata. + description: 'The uploaded file metadata.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '413': content: application/json: example: error: code: 413 - message: Request payload too large + message: 'Request payload too large' schema: $ref: '#/components/schemas/PayloadTooLargeResponse' - description: Payload Too Large - Request payload exceeds size limits + description: 'Payload Too Large - Request payload exceeds size limits' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Upload a file + description: 'Internal Server Error - Unexpected server error' + summary: 'Upload a file' tags: - - Files - x-speakeasy-name-override: upload + - 'Files' + x-speakeasy-name-override: 'upload' /files/{file_id}: delete: - description: Deletes a file owned by the requesting workspace. Deletion is irreversible. - operationId: deleteFile + description: 'Deletes a file owned by the requesting workspace. Deletion is irreversible.' + operationId: 'deleteFile' parameters: - - in: path - name: file_id + - 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 + 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 + 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 + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + type: 'file_deleted' schema: $ref: '#/components/schemas/FileDeleteResponse' - description: The file was deleted. + description: 'The file was deleted.' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete a file + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete a file' tags: - - Files - x-speakeasy-name-override: delete + - 'Files' + x-speakeasy-name-override: 'delete' get: - description: Retrieves metadata for a single file owned by the requesting workspace. - operationId: getFileMetadata + description: 'Retrieves metadata for a single file owned by the requesting workspace.' + operationId: 'getFileMetadata' parameters: - - in: path - name: file_id + - 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 + 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 + 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: @@ -27864,297 +27379,302 @@ paths: example: created_at: '2025-01-01T00:00:00Z' downloadable: false - filename: document.pdf - id: file_011CNha8iCJcU1wXNR6q4V8w - mime_type: application/pdf + filename: 'document.pdf' + id: 'file_011CNha8iCJcU1wXNR6q4V8w' + mime_type: 'application/pdf' size_bytes: 1024000 - type: file + type: 'file' schema: $ref: '#/components/schemas/FileMetadata' - description: The file metadata. + description: 'The file metadata.' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get file metadata + description: 'Internal Server Error - Unexpected server error' + summary: 'Get file metadata' tags: - - Files - x-speakeasy-name-override: retrieve + - '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 + 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 + - 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 + 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 + 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 + example: 'binary file contents' schema: - format: binary - type: string - description: The raw file content. + format: 'binary' + type: 'string' + description: 'The raw file content.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Download file content + description: 'Internal Server Error - Unexpected server error' + summary: 'Download file content' tags: - - Files - x-speakeasy-name-override: download + - 'Files' + x-speakeasy-name-override: 'download' /generation: get: - operationId: getGeneration + operationId: 'getGeneration' parameters: - - description: The generation ID - in: query - name: id + - description: 'The generation ID' + in: 'query' + name: 'id' required: true schema: - description: The generation ID - example: gen-1234567890 + description: 'The generation ID' + example: 'gen-1234567890' minLength: 1 - type: string + type: 'string' responses: '200': content: application/json: example: data: - api_type: completions + 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 + data_region: 'global' + external_user: 'user-123' + finish_reason: 'stop' generation_time: 1200 - http_referer: https://openrouter.ai/ - id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + http_referer: 'https://openrouter.ai/' + id: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' is_byok: false latency: 1250 - model: sao10k/l3-stheno-8b + model: 'sao10k/l3-stheno-8b' moderation_latency: 50 - native_finish_reason: stop + 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_fetches: 0 num_input_audio_prompt: 0 num_media_completion: 0 num_media_prompt: 1 num_search_results: 5 - origin: https://openrouter.ai/ - provider_name: Infermatic + origin: 'https://openrouter.ai/' + preset_id: 'a9e8d400-592a-494f-908c-375efa66cafd' + provider_name: 'Infermatic' provider_responses: null - request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT - router: openrouter/auto + 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_id: 'chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946' upstream_inference_cost: 0.0012 usage: 0.0015 - user_agent: Mozilla/5.0 + user_agent: 'Mozilla/5.0' + web_search_engine: 'exa' schema: $ref: '#/components/schemas/GenerationResponse' - description: Returns the request metadata for this generation + description: 'Returns the request metadata for this generation' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Get request & usage metadata for a generation + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Get request & usage metadata for a generation' tags: - - Generations + - 'Generations' /generation/content: get: - operationId: listGenerationContent + operationId: 'listGenerationContent' parameters: - - description: The generation ID - in: query - name: id + - description: 'The generation ID' + in: 'query' + name: 'id' required: true schema: - description: The generation ID - example: gen-1234567890 + description: 'The generation ID' + example: 'gen-1234567890' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -28163,110 +27683,108 @@ paths: data: input: messages: - - content: What is the meaning of life? - role: user + - content: 'What is the meaning of life?' + role: 'user' output: - completion: The meaning of life is a philosophical question... + completion: 'The meaning of life is a philosophical question...' reasoning: null schema: $ref: '#/components/schemas/GenerationContentResponse' - description: Returns the stored prompt and completion content + description: 'Returns the stored prompt and completion content' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + 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 + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Get stored prompt and completion content for a generation' tags: - - Generations + - 'Generations' /generation/feedback: post: - description: >- - Submit structured feedback on a generation the authenticated user made. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - operationId: submitGenerationFeedback + description: 'Submit structured feedback on a generation the authenticated user made. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + operationId: 'submitGenerationFeedback' requestBody: content: application/json: example: - category: incorrect_response - comment: The model repeated the same paragraph three times. - generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + category: 'incorrect_response' + comment: 'The model repeated the same paragraph three times.' + generation_id: 'gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG' schema: $ref: '#/components/schemas/SubmitGenerationFeedbackRequest' required: true @@ -28279,99 +27797,98 @@ paths: success: true schema: $ref: '#/components/schemas/SubmitGenerationFeedbackResponse' - description: Feedback recorded successfully + description: 'Feedback recorded successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Submit feedback for a generation + description: 'Internal Server Error - Unexpected server error' + summary: 'Submit feedback for a generation' tags: - - Generations - x-speakeasy-name-override: submitFeedback + - 'Generations' + x-speakeasy-name-override: 'submitFeedback' /guardrails: get: - description: >- - List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) - required. - operationId: listGuardrails + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + 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 + 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 + 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: @@ -28380,74 +27897,72 @@ paths: data: - allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' created_at: '2025-08-24T10:30:00Z' - description: Guardrail for production environment + description: 'Guardrail for production environment' enforce_zdr: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 100 - name: Production Guardrail - reset_interval: monthly + name: 'Production Guardrail' + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' total_count: 1 schema: $ref: '#/components/schemas/ListGuardrailsResponse' - description: List of guardrails + description: 'List of guardrails' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List guardrails + description: 'Internal Server Error - Unexpected server error' + summary: 'List guardrails' tags: - - Guardrails - x-speakeasy-name-override: list + - 'Guardrails' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - 'openai' + - 'anthropic' + - 'deepseek' + description: 'A guardrail for limiting API usage' enforce_zdr_anthropic: true enforce_zdr_google: false enforce_zdr_openai: true @@ -28456,8 +27971,8 @@ paths: ignored_models: null ignored_providers: null limit_usd: 50 - name: My New Guardrail - reset_interval: monthly + name: 'My New Guardrail' + reset_interval: 'monthly' schema: $ref: '#/components/schemas/CreateGuardrailRequest' required: true @@ -28469,86 +27984,86 @@ paths: data: allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' created_at: '2025-08-24T10:30:00Z' - description: A guardrail for limiting API usage + 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 enforce_zdr_xai: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 50 - name: My New Guardrail - reset_interval: monthly + name: 'My New Guardrail' + reset_interval: 'monthly' updated_at: null - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: $ref: '#/components/schemas/CreateGuardrailResponse' - description: Guardrail created successfully + description: 'Guardrail created successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Create a guardrail' tags: - - Guardrails - x-speakeasy-name-override: create + - '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 + 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 + - 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 + description: 'The unique identifier of the guardrail to delete' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' responses: '200': content: @@ -28557,54 +28072,54 @@ paths: deleted: true schema: $ref: '#/components/schemas/DeleteGuardrailResponse' - description: Guardrail deleted successfully + description: 'Guardrail deleted successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete a guardrail' tags: - - Guardrails - x-speakeasy-name-override: delete + - '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 + 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 + - 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 + description: 'The unique identifier of the guardrail to retrieve' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' responses: '200': content: @@ -28613,80 +28128,78 @@ paths: data: allowed_models: null allowed_providers: - - openai - - anthropic - - google + - 'openai' + - 'anthropic' + - 'google' created_at: '2025-08-24T10:30:00Z' - description: Guardrail for production environment + description: 'Guardrail for production environment' enforce_zdr: false - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 100 - name: Production Guardrail - reset_interval: monthly + name: 'Production Guardrail' + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: $ref: '#/components/schemas/GetGuardrailResponse' - description: Guardrail details + description: 'Guardrail details' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Get a guardrail' tags: - - Guardrails - x-speakeasy-name-override: get + - '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 + 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 + - 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 + 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 + description: 'Updated description' limit_usd: 75 - name: Updated Guardrail Name - reset_interval: weekly + name: 'Updated Guardrail Name' + reset_interval: 'weekly' schema: $ref: '#/components/schemas/UpdateGuardrailRequest' required: true @@ -28698,191 +28211,188 @@ paths: data: allowed_models: null allowed_providers: - - openai + - 'openai' created_at: '2025-08-24T10:30:00Z' - description: Updated description + description: 'Updated description' enforce_zdr: null enforce_zdr_anthropic: true enforce_zdr_google: true enforce_zdr_openai: true enforce_zdr_other: true enforce_zdr_xai: true - id: 550e8400-e29b-41d4-a716-446655440000 + id: '550e8400-e29b-41d4-a716-446655440000' ignored_models: null ignored_providers: null limit_usd: 75 - name: Updated Guardrail Name - reset_interval: weekly + name: 'Updated Guardrail Name' + reset_interval: 'weekly' updated_at: '2025-08-24T16:00:00Z' - workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: $ref: '#/components/schemas/UpdateGuardrailResponse' - description: Guardrail updated successfully + description: 'Guardrail updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Update a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Update a guardrail' tags: - - Guardrails - x-speakeasy-name-override: update + - '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 + 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 + - 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 + 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: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: application/json: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of key assignments' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List key assignments for a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'List key assignments for a guardrail' tags: - - Guardrails - x-speakeasy-name-override: listGuardrailKeyAssignments + - 'Guardrails' + x-speakeasy-name-override: 'listGuardrailKeyAssignments' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - 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: 'The unique identifier of the guardrail' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' requestBody: content: application/json: example: key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' schema: $ref: '#/components/schemas/BulkAssignKeysRequest' required: true @@ -28894,73 +28404,71 @@ paths: assigned_count: 3 schema: $ref: '#/components/schemas/BulkAssignKeysResponse' - description: Assignment result + description: 'Assignment result' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk assign keys to a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk assign keys to a guardrail' tags: - - Guardrails - x-speakeasy-name-override: bulkAssignKeys + - '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 + 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 + - 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: 'The unique identifier of the guardrail' + example: '550e8400-e29b-41d4-a716-446655440000' + format: 'uuid' + type: 'string' requestBody: content: application/json: example: key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + - 'c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93' schema: $ref: '#/components/schemas/BulkUnassignKeysRequest' required: true @@ -28972,172 +28480,169 @@ paths: unassigned_count: 3 schema: $ref: '#/components/schemas/BulkUnassignKeysResponse' - description: Unassignment result + description: 'Unassignment result' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk unassign keys from a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk unassign keys from a guardrail' tags: - - Guardrails - x-speakeasy-name-override: bulkUnassignKeys + - '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 + 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 + - 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 + 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: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: application/json: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of member assignments' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List member assignments for a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'List member assignments for a guardrail' tags: - - Guardrails - x-speakeasy-name-override: listGuardrailMemberAssignments + - 'Guardrails' + x-speakeasy-name-override: 'listGuardrailMemberAssignments' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - 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: '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 + - 'user_abc123' + - 'user_def456' schema: $ref: '#/components/schemas/BulkAssignMembersRequest' required: true @@ -29149,74 +28654,72 @@ paths: assigned_count: 2 schema: $ref: '#/components/schemas/BulkAssignMembersResponse' - description: Assignment result + description: 'Assignment result' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk assign members to a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk assign members to a guardrail' tags: - - Guardrails - x-speakeasy-name-override: bulkAssignMembers + - '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 + 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 + - 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: '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 + - 'user_abc123' + - 'user_def456' schema: $ref: '#/components/schemas/BulkUnassignMembersRequest' required: true @@ -29228,222 +28731,220 @@ paths: unassigned_count: 2 schema: $ref: '#/components/schemas/BulkUnassignMembersResponse' - description: Unassignment result + description: 'Unassignment result' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk unassign members from a guardrail + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk unassign members from a guardrail' tags: - - Guardrails - x-speakeasy-name-override: bulkUnassignMembers + - '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 + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: application/json: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of key assignments' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all key assignments + description: 'Internal Server Error - Unexpected server error' + summary: 'List all key assignments' tags: - - Guardrails - x-speakeasy-name-override: listKeyAssignments + - 'Guardrails' + x-speakeasy-name-override: 'listKeyAssignments' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: application/json: example: data: - - assigned_by: user_abc123 + - 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 + 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 + description: 'List of member assignments' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all member assignments + description: 'Internal Server Error - Unexpected server error' + summary: 'List all member assignments' tags: - - Guardrails - x-speakeasy-name-override: listMemberAssignments + - 'Guardrails' + x-speakeasy-name-override: 'listMemberAssignments' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /images: post: - description: Generates an image from a text prompt via the image generation router - operationId: createImages + 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 + model: 'bytedance-seed/seedream-4.5' + prompt: 'a red panda astronaut floating in space, studio lighting' schema: $ref: '#/components/schemas/ImageGenerationRequest' required: true @@ -29454,7 +28955,7 @@ paths: example: created: 1748372400 data: - - b64_json: + - b64_json: '' usage: completion_tokens: 4175 cost: 0.04 @@ -29465,133 +28966,131 @@ paths: text/event-stream: example: data: - b64_json: + b64_json: '' partial_image_index: 0 - type: image_generation.partial_image + type: 'image_generation.partial_image' schema: $ref: '#/components/schemas/ImageStreamingResponse' x-speakeasy-sse-sentinel: '[DONE]' - description: Image generation response + description: 'Image generation response' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + 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 + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '413': content: application/json: example: error: code: 413 - message: Request payload too large + message: 'Request payload too large' schema: $ref: '#/components/schemas/PayloadTooLargeResponse' - description: Payload Too Large - Request payload exceeds size limits + description: 'Payload Too Large - Request payload exceeds size limits' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Generate an image + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Generate an image' tags: - - Images - x-speakeasy-name-override: generate + - '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 + 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: @@ -29600,62 +29099,60 @@ paths: data: - architecture: input_modalities: - - text + - 'text' output_modalities: - - image + - '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 + 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 + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' supports_streaming: false schema: $ref: '#/components/schemas/ImageModelsListResponse' - description: List of image generation models + description: 'List of image generation models' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List image generation models + description: 'Internal Server Error - Unexpected server error' + summary: 'List image generation models' tags: - - Images - x-speakeasy-name-override: listModels + - '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 + 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 + - 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 + 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 + description: 'Model slug' + example: 'seedream-4.5' + type: 'string' responses: '200': content: @@ -29664,52 +29161,52 @@ paths: endpoints: - allowed_passthrough_parameters: [] pricing: - - billable: output_image + - billable: 'output_image' cost_usd: 0.05 - unit: image - provider_name: Bytedance - provider_slug: bytedance - provider_tag: bytedance + unit: 'image' + provider_name: 'Bytedance' + provider_slug: 'bytedance' + provider_tag: 'bytedance' supported_parameters: resolution: - type: enum + type: 'enum' values: - - 1K - - 2K - - 4K + - '1K' + - '2K' + - '4K' supports_streaming: false - id: bytedance-seed/seedream-4.5 + id: 'bytedance-seed/seedream-4.5' schema: $ref: '#/components/schemas/ImageModelEndpointsResponse' - description: The full per-endpoint records for an image model + description: 'The full per-endpoint records for an image model' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List endpoints for an image model + description: 'Internal Server Error - Unexpected server error' + summary: 'List endpoints for an image model' tags: - - Images - x-speakeasy-name-override: listModelEndpoints + - 'Images' + x-speakeasy-name-override: 'listModelEndpoints' /key: get: - description: Get information on the API key associated with the current authentication session - operationId: getCurrentKey + description: 'Get information on the API key associated with the current authentication session' + operationId: 'getCurrentKey' responses: '200': content: @@ -29720,19 +29217,19 @@ paths: byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + 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 + label: 'sk-or-v1-au7...890' limit: 100 limit_remaining: 74.5 - limit_reset: monthly + limit_reset: 'monthly' rate_limit: - interval: 1h - note: This field is deprecated and safe to ignore. + interval: '1h' + note: 'This field is deprecated and safe to ignore.' requests: 1000 usage: 25.5 usage_daily: 25.5 @@ -29745,19 +29242,19 @@ paths: byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + 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 + label: 'sk-or-v1-au7...890' limit: 100 limit_remaining: 74.5 - limit_reset: monthly + limit_reset: 'monthly' rate_limit: - interval: 1h - note: This field is deprecated and safe to ignore. + interval: '1h' + note: 'This field is deprecated and safe to ignore.' requests: 1000 usage: 25.5 usage_daily: 25.5 @@ -29765,25 +29262,25 @@ paths: usage_weekly: 25.5 properties: data: - description: Current API key information + 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 + 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 + label: 'sk-or-v1-au7...890' limit: 100 limit_remaining: 74.5 - limit_reset: monthly + limit_reset: 'monthly' rate_limit: - interval: 1h - note: This field is deprecated and safe to ignore. + interval: '1h' + note: 'This field is deprecated and safe to ignore.' requests: 1000 usage: 25.5 usage_daily: 25.5 @@ -29791,204 +29288,206 @@ paths: usage_weekly: 25.5 properties: byok_usage: - description: Total external BYOK usage (in USD) for the API key + description: 'Total external BYOK usage (in USD) for the API key' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_daily: - description: External BYOK usage (in USD) for the current UTC day + description: 'External BYOK usage (in USD) for the current UTC day' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_monthly: - description: External BYOK usage (in USD) for current UTC month + description: 'External BYOK usage (in USD) for current UTC month' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_weekly: - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + description: 'External BYOK usage (in USD) for the current UTC week (Monday-Sunday)' example: 17.38 - format: double - type: number + 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 + 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' + type: + - 'string' + - 'null' expires_at: - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + 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 + format: 'date-time' + type: + - 'string' + - 'null' include_byok_in_limit: - description: Whether to include external BYOK usage in the credit limit + description: 'Whether to include external BYOK usage in the credit limit' example: false - type: boolean + type: 'boolean' is_free_tier: - description: Whether this is a free tier API key + description: 'Whether this is a free tier API key' example: false - type: boolean + type: 'boolean' is_management_key: - description: Whether this is a management key + description: 'Whether this is a management key' example: false - type: boolean + type: 'boolean' is_provisioning_key: deprecated: true - description: Whether this is a management key + description: 'Whether this is a management key' example: false - type: boolean + type: 'boolean' label: - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - type: string + 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 + description: 'Spending limit for the API key in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_remaining: - description: Remaining spending limit in USD + description: 'Remaining spending limit in USD' example: 74.5 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_reset: - description: Type of limit reset for the API key - example: monthly - nullable: true - type: string + description: 'Type of limit reset for the API key' + example: 'monthly' + type: + - 'string' + - 'null' rate_limit: deprecated: true - description: Legacy rate limit information about a key. Will always return -1. + description: 'Legacy rate limit information about a key. Will always return -1.' example: - interval: 1h - note: This field is deprecated and safe to ignore. + interval: '1h' + note: 'This field is deprecated and safe to ignore.' requests: 1000 properties: interval: - description: Rate limit interval - example: 1h - type: string + 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 + 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 + description: 'Number of requests allowed per interval' example: 1000 - type: integer + type: 'integer' required: - - requests - - interval - - note - type: object + - 'requests' + - 'interval' + - 'note' + type: 'object' usage: - description: Total OpenRouter credit usage (in USD) for the API key + description: 'Total OpenRouter credit usage (in USD) for the API key' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_daily: - description: OpenRouter credit usage (in USD) for the current UTC day + description: 'OpenRouter credit usage (in USD) for the current UTC day' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_monthly: - description: OpenRouter credit usage (in USD) for the current UTC month + description: 'OpenRouter credit usage (in USD) for the current UTC month' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_weekly: - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + description: 'OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)' example: 25.5 - format: double - type: number + 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 + - '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 + - 'data' + type: 'object' + description: 'API key details' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get current API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Get current API key' tags: - - API Keys - x-speakeasy-name-override: getCurrentKeyMetadata + - '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 + 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 + - 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 + 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 + 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 + 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 + type: + - 'integer' + - 'null' + - 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 + 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: @@ -30000,22 +29499,22 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: Production API Key + label: 'Production API Key' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: example: data: @@ -30024,25 +29523,25 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: Production API Key + label: 'Production API Key' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: - description: List of API keys + description: 'List of API keys' items: example: byok_usage: 17.38 @@ -30050,193 +29549,194 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: sk-or-v1-0e6...1c96 + label: 'sk-or-v1-0e6...1c96' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: byok_usage: - description: Total external BYOK usage (in USD) for the API key + description: 'Total external BYOK usage (in USD) for the API key' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_daily: - description: External BYOK usage (in USD) for the current UTC day + description: 'External BYOK usage (in USD) for the current UTC day' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_monthly: - description: External BYOK usage (in USD) for current UTC month + description: 'External BYOK usage (in USD) for current UTC month' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_weekly: - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + description: 'External BYOK usage (in USD) for the current UTC week (Monday-Sunday)' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' created_at: - description: ISO 8601 timestamp of when the API key was created + description: 'ISO 8601 timestamp of when the API key was created' example: '2025-08-24T10:30:00Z' - type: string + 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 + 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' + type: + - 'string' + - 'null' disabled: - description: Whether the API key is disabled + description: 'Whether the API key is disabled' example: false - type: boolean + type: 'boolean' expires_at: - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + 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 + format: 'date-time' + type: + - 'string' + - 'null' hash: - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - type: string + 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 + description: 'Whether to include external BYOK usage in the credit limit' example: false - type: boolean + type: 'boolean' label: - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - type: string + 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 + description: 'Spending limit for the API key in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_remaining: - description: Remaining spending limit in USD + description: 'Remaining spending limit in USD' example: 74.5 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_reset: - description: Type of limit reset for the API key - example: monthly - nullable: true - type: string + description: 'Type of limit reset for the API key' + example: 'monthly' + type: + - 'string' + - 'null' name: - description: Name of the API key - example: My Production Key - type: string + 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 + description: 'ISO 8601 timestamp of when the API key was last updated' example: '2025-08-24T15:45:00Z' - nullable: true - type: string + type: + - 'string' + - 'null' usage: - description: Total OpenRouter credit usage (in USD) for the API key + description: 'Total OpenRouter credit usage (in USD) for the API key' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_daily: - description: OpenRouter credit usage (in USD) for the current UTC day + description: 'OpenRouter credit usage (in USD) for the current UTC day' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_monthly: - description: OpenRouter credit usage (in USD) for the current UTC month + description: 'OpenRouter credit usage (in USD) for the current UTC month' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_weekly: - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + description: 'OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' workspace_id: - description: The workspace ID this API key belongs to. - example: 0df9e665-d932-5740-b2c7-b52af166bc11 - type: string + 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 + - '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 + - 'data' + type: 'object' + description: 'List of API keys' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List API keys + description: 'Internal Server Error - Unexpected server error' + summary: 'List API keys' tags: - - API Keys - x-speakeasy-name-override: list + - '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 + 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: @@ -30244,67 +29744,65 @@ paths: expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: true limit: 50 - limit_reset: monthly - name: My New API Key + 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 + 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 + 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 + type: + - 'string' + - 'null' expires_at: - description: >- - Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be - rejected + 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 + format: 'date-time' + type: + - 'string' + - 'null' include_byok_in_limit: - description: Whether to include BYOK usage in the limit + description: 'Whether to include BYOK usage in the limit' example: true - type: boolean + type: 'boolean' limit: - description: Optional spending limit for the API key in USD + description: 'Optional spending limit for the API key in USD' example: 50 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' 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. + 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 + - 'daily' + - 'weekly' + - 'monthly' - null - example: monthly - nullable: true - type: string + example: 'monthly' + type: + - 'string' + - 'null' name: - description: Name for the new API key - example: My New API Key + description: 'Name for the new API key' + example: 'My New API Key' minLength: 1 - type: string + 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 + 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 + - 'name' + type: 'object' required: true responses: '201': @@ -30317,23 +29815,23 @@ paths: byok_usage_monthly: 0 byok_usage_weekly: 0 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true - label: My New API Key + label: 'My New API Key' limit: 50 limit_remaining: 50 - limit_reset: monthly - name: My New API Key + 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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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' + key: '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' schema: example: data: @@ -30342,250 +29840,254 @@ paths: byok_usage_monthly: 0 byok_usage_weekly: 0 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true - label: My New API Key + label: 'My New API Key' limit: 50 limit_remaining: 50 - limit_reset: monthly - name: My New API Key + 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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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' + key: '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' properties: data: - description: The created API key information + 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 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: sk-or-v1-0e6...1c96 + label: 'sk-or-v1-0e6...1c96' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: byok_usage: - description: Total external BYOK usage (in USD) for the API key + description: 'Total external BYOK usage (in USD) for the API key' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_daily: - description: External BYOK usage (in USD) for the current UTC day + description: 'External BYOK usage (in USD) for the current UTC day' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_monthly: - description: External BYOK usage (in USD) for current UTC month + description: 'External BYOK usage (in USD) for current UTC month' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_weekly: - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + description: 'External BYOK usage (in USD) for the current UTC week (Monday-Sunday)' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' created_at: - description: ISO 8601 timestamp of when the API key was created + description: 'ISO 8601 timestamp of when the API key was created' example: '2025-08-24T10:30:00Z' - type: string + 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 + 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' + type: + - 'string' + - 'null' disabled: - description: Whether the API key is disabled + description: 'Whether the API key is disabled' example: false - type: boolean + type: 'boolean' expires_at: - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + 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 + format: 'date-time' + type: + - 'string' + - 'null' hash: - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - type: string + 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 + description: 'Whether to include external BYOK usage in the credit limit' example: false - type: boolean + type: 'boolean' label: - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - type: string + 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 + description: 'Spending limit for the API key in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_remaining: - description: Remaining spending limit in USD + description: 'Remaining spending limit in USD' example: 74.5 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_reset: - description: Type of limit reset for the API key - example: monthly - nullable: true - type: string + description: 'Type of limit reset for the API key' + example: 'monthly' + type: + - 'string' + - 'null' name: - description: Name of the API key - example: My Production Key - type: string + 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 + description: 'ISO 8601 timestamp of when the API key was last updated' example: '2025-08-24T15:45:00Z' - nullable: true - type: string + type: + - 'string' + - 'null' usage: - description: Total OpenRouter credit usage (in USD) for the API key + description: 'Total OpenRouter credit usage (in USD) for the API key' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_daily: - description: OpenRouter credit usage (in USD) for the current UTC day + description: 'OpenRouter credit usage (in USD) for the current UTC day' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_monthly: - description: OpenRouter credit usage (in USD) for the current UTC month + description: 'OpenRouter credit usage (in USD) for the current UTC month' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_weekly: - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + description: 'OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' workspace_id: - description: The workspace ID this API key belongs to. - example: 0df9e665-d932-5740-b2c7-b52af166bc11 - type: string + 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 + - '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 + 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 + - 'data' + - 'key' + type: 'object' + description: 'API key created successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create a new API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Create a new API key' tags: - - API Keys - x-speakeasy-name-override: create + - '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 + 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 + - 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 + description: 'The hash identifier of the API key to delete' + example: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' + type: 'string' responses: '200': content: @@ -30598,69 +30100,69 @@ paths: properties: deleted: const: true - description: Confirmation that the API key was deleted + description: 'Confirmation that the API key was deleted' example: true - type: boolean + type: 'boolean' required: - - deleted - type: object - description: API key deleted successfully + - 'deleted' + type: 'object' + description: 'API key deleted successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete an API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete an API key' tags: - - API Keys - x-speakeasy-name-override: delete + - '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 + 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 + - 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 + description: 'The hash identifier of the API key to retrieve' + example: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' + type: 'string' responses: '200': content: @@ -30672,22 +30174,22 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: Production API Key + label: 'Production API Key' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: example: data: @@ -30696,233 +30198,237 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: Production API Key + label: 'Production API Key' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: - description: The API key information + 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 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: sk-or-v1-0e6...1c96 + label: 'sk-or-v1-0e6...1c96' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: byok_usage: - description: Total external BYOK usage (in USD) for the API key + description: 'Total external BYOK usage (in USD) for the API key' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_daily: - description: External BYOK usage (in USD) for the current UTC day + description: 'External BYOK usage (in USD) for the current UTC day' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_monthly: - description: External BYOK usage (in USD) for current UTC month + description: 'External BYOK usage (in USD) for current UTC month' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_weekly: - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + description: 'External BYOK usage (in USD) for the current UTC week (Monday-Sunday)' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' created_at: - description: ISO 8601 timestamp of when the API key was created + description: 'ISO 8601 timestamp of when the API key was created' example: '2025-08-24T10:30:00Z' - type: string + 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 + 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' + type: + - 'string' + - 'null' disabled: - description: Whether the API key is disabled + description: 'Whether the API key is disabled' example: false - type: boolean + type: 'boolean' expires_at: - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + 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 + format: 'date-time' + type: + - 'string' + - 'null' hash: - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - type: string + 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 + description: 'Whether to include external BYOK usage in the credit limit' example: false - type: boolean + type: 'boolean' label: - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - type: string + 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 + description: 'Spending limit for the API key in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_remaining: - description: Remaining spending limit in USD + description: 'Remaining spending limit in USD' example: 74.5 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_reset: - description: Type of limit reset for the API key - example: monthly - nullable: true - type: string + description: 'Type of limit reset for the API key' + example: 'monthly' + type: + - 'string' + - 'null' name: - description: Name of the API key - example: My Production Key - type: string + 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 + description: 'ISO 8601 timestamp of when the API key was last updated' example: '2025-08-24T15:45:00Z' - nullable: true - type: string + type: + - 'string' + - 'null' usage: - description: Total OpenRouter credit usage (in USD) for the API key + description: 'Total OpenRouter credit usage (in USD) for the API key' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_daily: - description: OpenRouter credit usage (in USD) for the current UTC day + description: 'OpenRouter credit usage (in USD) for the current UTC day' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_monthly: - description: OpenRouter credit usage (in USD) for the current UTC month + description: 'OpenRouter credit usage (in USD) for the current UTC month' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_weekly: - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + description: 'OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' workspace_id: - description: The workspace ID this API key belongs to. - example: 0df9e665-d932-5740-b2c7-b52af166bc11 - type: string + 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 + - '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 + - 'data' + type: 'object' + description: 'API key details' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get a single API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Get a single API key' tags: - - API Keys - x-speakeasy-name-override: get + - '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 + 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 + - 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 + description: 'The hash identifier of the API key to update' + example: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' + type: 'string' requestBody: content: application/json: @@ -30930,47 +30436,47 @@ paths: disabled: false include_byok_in_limit: true limit: 75 - limit_reset: daily - name: Updated API Key Name + 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 + limit_reset: 'daily' + name: 'Updated API Key Name' properties: disabled: - description: Whether to disable the API key + description: 'Whether to disable the API key' example: false - type: boolean + type: 'boolean' include_byok_in_limit: - description: Whether to include BYOK usage in the limit + description: 'Whether to include BYOK usage in the limit' example: true - type: boolean + type: 'boolean' limit: - description: New spending limit for the API key in USD + description: 'New spending limit for the API key in USD' example: 75 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' 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. + 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 + - 'daily' + - 'weekly' + - 'monthly' - null - example: daily - nullable: true - type: string + example: 'daily' + type: + - 'string' + - 'null' name: - description: New name for the API key - example: Updated API Key Name - type: string - type: object + description: 'New name for the API key' + example: 'Updated API Key Name' + type: 'string' + type: 'object' required: true responses: '200': @@ -30983,22 +30489,22 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: null - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true - label: Updated API Key Name + label: 'Updated API Key Name' limit: 75 limit_remaining: 49.5 - limit_reset: daily - name: Updated API Key Name + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' schema: example: data: @@ -31007,244 +30513,244 @@ paths: byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: null - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true - label: Updated API Key Name + label: 'Updated API Key Name' limit: 75 limit_remaining: 49.5 - limit_reset: daily - name: Updated API Key Name + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: data: - description: The updated API key information + 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 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' disabled: false expires_at: '2027-12-31T23:59:59Z' - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false - label: sk-or-v1-0e6...1c96 + label: 'sk-or-v1-0e6...1c96' limit: 100 limit_remaining: 74.5 - limit_reset: monthly - name: My Production Key + 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 + workspace_id: '0df9e665-d932-5740-b2c7-b52af166bc11' properties: byok_usage: - description: Total external BYOK usage (in USD) for the API key + description: 'Total external BYOK usage (in USD) for the API key' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_daily: - description: External BYOK usage (in USD) for the current UTC day + description: 'External BYOK usage (in USD) for the current UTC day' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_monthly: - description: External BYOK usage (in USD) for current UTC month + description: 'External BYOK usage (in USD) for current UTC month' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' byok_usage_weekly: - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + description: 'External BYOK usage (in USD) for the current UTC week (Monday-Sunday)' example: 17.38 - format: double - type: number + format: 'double' + type: 'number' created_at: - description: ISO 8601 timestamp of when the API key was created + description: 'ISO 8601 timestamp of when the API key was created' example: '2025-08-24T10:30:00Z' - type: string + 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 + 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' + type: + - 'string' + - 'null' disabled: - description: Whether the API key is disabled + description: 'Whether the API key is disabled' example: false - type: boolean + type: 'boolean' expires_at: - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + 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 + format: 'date-time' + type: + - 'string' + - 'null' hash: - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - type: string + 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 + description: 'Whether to include external BYOK usage in the credit limit' example: false - type: boolean + type: 'boolean' label: - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - type: string + 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 + description: 'Spending limit for the API key in USD' example: 100 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_remaining: - description: Remaining spending limit in USD + description: 'Remaining spending limit in USD' example: 74.5 - format: double - nullable: true - type: number + format: 'double' + type: + - 'number' + - 'null' limit_reset: - description: Type of limit reset for the API key - example: monthly - nullable: true - type: string + description: 'Type of limit reset for the API key' + example: 'monthly' + type: + - 'string' + - 'null' name: - description: Name of the API key - example: My Production Key - type: string + 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 + description: 'ISO 8601 timestamp of when the API key was last updated' example: '2025-08-24T15:45:00Z' - nullable: true - type: string + type: + - 'string' + - 'null' usage: - description: Total OpenRouter credit usage (in USD) for the API key + description: 'Total OpenRouter credit usage (in USD) for the API key' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_daily: - description: OpenRouter credit usage (in USD) for the current UTC day + description: 'OpenRouter credit usage (in USD) for the current UTC day' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_monthly: - description: OpenRouter credit usage (in USD) for the current UTC month + description: 'OpenRouter credit usage (in USD) for the current UTC month' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' usage_weekly: - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + description: 'OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)' example: 25.5 - format: double - type: number + format: 'double' + type: 'number' workspace_id: - description: The workspace ID this API key belongs to. - example: 0df9e665-d932-5740-b2c7-b52af166bc11 - type: string + 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 + - '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 + - 'data' + type: 'object' + description: 'API key updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Update an API key + description: 'Internal Server Error - Unexpected server error' + summary: 'Update an API key' tags: - - API Keys - x-speakeasy-name-override: update + - '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 + 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 + - 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' @@ -31254,9 +30760,9 @@ paths: example: max_tokens: 1024 messages: - - content: Hello, how are you? - role: user - model: anthropic/claude-sonnet-4 + - content: 'Hello, how are you?' + role: 'user' + model: 'anthropic/claude-sonnet-4' schema: $ref: '#/components/schemas/MessagesRequest' required: true @@ -31265,189 +30771,195 @@ paths: content: application/json: example: + container: null 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 + - citations: [] + 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_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: 18 + output_tokens_details: null + server_tool_use: null + service_tier: 'standard' schema: $ref: '#/components/schemas/MessagesResult' text/event-stream: example: data: delta: - text: Hello - type: text_delta + text: 'Hello' + type: 'text_delta' index: 0 - type: content_block_delta - event: content_block_delta + type: 'content_block_delta' + event: 'content_block_delta' schema: $ref: '#/components/schemas/MessagesStreamingResponse' x-speakeasy-sse-sentinel: '[DONE]' - description: Successful response + description: 'Successful response' '400': content: application/json: example: error: message: 'Invalid request: messages is required' - type: invalid_request_error - type: error + type: 'invalid_request_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Invalid request error + description: 'Invalid request error' '401': content: application/json: example: error: - message: Invalid API key - type: authentication_error - type: error + message: 'Invalid API key' + type: 'authentication_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Authentication error + description: 'Authentication error' '403': content: application/json: examples: guardrail-blocked: - summary: Guardrail blocked the request + summary: 'Guardrail blocked the request' value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - - ignore all previous instructions + - 'ignore all previous instructions' openrouter_metadata: attempt: 1 endpoints: available: - - model: openai/gpt-4o - provider: OpenAI + - model: 'openai/gpt-4o' + provider: 'OpenAI' selected: false total: 1 is_byok: false pipeline: - data: - action: blocked + action: 'blocked' detected: true engines: - - regex + - 'regex' patterns: - - ignore all previous instructions - guardrail_id: grd_abc123 - guardrail_scope: api-key - name: regex_pi_detection + - '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 + type: 'guardrail' + region: 'iad' + requested: 'openai/gpt-4o' + strategy: 'direct' + summary: 'available=1' insufficient-permissions: - summary: Insufficient permissions + summary: 'Insufficient permissions' value: error: code: 403 - message: Only management keys can perform this operation + 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. + 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 + message: 'Model not found' + type: 'not_found_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Not found error + description: 'Not found error' '429': content: application/json: example: error: - message: Rate limit exceeded - type: rate_limit_error - type: error + message: 'Rate limit exceeded' + type: 'rate_limit_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Rate limit error + description: 'Rate limit error' '500': content: application/json: example: error: - message: Internal server error - type: api_error - type: error + message: 'Internal server error' + type: 'api_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: API error + description: 'API error' '503': content: application/json: example: error: - message: Service temporarily overloaded - type: overloaded_error - type: error + message: 'Service temporarily overloaded' + type: 'overloaded_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Overloaded error + description: 'Overloaded error' '529': content: application/json: example: error: - message: Provider is temporarily overloaded - type: overloaded_error - type: error + message: 'Provider is temporarily overloaded' + type: 'overloaded_error' + type: 'error' schema: $ref: '#/components/schemas/MessagesErrorResponse' - description: Overloaded error - summary: Create a message + description: 'Overloaded error' + summary: 'Create a message' tags: - - Anthropic Messages + - 'Anthropic Messages' x-speakeasy-ignore: true - x-speakeasy-name-override: create - x-speakeasy-stream-request-field: stream + 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 + 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 + - 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 + 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 + 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: @@ -31456,17 +30968,23 @@ paths: data: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' + canonical_slug: 'openai/gpt-4' 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 + 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' @@ -31474,390 +30992,378 @@ paths: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' + supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 schema: $ref: '#/components/schemas/ModelResponse' - description: Returns the model details + description: 'Returns the model details' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get a model by its slug + description: 'Internal Server Error - Unexpected server error' + summary: 'Get a model by its slug' tags: - - Models - x-speakeasy-name-override: get + - 'Models' + x-speakeasy-name-override: 'get' /models: get: - operationId: getModels + operationId: 'getModels' parameters: - - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned - in: query - name: offset + - description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: >- - Number of records to skip for pagination. When both offset and limit are omitted, the full list is - returned + description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' example: 0 minimum: 0 - nullable: true - type: integer - - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned - in: query - name: limit + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'limit' required: false schema: default: 500 - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned + description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' example: 500 maximum: 1000 minimum: 1 - type: integer - - description: Filter models by use case category - in: query - name: category + type: 'integer' + - description: 'Filter models by use case category' + in: 'query' + name: 'category' required: false schema: - description: Filter models by use case category + 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 + - '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 + 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, - coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), 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 + 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, coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), 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, - coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), 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. + 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, coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), 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 - - coding-high-to-low - - agentic-high-to-low - - design-arena-elo-high-to-low - example: newest - type: string - - description: Return results as RSS feed - in: query - name: use_rss + - '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' + - 'coding-high-to-low' + - 'agentic-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 + 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 + 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 + 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 + 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: '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 + 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 + 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. + description: 'Minimum context length (tokens). Models with smaller context are excluded.' example: 128000 minimum: 1 - type: integer - - description: Minimum prompt price in $/M tokens. - in: query - name: min_price + type: 'integer' + - description: 'Minimum prompt price in $/M tokens.' + in: 'query' + name: 'min_price' required: false schema: - description: Minimum prompt price in $/M tokens. + 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 + type: + - 'number' + - 'null' + - description: 'Maximum prompt price in $/M tokens.' + in: 'query' + name: 'max_price' required: false schema: - description: Maximum prompt price in $/M tokens. + 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 + type: + - 'number' + - 'null' + - 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 + 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 + 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 + 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. + 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 + 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. + 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 + 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. + description: 'Filter to models with endpoints in the given data region. Currently only "eu" is supported.' enum: - - eu - example: eu - type: string - - description: Minimum completion (output) price in $/M tokens. - in: query - name: min_output_price + - 'eu' + example: 'eu' + type: 'string' + - description: 'Minimum completion (output) price in $/M tokens.' + in: 'query' + name: 'min_output_price' required: false schema: - description: Minimum completion (output) price in $/M tokens. + description: 'Minimum completion (output) price in $/M tokens.' example: 0 minimum: 0 - nullable: true - type: number - - description: Maximum completion (output) price in $/M tokens. - in: query - name: max_output_price + type: + - 'number' + - 'null' + - description: 'Maximum completion (output) price in $/M tokens.' + in: 'query' + name: 'max_output_price' required: false schema: - description: Maximum completion (output) price in $/M tokens. + description: 'Maximum completion (output) price in $/M tokens.' example: 10 minimum: 0 - nullable: true - type: number - - description: Minimum model age in days since its creation date. - in: query - name: min_age_days + type: + - 'number' + - 'null' + - description: 'Minimum model age in days since its creation date.' + in: 'query' + name: 'min_age_days' required: false schema: - description: Minimum model age in days since its creation date. + description: 'Minimum model age in days since its creation date.' example: 0 minimum: 0 - nullable: true - type: integer - - description: Maximum model age in days since its creation date. - in: query - name: max_age_days + type: + - 'integer' + - 'null' + - description: 'Maximum model age in days since its creation date.' + in: 'query' + name: 'max_age_days' required: false schema: - description: Maximum model age in days since its creation date. + description: 'Maximum model age in days since its creation date.' example: 90 minimum: 0 - nullable: true - type: integer - - description: Minimum Artificial Analysis intelligence index. - in: query - name: min_intelligence_index + type: + - 'integer' + - 'null' + - description: 'Minimum Artificial Analysis intelligence index.' + in: 'query' + name: 'min_intelligence_index' required: false schema: - description: Minimum Artificial Analysis intelligence index. + description: 'Minimum Artificial Analysis intelligence index.' example: 50 minimum: 0 - nullable: true - type: number - - description: Maximum Artificial Analysis intelligence index. - in: query - name: max_intelligence_index + type: + - 'number' + - 'null' + - description: 'Maximum Artificial Analysis intelligence index.' + in: 'query' + name: 'max_intelligence_index' required: false schema: - description: Maximum Artificial Analysis intelligence index. + description: 'Maximum Artificial Analysis intelligence index.' example: 100 minimum: 0 - nullable: true - type: number - - description: Minimum Artificial Analysis coding index. - in: query - name: min_coding_index + type: + - 'number' + - 'null' + - description: 'Minimum Artificial Analysis coding index.' + in: 'query' + name: 'min_coding_index' required: false schema: - description: Minimum Artificial Analysis coding index. + description: 'Minimum Artificial Analysis coding index.' example: 50 minimum: 0 - nullable: true - type: number - - description: Maximum Artificial Analysis coding index. - in: query - name: max_coding_index + type: + - 'number' + - 'null' + - description: 'Maximum Artificial Analysis coding index.' + in: 'query' + name: 'max_coding_index' required: false schema: - description: Maximum Artificial Analysis coding index. + description: 'Maximum Artificial Analysis coding index.' example: 100 minimum: 0 - nullable: true - type: number - - description: Minimum Artificial Analysis agentic index. - in: query - name: min_agentic_index + type: + - 'number' + - 'null' + - description: 'Minimum Artificial Analysis agentic index.' + in: 'query' + name: 'min_agentic_index' required: false schema: - description: Minimum Artificial Analysis agentic index. + description: 'Minimum Artificial Analysis agentic index.' example: 50 minimum: 0 - nullable: true - type: number - - description: Maximum Artificial Analysis agentic index. - in: query - name: max_agentic_index + type: + - 'number' + - 'null' + - description: 'Maximum Artificial Analysis agentic index.' + in: 'query' + name: 'max_agentic_index' required: false schema: - description: Maximum Artificial Analysis agentic index. + description: 'Maximum Artificial Analysis agentic index.' example: 100 minimum: 0 - nullable: true - type: number - - description: >- - Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9 = 90% of requests finishing with a - tool_calls finish reason). - in: query - name: min_tool_success_rate + type: + - 'number' + - 'null' + - description: 'Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9 = 90% of requests finishing with a tool_calls finish reason).' + in: 'query' + name: 'min_tool_success_rate' required: false schema: - description: >- - Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9 = 90% of requests finishing with a - tool_calls finish reason). + description: 'Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9 = 90% of requests finishing with a tool_calls finish reason).' example: 0.9 maximum: 1 minimum: 0 - nullable: true - type: number - - description: Maximum tool-calling success rate, as a fraction in [0, 1]. - in: query - name: max_tool_success_rate + type: + - 'number' + - 'null' + - description: 'Maximum tool-calling success rate, as a fraction in [0, 1].' + in: 'query' + name: 'max_tool_success_rate' required: false schema: - description: Maximum tool-calling success rate, as a fraction in [0, 1]. + description: 'Maximum tool-calling success rate, as a fraction in [0, 1].' example: 1 maximum: 1 minimum: 0 - nullable: true - type: number + type: + - 'number' + - 'null' responses: '200': content: @@ -31866,23 +31372,23 @@ paths: data: - architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT - canonical_slug: openai/gpt-4 + - '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. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' expiration_date: null - id: openai/gpt-4 + id: 'openai/gpt-4' knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-4/endpoints - name: GPT-4 + details: '/api/v1/models/openai/gpt-4/endpoints' + name: 'GPT-4' per_request_limits: null pricing: completion: '0.00006' @@ -31890,9 +31396,9 @@ paths: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supported_voices: null top_provider: context_length: 8192 @@ -31901,67 +31407,66 @@ paths: schema: $ref: '#/components/schemas/ModelsListResponse' application/rss+xml: - example: >- - OpenRouter - Models + example: 'OpenRouter Models' schema: - type: string - description: Returns a list of models or RSS feed + example: 'OpenRouter Models' + type: 'string' + description: 'Returns a list of models or RSS feed' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all models and their properties + description: 'Internal Server Error - Unexpected server error' + summary: 'List all models and their properties' tags: - - Models - x-speakeasy-name-override: list + - 'Models' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /models/{author}/{slug}/endpoints: get: - operationId: listEndpoints + operationId: 'listEndpoints' parameters: - - description: The author/organization of the model - in: path - name: author + - 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 + 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 + description: 'The model slug' + example: 'gpt-4' + type: 'string' responses: '200': content: @@ -31970,30 +31475,30 @@ paths: data: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' created: 1692901234 - description: GPT-4 is a large multimodal model. + description: 'GPT-4 is a large multimodal model.' endpoints: [] - id: openai/gpt-4 - name: GPT-4 + id: 'openai/gpt-4' + name: 'GPT-4' schema: example: data: architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT + - 'text' + tokenizer: 'GPT' created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' endpoints: - context_length: 8192 latency_last_30m: @@ -32003,23 +31508,23 @@ paths: p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 - model_id: openai/gpt-4 - model_name: GPT-4 + 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 + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supports_implicit_caching: true - tag: openai + tag: 'openai' throughput_last_30m: p50: 45.2 p75: 38.5 @@ -32028,55 +31533,51 @@ paths: uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 - id: openai/gpt-4 - name: GPT-4 + id: 'openai/gpt-4' + name: 'GPT-4' properties: data: $ref: '#/components/schemas/ListEndpointsResponse' required: - - data - type: object - description: Returns a list of endpoints + - 'data' + type: 'object' + description: 'Returns a list of endpoints' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all endpoints for a model + description: 'Internal Server Error - Unexpected server error' + summary: 'List all endpoints for a model' tags: - - Endpoints - x-speakeasy-name-override: list + - 'Endpoints' + x-speakeasy-name-override: 'list' /models/count: get: - operationId: listModelsCount + 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 + - 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: '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: @@ -32086,69 +31587,59 @@ paths: count: 150 schema: $ref: '#/components/schemas/ModelsCountResponse' - description: Returns the total count of available models + description: 'Returns the total count of available models' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get total count of available models + description: 'Internal Server Error - Unexpected server error' + summary: 'Get total count of available models' tags: - - Models - x-speakeasy-name-override: count + - '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 + 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' parameters: - - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned - in: query - name: offset + - description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: >- - Number of records to skip for pagination. When both offset and limit are omitted, the full list is - returned + description: 'Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned' example: 0 minimum: 0 - nullable: true - type: integer - - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned - in: query - name: limit + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' + in: 'query' + name: 'limit' required: false schema: default: 500 - description: >- - Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is - returned + description: 'Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned' example: 500 maximum: 1000 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -32157,23 +31648,23 @@ paths: data: - architecture: input_modalities: - - text - instruct_type: chatml - modality: text->text + - 'text' + instruct_type: 'chatml' + modality: 'text->text' output_modalities: - - text - tokenizer: GPT - canonical_slug: openai/gpt-4 + - '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. + description: 'GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.' expiration_date: null - id: openai/gpt-4 + id: 'openai/gpt-4' knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-4/endpoints - name: GPT-4 + details: '/api/v1/models/openai/gpt-4/endpoints' + name: 'GPT-4' per_request_limits: null pricing: completion: '0.00006' @@ -32181,9 +31672,9 @@ paths: prompt: '0.00003' request: '0' supported_parameters: - - temperature - - top_p - - max_tokens + - 'temperature' + - 'top_p' + - 'max_tokens' supported_voices: null top_provider: context_length: 8192 @@ -32191,94 +31682,91 @@ paths: max_completion_tokens: 4096 schema: $ref: '#/components/schemas/ModelsListResponse' - description: Returns a list of models filtered by user provider preferences + description: 'Returns a list of models filtered by user provider preferences' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - bearer: [] - summary: List models filtered by user provider preferences, privacy settings, and guardrails + summary: 'List models filtered by user provider preferences, privacy settings, and guardrails' tags: - - Models - x-speakeasy-name-override: listForUser + - 'Models' + x-speakeasy-name-override: 'listForUser' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /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 + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + 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 + 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 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: @@ -32287,74 +31775,71 @@ paths: data: - api_key_hashes: null config: - baseUrl: https://us.cloud.langfuse.com - publicKey: pk-l...EfGh - secretKey: sk-l...AbCd + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' total_count: 1 schema: $ref: '#/components/schemas/ListObservabilityDestinationsResponse' - description: List of observability destinations + description: 'List of observability destinations' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List observability destinations + description: 'Internal Server Error - Unexpected server error' + summary: 'List observability destinations' tags: - - Observability - x-speakeasy-name-override: list + - 'Observability' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + 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 @@ -32366,92 +31851,90 @@ paths: data: api_key_hashes: null config: - baseUrl: https://us.cloud.langfuse.com - publicKey: pk-l...EfGh - secretKey: sk-l...AbCd + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/CreateObservabilityDestinationResponse' - description: Destination created successfully + description: 'Destination created successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create an observability destination + description: 'Internal Server Error - Unexpected server error' + summary: 'Create an observability destination' tags: - - Observability - x-speakeasy-name-override: create + - '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 + 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 + - 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 + description: 'The destination ID (UUID).' + example: '99999999-aaaa-bbbb-cccc-dddddddddddd' + format: 'uuid' + type: 'string' responses: '200': content: @@ -32460,56 +31943,54 @@ paths: deleted: true schema: $ref: '#/components/schemas/DeleteObservabilityDestinationResponse' - description: Destination deleted successfully + description: 'Destination deleted successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete an observability destination + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete an observability destination' tags: - - Observability - x-speakeasy-name-override: delete + - '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 + 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 + - 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 + description: 'The destination ID (UUID).' + example: '99999999-aaaa-bbbb-cccc-dddddddddddd' + format: 'uuid' + type: 'string' responses: '200': content: @@ -32518,77 +31999,75 @@ paths: data: api_key_hashes: null config: - baseUrl: https://us.cloud.langfuse.com - publicKey: pk-l...EfGh - secretKey: sk-l...AbCd + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/GetObservabilityDestinationResponse' - description: The observability destination + description: 'The observability destination' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get an observability destination + description: 'Internal Server Error - Unexpected server error' + summary: 'Get an observability destination' tags: - - Observability - x-speakeasy-name-override: get + - '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 + 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 + - 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 + 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 + name: 'Updated Langfuse' schema: $ref: '#/components/schemas/UpdateObservabilityDestinationRequest' required: true @@ -32600,237 +32079,239 @@ paths: data: api_key_hashes: null config: - baseUrl: https://us.cloud.langfuse.com - publicKey: pk-l...EfGh - secretKey: sk-l...AbCd + 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 + id: '99999999-aaaa-bbbb-cccc-dddddddddddd' + name: 'Production Langfuse' privacy_mode: false sampling_rate: 1 - type: langfuse + type: 'langfuse' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/UpdateObservabilityDestinationResponse' - description: Destination updated successfully + description: 'Destination updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Update an observability destination + description: 'Internal Server Error - Unexpected server error' + summary: 'Update an observability destination' tags: - - Observability - x-speakeasy-name-override: update + - '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 + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + 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 + - email: 'jane.doe@example.com' + first_name: 'Jane' + id: 'user_2dHFtVWx2n56w6HkM0000000000' + last_name: 'Doe' + role: 'org:member' total_count: 25 schema: properties: data: - description: List of organization members + description: 'List of organization members' items: properties: email: - description: Email address of the member - example: jane.doe@example.com - type: string + 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 + description: 'First name of the member' + example: 'Jane' + type: + - 'string' + - 'null' id: - description: User ID of the organization member - example: user_2dHFtVWx2n56w6HkM0000000000 - type: string + 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 + description: 'Last name of the member' + example: 'Doe' + type: + - 'string' + - 'null' role: - description: Role of the member in the organization + description: 'Role of the member in the organization' enum: - - org:admin - - org:member - example: org:member - type: string + - 'org:admin' + - 'org:member' + example: 'org:member' + type: 'string' required: - - id - - first_name - - last_name - - email - - role - type: object - type: array + - 'id' + - 'first_name' + - 'last_name' + - 'email' + - 'role' + type: 'object' + type: 'array' total_count: - description: Total number of members in the organization + description: 'Total number of members in the organization' example: 25 - type: integer + type: 'integer' required: - - data - - total_count - type: object - description: List of organization members + - 'data' + - 'total_count' + type: 'object' + description: 'List of organization members' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List organization members + description: 'Internal Server Error - Unexpected server error' + summary: 'List organization members' tags: - - Organization - x-speakeasy-name-override: listMembers + - 'Organization' + x-speakeasy-name-override: 'listMembers' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /presets: get: - description: Lists all presets for the authenticated user, ordered by most recently updated first. - operationId: listPresets + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -32838,81 +32319,81 @@ paths: example: data: - created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' total_count: 1 schema: $ref: '#/components/schemas/ListPresetsResponse' - description: Paginated list of presets. + description: 'Paginated list of presets.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: List presets + summary: 'List presets' tags: - - Presets - x-speakeasy-name-override: list + - 'Presets' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + results: '$.data' + type: 'offsetLimit' /presets/{slug}: get: - description: Retrieves a preset by its slug with its currently designated version inline. - operationId: getPreset + 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 + - description: 'URL-safe slug identifying the preset.' + in: 'path' + name: 'slug' required: true schema: - description: URL-safe slug identifying the preset. - example: my-preset + description: 'URL-safe slug identifying the preset.' + example: 'my-preset' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -32920,102 +32401,100 @@ paths: example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-4o + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' schema: $ref: '#/components/schemas/GetPresetResponse' - description: Preset with its designated version. + description: 'Preset with its designated version.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: Get a preset + summary: 'Get a preset' tags: - - Presets - x-speakeasy-name-override: get + - '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 + 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 + - 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 + description: 'URL-safe slug identifying the preset. Created if it does not exist.' + example: 'my-preset' minLength: 1 - type: string + 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 + - 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' @@ -33027,121 +32506,119 @@ paths: example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-5.4 + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' - description: Preset created or updated successfully. + description: 'Preset created or updated successfully.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: Create a preset from a chat-completions request body + summary: 'Create a preset from a chat-completions request body' tags: - - Presets + - '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 + 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 + - 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 + description: 'URL-safe slug identifying the preset. Created if it does not exist.' + example: 'my-preset' minLength: 1 - type: string + 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. + - content: 'Hello!' + role: 'user' + model: 'anthropic/claude-4.6-sonnet' + system: 'You are a helpful assistant.' schema: $ref: '#/components/schemas/MessagesRequest' required: true @@ -33152,118 +32629,116 @@ paths: example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: max_tokens: 1024 - model: anthropic/claude-4.6-sonnet + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' - description: Preset created or updated successfully. + description: 'Preset created or updated successfully.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: Create a preset from a messages request body + summary: 'Create a preset from a messages request body' tags: - - Presets + - '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 + 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 + - 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 + description: 'URL-safe slug identifying the preset. Created if it does not exist.' + example: 'my-preset' minLength: 1 - type: string + type: 'string' requestBody: content: application/json: example: - input: Hello! - instructions: You are a helpful assistant. - model: openai/gpt-5.4 + input: 'Hello!' + instructions: 'You are a helpful assistant.' + model: 'openai/gpt-5.4' schema: $ref: '#/components/schemas/ResponsesRequest' required: true @@ -33274,130 +32749,131 @@ paths: example: data: created_at: '2026-04-20T10:00:00Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + creator_user_id: 'user_2dHFtVWx2n56w6HkM0000000000' description: null designated_version: config: - model: openai/gpt-5.4 + 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. + 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 + 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 + workspace_id: '750e8400-e29b-41d4-a716-446655440002' schema: $ref: '#/components/schemas/CreatePresetFromInferenceResponse' - description: Preset created or updated successfully. + description: 'Preset created or updated successfully.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '409': content: application/json: example: error: code: 409 - message: Resource conflict. Please try again later. + message: 'Resource conflict. Please try again later.' schema: $ref: '#/components/schemas/ConflictResponse' - description: Conflict - Resource conflict or concurrent modification + description: 'Conflict - Resource conflict or concurrent modification' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: Create a preset from a responses request body + summary: 'Create a preset from a responses request body' tags: - - Presets + - 'Presets' /presets/{slug}/versions: get: - description: Lists all versions of a preset, ordered by version number ascending (oldest first). - operationId: listPresetVersions + 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 + - description: 'URL-safe slug identifying the preset.' + in: 'path' + name: 'slug' required: true schema: - description: URL-safe slug identifying the preset. - example: my-preset + 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 + type: 'string' + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -33405,99 +32881,99 @@ paths: example: data: - config: - model: openai/gpt-4o + 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. + 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. + description: 'Paginated list of preset versions.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: List versions of a preset + summary: 'List versions of a preset' tags: - - Presets - x-speakeasy-name-override: listVersions + - 'Presets' + x-speakeasy-name-override: 'listVersions' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - description: 'URL-safe slug identifying the preset.' + in: 'path' + name: 'slug' required: true schema: - description: URL-safe slug identifying the preset. - example: my-preset + description: 'URL-safe slug identifying the preset.' + example: 'my-preset' minLength: 1 - type: string - - description: Version number of the preset. - in: path - name: version + type: 'string' + - description: 'Version number of the preset.' + in: 'path' + name: 'version' required: true schema: - description: Version number of the preset. + description: 'Version number of the preset.' example: '1' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -33505,67 +32981,67 @@ paths: example: data: config: - model: openai/gpt-4o + 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. + 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. + description: 'The requested preset version.' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' security: - apiKey: [] - summary: Get a specific version of a preset + summary: 'Get a specific version of a preset' tags: - - Presets - x-speakeasy-name-override: getVersion + - 'Presets' + x-speakeasy-name-override: 'getVersion' /providers: get: - operationId: listProviders + operationId: 'listProviders' responses: '200': content: @@ -33573,684 +33049,681 @@ paths: 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 + - '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 + - '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 + - '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 + description: 'ISO 3166-1 Alpha-2 country codes of the provider datacenter locations' example: - - US - - IE + - '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 + - '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 + - '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' + type: + - 'array' + - 'null' headquarters: - description: ISO 3166-1 Alpha-2 country code of the provider 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 + - '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 + - '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 + example: 'US' + type: + - 'string' + - 'null' name: - description: Display name of the provider - example: OpenAI - type: string + 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 + description: 'URL to the provider''s privacy policy' + example: 'https://openai.com/privacy' + type: + - 'string' + - 'null' slug: - description: URL-friendly identifier for the provider - example: openai - type: string + 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 + description: 'URL to the provider''s status page' + example: 'https://status.openai.com' + type: + - 'string' + - 'null' terms_of_service_url: - description: URL to the provider's terms of service - example: https://openai.com/terms - nullable: true - type: string + description: 'URL to the provider''s terms of service' + example: 'https://openai.com/terms' + type: + - 'string' + - 'null' required: - - name - - slug - - privacy_policy_url - type: object - type: array + - 'name' + - 'slug' + - 'privacy_policy_url' + type: 'object' + type: 'array' required: - - data - type: object - description: Returns a list of providers + - 'data' + type: 'object' + description: 'Returns a list of providers' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all providers + description: 'Internal Server Error - Unexpected server error' + summary: 'List all providers' tags: - - Providers - x-speakeasy-name-override: list + - 'Providers' + x-speakeasy-name-override: 'list' /rerank: post: - description: Submits a rerank request to the rerank router - operationId: createRerank + description: 'Submits a rerank request to the rerank router' + operationId: 'createRerank' requestBody: content: application/json: schema: - description: Rerank request input + 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? + - '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. + 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. + - '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. + - 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 + 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`. + 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 + type: 'array' model: - description: The rerank model to use - example: cohere/rerank-v3.5 - type: string + 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. + - 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 + 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 + description: 'Number of most relevant documents to return' example: 3 minimum: 1 - type: integer + type: 'integer' required: - - model - - query - - documents - type: object + - 'model' + - 'query' + - 'documents' + type: 'object' required: true responses: '200': content: application/json: schema: - description: Rerank response containing ranked results + description: 'Rerank response containing ranked results' example: - id: gen-rerank-1234567890-abc - model: cohere/rerank-v3.5 + id: 'gen-rerank-1234567890-abc' + model: 'cohere/rerank-v3.5' results: - document: - text: Paris is the capital of France. + text: 'Paris is the capital of France.' index: 0 relevance_score: 0.98 usage: @@ -34258,205 +33731,203 @@ paths: total_tokens: 150 properties: id: - description: Unique identifier for the rerank response (ORID format) - example: gen-rerank-1234567890-abc - type: string + 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 + 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 + description: 'The provider that served the rerank request' + example: 'Cohere' + type: 'string' results: - description: List of rerank results sorted by relevance + description: 'List of rerank results sorted by relevance' example: - document: - text: Paris is the capital of France. + text: 'Paris is the capital of France.' index: 0 relevance_score: 0.98 items: - description: A single rerank result + description: 'A single rerank result' example: document: - text: Paris is the capital of France. + 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) + 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 + 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 + 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 + description: 'Index of the document in the original input list' example: 0 - type: integer + type: 'integer' relevance_score: - description: Relevance score of the document to the query + description: 'Relevance score of the document to the query' example: 0.98 - format: double - type: number + format: 'double' + type: 'number' required: - - index - - relevance_score - - document - type: object - type: array + - 'index' + - 'relevance_score' + - 'document' + type: 'object' + type: 'array' usage: - description: Usage statistics + description: 'Usage statistics' example: search_units: 1 total_tokens: 150 properties: cost: - description: Cost of the request in credits + description: 'Cost of the request in credits' example: 0.001 - format: double - type: number + format: 'double' + type: 'number' search_units: - description: Number of search units consumed (Cohere billing) + description: 'Number of search units consumed (Cohere billing)' example: 1 - type: integer + type: 'integer' total_tokens: - description: Total number of tokens used + description: 'Total number of tokens used' example: 150 - type: integer - type: object + type: 'integer' + type: 'object' required: - - model - - results - type: object + - 'model' + - 'results' + type: 'object' text/event-stream: example: 'data: [DONE]' schema: - description: Not used for rerank - rerank does not support streaming - type: string + description: 'Not used for rerank - rerank does not support streaming' + type: 'string' x-speakeasy-sse-sentinel: '[DONE]' - description: Rerank response + description: 'Rerank response' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Submit a rerank request + description: 'Provider Overloaded - Provider is temporarily overloaded' + summary: 'Submit a rerank request' tags: - - Rerank - x-speakeasy-name-override: rerank + - 'Rerank' + x-speakeasy-name-override: 'rerank' /responses: post: - description: Creates a streaming or non-streaming response using OpenResponses API format - operationId: createResponses + 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 + - 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' @@ -34464,8 +33935,8 @@ paths: content: application/json: example: - input: Tell me a joke - model: openai/gpt-4o + input: 'Tell me a joke' + model: 'openai/gpt-4o' schema: $ref: '#/components/schemas/ResponsesRequest' required: true @@ -34474,231 +33945,253 @@ paths: content: application/json: example: + completed_at: 1700000010 created_at: 1700000000 - id: resp_abc123 - model: openai/gpt-4o - object: response + error: null + frequency_penalty: null + id: 'resp_abc123' + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + 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 + - annotations: [] + text: 'Why did the chicken cross the road? To get to the other side!' + type: 'output_text' + id: 'msg-abc123' + role: 'assistant' + status: 'completed' + type: 'message' + parallel_tool_calls: true + presence_penalty: null + status: 'completed' + temperature: null + tool_choice: 'auto' + tools: [] + top_p: null usage: - completion_tokens: 20 - prompt_tokens: 10 + input_tokens: 10 + input_tokens_details: + cached_tokens: 0 + output_tokens: 20 + output_tokens_details: + reasoning_tokens: 0 total_tokens: 30 schema: $ref: '#/components/schemas/OpenResponsesResult' text/event-stream: example: data: - delta: Hello - type: response.output_text.delta + content_index: 0 + delta: 'Hello' + item_id: 'item-1' + logprobs: [] + output_index: 0 + sequence_number: 4 + type: 'response.output_text.delta' schema: $ref: '#/components/schemas/ResponsesStreamingResponse' x-speakeasy-sse-sentinel: '[DONE]' - description: Successful response + description: 'Successful response' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '403': content: application/json: examples: guardrail-blocked: - summary: Guardrail blocked the request + summary: 'Guardrail blocked the request' value: error: code: 403 message: 'Request blocked: prompt injection patterns detected' metadata: patterns: - - ignore all previous instructions + - 'ignore all previous instructions' openrouter_metadata: attempt: 1 endpoints: available: - - model: openai/gpt-4o - provider: OpenAI + - model: 'openai/gpt-4o' + provider: 'OpenAI' selected: false total: 1 is_byok: false pipeline: - data: - action: blocked + action: 'blocked' detected: true engines: - - regex + - 'regex' patterns: - - ignore all previous instructions - guardrail_id: grd_abc123 - guardrail_scope: api-key - name: regex_pi_detection + - '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 + type: 'guardrail' + region: 'iad' + requested: 'openai/gpt-4o' + strategy: 'direct' + summary: 'available=1' insufficient-permissions: - summary: Insufficient permissions + summary: 'Insufficient permissions' value: error: code: 403 - message: Only management keys can perform this operation + 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. + 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 + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '408': content: application/json: example: error: code: 408 - message: Operation timed out. Please try again later. + message: 'Operation timed out. Please try again later.' schema: $ref: '#/components/schemas/RequestTimeoutResponse' - description: Request Timeout - Operation exceeded time limit + description: 'Request Timeout - Operation exceeded time limit' '413': content: application/json: example: error: code: 413 - message: Request payload too large + message: 'Request payload too large' schema: $ref: '#/components/schemas/PayloadTooLargeResponse' - description: Payload Too Large - Request payload exceeds size limits + description: 'Payload Too Large - Request payload exceeds size limits' '422': content: application/json: example: error: code: 422 - message: Invalid argument + message: 'Invalid argument' schema: $ref: '#/components/schemas/UnprocessableEntityResponse' - description: Unprocessable Entity - Semantic validation failure + description: 'Unprocessable Entity - Semantic validation failure' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure + description: 'Bad Gateway - Provider/upstream API failure' '503': content: application/json: example: error: code: 503 - message: Service temporarily unavailable + message: 'Service temporarily unavailable' schema: $ref: '#/components/schemas/ServiceUnavailableResponse' - description: Service Unavailable - Service temporarily unavailable + description: 'Service Unavailable - Service temporarily unavailable' '524': content: application/json: example: error: code: 524 - message: Request timed out. Please try again later. + message: 'Request timed out. Please try again later.' schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - description: Infrastructure Timeout - Provider request timed out at edge network + description: 'Infrastructure Timeout - Provider request timed out at edge network' '529': content: application/json: example: error: code: 529 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/ProviderOverloadedResponse' - description: Provider Overloaded - Provider is temporarily overloaded - summary: Create a response + 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 + - '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 + 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 + model: 'google/veo-3.1' + prompt: 'A serene mountain landscape at sunset' + resolution: '720p' schema: $ref: '#/components/schemas/VideoGenerationRequest' required: true @@ -34707,229 +34200,228 @@ paths: content: application/json: example: - generation_id: gen-xyz789 - id: job-abc123 - polling_url: /api/v1/videos/job-abc123 - status: pending + 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 + description: 'Video generation request accepted' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + 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 + 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 + description: 'Payment Required - Insufficient credits or quota to complete request' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '429': content: application/json: example: error: code: 429 - message: Rate limit exceeded + message: 'Rate limit exceeded' schema: $ref: '#/components/schemas/TooManyRequestsResponse' - description: Too Many Requests - Rate limit exceeded + description: 'Too Many Requests - Rate limit exceeded' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Submit a video generation request + description: 'Internal Server Error - Unexpected server error' + summary: 'Submit a video generation request' tags: - - Video Generation - x-speakeasy-name-override: generate + - 'Video Generation' + x-speakeasy-name-override: 'generate' /videos/{jobId}: get: - description: Returns job status and content URLs when completed - operationId: getVideos + description: 'Returns job status and content URLs when completed' + operationId: 'getVideos' parameters: - - in: path - name: jobId + - in: 'path' + name: 'jobId' required: true schema: - example: job-abc123 + example: 'job-abc123' minLength: 1 - type: string + type: 'string' responses: '200': content: application/json: example: - generation_id: gen-xyz789 - id: job-abc123 - polling_url: /api/v1/videos/job-abc123 - status: completed + generation_id: 'gen-xyz789' + id: 'job-abc123' + polling_url: '/api/v1/videos/job-abc123' + status: 'completed' unsigned_urls: - - https://storage.example.com/video.mp4 + - 'https://storage.example.com/video.mp4' usage: cost: 0.5 schema: $ref: '#/components/schemas/VideoGenerationResponse' - description: Video generation status + description: 'Video generation status' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Poll video generation status + description: 'Internal Server Error - Unexpected server error' + summary: 'Poll video generation status' tags: - - Video Generation - x-speakeasy-name-override: getGeneration + - 'Video Generation' + x-speakeasy-name-override: 'getGeneration' /videos/{jobId}/content: get: - description: Streams the generated video content from the upstream provider - operationId: listVideosContent + description: 'Streams the generated video content from the upstream provider' + operationId: 'listVideosContent' parameters: - - in: path - name: jobId + - in: 'path' + name: 'jobId' required: true schema: - example: job-abc123 + example: 'job-abc123' minLength: 1 - type: string - - in: query - name: index + type: 'string' + - in: 'query' + name: 'index' required: false schema: default: 0 example: 0 minimum: 0 - nullable: true - type: integer + type: + - 'integer' + - 'null' responses: '200': content: video/mp4: - example: + 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). + 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 + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error + description: 'Internal Server Error - Unexpected server error' '502': content: application/json: example: error: code: 502 - message: Provider returned error + message: 'Provider returned error' schema: $ref: '#/components/schemas/BadGatewayResponse' - description: Bad Gateway - Provider/upstream API failure - summary: Download generated video content + description: 'Bad Gateway - Provider/upstream API failure' + summary: 'Download generated video content' tags: - - Video Generation - x-speakeasy-name-override: getVideoContent + - '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 + description: 'Returns a list of all available video generation models and their properties' + operationId: 'listVideosModels' responses: '200': content: @@ -34937,12 +34429,12 @@ paths: example: data: - allowed_passthrough_parameters: [] - canonical_slug: google/veo-3.1 + canonical_slug: 'google/veo-3.1' created: 1700000000 - description: Google video generation model + description: 'Google video generation model' generate_audio: true - id: google/veo-3.1 - name: Veo 3.1 + id: 'google/veo-3.1' + name: 'Veo 3.1' pricing_skus: generate: '0.50' seed: null @@ -34952,66 +34444,65 @@ paths: - 5 - 8 supported_frame_images: - - first_frame - - last_frame + - 'first_frame' + - 'last_frame' supported_resolutions: - - 720p + - '720p' supported_sizes: null schema: $ref: '#/components/schemas/VideoModelsListResponse' - description: Returns a list of video generation models + description: 'Returns a list of video generation models' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List all video generation models + description: 'Internal Server Error - Unexpected server error' + summary: 'List all video generation models' tags: - - Video Generation + - 'Video Generation' /workspaces: get: - description: >- - List all workspaces for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) - required. - operationId: listWorkspaces + 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 + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -35019,74 +34510,72 @@ paths: 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 + 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 + name: 'Production' + slug: 'production' updated_at: '2025-08-24T15:45:00Z' total_count: 1 schema: $ref: '#/components/schemas/ListWorkspacesResponse' - description: List of workspaces + description: 'List of workspaces' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List workspaces + description: 'Internal Server Error - Unexpected server error' + summary: 'List workspaces' tags: - - Workspaces - x-speakeasy-name-override: list + - 'Workspaces' + x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + 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 @@ -35097,83 +34586,81 @@ paths: 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 + 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 + name: 'Production' + slug: 'production' updated_at: null schema: $ref: '#/components/schemas/CreateWorkspaceResponse' - description: Workspace created successfully + description: 'Workspace created successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Create a workspace' tags: - - Workspaces - x-speakeasy-name-override: create + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -35182,74 +34669,74 @@ paths: deleted: true schema: $ref: '#/components/schemas/DeleteWorkspaceResponse' - description: Workspace deleted successfully + description: 'Workspace deleted successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete a workspace' tags: - - Workspaces - x-speakeasy-name-override: delete + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -35257,78 +34744,76 @@ paths: 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 + 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 + name: 'Production' + slug: 'production' updated_at: '2025-08-24T15:45:00Z' schema: $ref: '#/components/schemas/GetWorkspaceResponse' - description: Workspace details + description: 'Workspace details' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Get a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Get a workspace' tags: - - Workspaces - x-speakeasy-name-override: get + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' requestBody: content: application/json: example: - name: Updated Workspace - slug: updated-workspace + name: 'Updated Workspace' + slug: 'updated-workspace' schema: $ref: '#/components/schemas/UpdateWorkspaceRequest' required: true @@ -35339,93 +34824,91 @@ paths: 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 + 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 + name: 'Updated Workspace' + slug: 'updated-workspace' updated_at: '2025-08-25T10:00:00Z' schema: $ref: '#/components/schemas/UpdateWorkspaceResponse' - description: Workspace updated successfully + description: 'Workspace updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Update a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Update a workspace' tags: - - Workspaces - x-speakeasy-name-override: update + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' responses: '200': content: @@ -35433,68 +34916,66 @@ paths: example: data: - created_at: '2025-08-24T10:30:00Z' - id: 770e8400-e29b-41d4-a716-446655440000 + id: '770e8400-e29b-41d4-a716-446655440000' limit_usd: 100 - reset_interval: monthly + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/ListWorkspaceBudgetsResponse' - description: Budgets retrieved successfully + description: 'Budgets retrieved successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List workspace budgets + description: 'Internal Server Error - Unexpected server error' + summary: 'List workspace budgets' tags: - - Workspaces - x-speakeasy-name-override: listBudgets + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + 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 + 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' @@ -35506,61 +34987,58 @@ paths: deleted: true schema: $ref: '#/components/schemas/DeleteWorkspaceBudgetResponse' - description: Budget deleted successfully + description: 'Budget deleted successfully' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Delete a workspace budget + description: 'Internal Server Error - Unexpected server error' + summary: 'Delete a workspace budget' tags: - - Workspaces - x-speakeasy-name-override: deleteBudget + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + 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 + 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' @@ -35579,96 +35057,95 @@ paths: example: data: created_at: '2025-08-24T10:30:00Z' - id: 770e8400-e29b-41d4-a716-446655440000 + id: '770e8400-e29b-41d4-a716-446655440000' limit_usd: 100 - reset_interval: monthly + reset_interval: 'monthly' updated_at: '2025-08-24T15:45:00Z' - workspace_id: 550e8400-e29b-41d4-a716-446655440000 + workspace_id: '550e8400-e29b-41d4-a716-446655440000' schema: $ref: '#/components/schemas/UpsertWorkspaceBudgetResponse' - description: Budget created or updated successfully + description: 'Budget created or updated successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Create or update a workspace budget + description: 'Internal Server Error - Unexpected server error' + summary: 'Create or update a workspace budget' tags: - - Workspaces - x-speakeasy-name-override: setBudget + - '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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + 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 + type: 'string' + - description: 'Number of records to skip for pagination' + in: 'query' + name: 'offset' required: false schema: default: 0 - description: Number of records to skip for pagination + 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 + type: + - 'integer' + - 'null' + - description: 'Maximum number of records to return (max 100)' + in: 'query' + name: 'limit' required: false schema: default: 50 - description: Maximum number of records to return (max 100) + description: 'Maximum number of records to return (max 100)' example: 50 maximum: 100 minimum: 1 - type: integer + type: 'integer' responses: '200': content: @@ -35676,92 +35153,90 @@ paths: 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 + 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 + description: 'List of workspace members' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: List workspace members + description: 'Internal Server Error - Unexpected server error' + summary: 'List workspace members' tags: - - Workspaces - x-speakeasy-name-override: listMembers + - 'Workspaces' + x-speakeasy-name-override: 'listMembers' x-speakeasy-pagination: inputs: - - in: parameters - name: offset - type: offset - - in: parameters - name: limit - type: limit + - in: 'parameters' + name: 'offset' + type: 'offset' + - in: 'parameters' + name: 'limit' + type: 'limit' outputs: - results: $.data - type: offsetLimit + 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 + 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 + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' requestBody: content: application/json: example: user_ids: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' schema: $ref: '#/components/schemas/BulkAddWorkspaceMembersRequest' required: true @@ -35773,91 +35248,88 @@ paths: 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 + 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 + description: 'Members added successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk add members to a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk add members to a workspace' tags: - - Workspaces - x-speakeasy-name-override: bulkAddMembers + - '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. - SCIM-managed members cannot be removed; changes must be made in your identity provider. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - operationId: bulkRemoveWorkspaceMembers + description: 'Remove multiple members from a workspace. Members with active API keys in the workspace cannot be removed. SCIM-managed members cannot be removed; changes must be made in your identity provider. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + operationId: 'bulkRemoveWorkspaceMembers' parameters: - - description: The workspace ID (UUID) or slug - in: path - name: id + - description: 'The workspace ID (UUID) or slug' + in: 'path' + name: 'id' required: true schema: - description: The workspace ID (UUID) or slug - example: production + description: 'The workspace ID (UUID) or slug' + example: 'production' minLength: 1 - type: string + type: 'string' requestBody: content: application/json: example: user_ids: - - user_abc123 - - user_def456 + - 'user_abc123' + - 'user_def456' schema: $ref: '#/components/schemas/BulkRemoveWorkspaceMembersRequest' required: true @@ -35869,131 +35341,131 @@ paths: removed_count: 2 schema: $ref: '#/components/schemas/BulkRemoveWorkspaceMembersResponse' - description: Members removed successfully + description: 'Members removed successfully' '400': content: application/json: example: error: code: 400 - message: Invalid request parameters + message: 'Invalid request parameters' schema: $ref: '#/components/schemas/BadRequestResponse' - description: Bad Request - Invalid request parameters or malformed input + description: 'Bad Request - Invalid request parameters or malformed input' '401': content: application/json: example: error: code: 401 - message: Missing Authentication header + message: 'Missing Authentication header' schema: $ref: '#/components/schemas/UnauthorizedResponse' - description: Unauthorized - Authentication required or invalid credentials + description: 'Unauthorized - Authentication required or invalid credentials' '403': content: application/json: example: error: code: 403 - message: Only management keys can perform this operation + message: 'Only management keys can perform this operation' schema: $ref: '#/components/schemas/ForbiddenResponse' - description: Forbidden - Authentication successful but insufficient permissions + description: 'Forbidden - Authentication successful but insufficient permissions' '404': content: application/json: example: error: code: 404 - message: Resource not found + message: 'Resource not found' schema: $ref: '#/components/schemas/NotFoundResponse' - description: Not Found - Resource does not exist + description: 'Not Found - Resource does not exist' '500': content: application/json: example: error: code: 500 - message: Internal Server Error + message: 'Internal Server Error' schema: $ref: '#/components/schemas/InternalServerResponse' - description: Internal Server Error - Unexpected server error - summary: Bulk remove members from a workspace + description: 'Internal Server Error - Unexpected server error' + summary: 'Bulk remove members from a workspace' tags: - - Workspaces - x-speakeasy-name-override: bulkRemoveMembers + - 'Workspaces' + x-speakeasy-name-override: 'bulkRemoveMembers' security: - apiKey: [] servers: - - description: Production server - url: https://openrouter.ai/api/v1 - x-speakeasy-server-id: production + - 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 + - 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 + type: 'exponential' x-speakeasy-retries: backoff: exponent: 1.5 @@ -36002,5 +35474,5 @@ x-speakeasy-retries: maxInterval: 60000 retryConnectionErrors: true statusCodes: - - 5XX - strategy: backoff + - '5XX' + strategy: 'backoff'