diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index 7a4f61f..a7c0037 100755 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -1,2947 +1,2450 @@ -openapi: 3.1.0 -info: - title: OpenRouter API - version: 1.0.0 - description: OpenAI-compatible API with additional OpenRouter features - contact: - name: OpenRouter Support - url: https://openrouter.ai/docs - email: support@openrouter.ai - license: - name: MIT - url: https://opensource.org/licenses/MIT -servers: - - url: https://openrouter.ai/api/v1 - description: Production server - x-speakeasy-server-id: production -security: - - apiKey: [] -externalDocs: - description: OpenRouter Documentation - url: https://openrouter.ai/docs components: + parameters: {} schemas: - OpenAIResponsesResponseStatus: - type: string - enum: - - completed - - incomplete - - in_progress - - failed - - cancelled - - queued - example: completed - FileCitation: - type: object + ActivityItem: + example: + byok_usage_inference: 0.012 + completion_tokens: 125 + date: '2025-08-24' + endpoint_id: 550e8400-e29b-41d4-a716-446655440000 + model: openai/gpt-4.1 + model_permaslug: openai/gpt-4.1-2025-04-14 + prompt_tokens: 50 + provider_name: OpenAI + reasoning_tokens: 25 + requests: 5 + usage: 0.015 properties: - type: + byok_usage_inference: + description: BYOK inference cost in USD (external credits spent) + example: 0.012 + format: double + type: number + completion_tokens: + description: Total completion tokens generated + example: 125 + type: integer + date: + description: Date of the activity (YYYY-MM-DD format) + example: '2025-08-24' type: string - enum: - - file_citation - file_id: + endpoint_id: + description: Unique identifier for the endpoint + example: 550e8400-e29b-41d4-a716-446655440000 type: string - filename: + model: + description: Model slug (e.g., "openai/gpt-4.1") + example: openai/gpt-4.1 type: string - index: + model_permaslug: + description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14") + example: openai/gpt-4.1-2025-04-14 + type: string + prompt_tokens: + description: Total prompt tokens used + example: 50 + type: integer + provider_name: + description: Name of the provider serving this endpoint + example: OpenAI + type: string + reasoning_tokens: + description: Total reasoning tokens used + example: 25 + type: integer + requests: + description: Number of requests made + example: 5 type: integer + usage: + description: Total cost in USD (OpenRouter credits spent) + example: 0.015 + format: double + type: number required: - - type - - file_id - - filename - - index + - date + - model + - model_permaslug + - endpoint_id + - provider_name + - usage + - byok_usage_inference + - requests + - prompt_tokens + - completion_tokens + - reasoning_tokens + type: object + ActivityResponse: example: - type: file_citation - file_id: file-abc123 - filename: research_paper.pdf - index: 0 - URLCitation: + data: + - byok_usage_inference: 0.012 + completion_tokens: 125 + date: '2025-08-24' + endpoint_id: 550e8400-e29b-41d4-a716-446655440000 + model: openai/gpt-4.1 + model_permaslug: openai/gpt-4.1-2025-04-14 + prompt_tokens: 50 + provider_name: OpenAI + reasoning_tokens: 25 + requests: 5 + usage: 0.015 + properties: + data: + description: List of activity items + items: + $ref: '#/components/schemas/ActivityItem' + type: array + required: + - data type: object + AnnotationAddedEvent: + allOf: + - $ref: '#/components/schemas/BaseAnnotationAddedEvent' + - properties: {} + type: object + description: Event emitted when a text annotation is added to output + example: + annotation: + end_index: 7 + start_index: 0 + title: Example + type: url_citation + url: https://example.com + annotation_index: 0 + content_index: 0 + item_id: item-1 + output_index: 0 + sequence_number: 5 + type: response.output_text.annotation.added + AnthropicBase64ImageSource: + example: + data: /9j/4AAQ... + media_type: image/jpeg + type: base64 properties: + data: + type: string + media_type: + $ref: '#/components/schemas/AnthropicImageMimeType' type: + enum: + - base64 + type: string + required: + - type + - media_type + - data + type: object + AnthropicBase64PdfSource: + example: + data: JVBERi0x... + media_type: application/pdf + type: base64 + properties: + data: type: string + media_type: enum: - - url_citation - url: + - application/pdf type: string - title: + type: + enum: + - base64 type: string - start_index: - type: integer - end_index: - type: integer required: - type - - url - - title - - start_index - - end_index + - media_type + - data + type: object + AnthropicBaseUsageIteration: example: - type: url_citation - start_index: 0 - end_index: 42 - title: OpenRouter Documentation - url: https://openrouter.ai/docs - FilePath: + cache_creation: null + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 100 + output_tokens: 50 + properties: + cache_creation: + $ref: '#/components/schemas/AnthropicIterationCacheCreation' + cache_creation_input_tokens: + type: integer + cache_read_input_tokens: + type: integer + input_tokens: + type: integer + output_tokens: + type: integer type: object + AnthropicBashCodeExecutionContent: + discriminator: + mapping: + bash_code_execution_result: '#/components/schemas/AnthropicBashCodeExecutionResult' + bash_code_execution_tool_result_error: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' + propertyName: type + example: + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: bash_code_execution_result + oneOf: + - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' + - $ref: '#/components/schemas/AnthropicBashCodeExecutionResult' + AnthropicBashCodeExecutionOutput: + example: + file_id: file_01abc + type: bash_code_execution_output properties: - type: + file_id: type: string + type: enum: - - file_path - file_id: + - bash_code_execution_output type: string - index: - type: integer required: - - type - file_id - - index + - type + type: object + AnthropicBashCodeExecutionResult: example: - type: file_path - file_id: file-xyz789 - index: 0 - OpenAIResponsesAnnotation: - anyOf: - - $ref: '#/components/schemas/FileCitation' - - $ref: '#/components/schemas/URLCitation' - - $ref: '#/components/schemas/FilePath' - example: - type: file_citation - file_id: file-abc123 - filename: research_paper.pdf - index: 0 - ResponseOutputText: - type: object + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: bash_code_execution_result properties: - type: - type: string - enum: - - output_text - text: - type: string - annotations: - type: array + content: items: - $ref: '#/components/schemas/OpenAIResponsesAnnotation' - logprobs: + $ref: '#/components/schemas/AnthropicBashCodeExecutionOutput' type: array - items: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - format: double - top_logprobs: - type: array - items: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - format: double - required: - - token - - bytes - - logprob - required: - - token - - bytes - - logprob - - top_logprobs - required: - - type - - text - example: - type: output_text - text: The capital of France is Paris. - annotations: - - type: url_citation - start_index: 0 - end_index: 42 - title: Paris - Wikipedia - url: https://en.wikipedia.org/wiki/Paris - OpenAIResponsesRefusalContent: - type: object - properties: - type: + return_code: + type: integer + stderr: + type: string + stdout: type: string + type: enum: - - refusal - refusal: + - bash_code_execution_result type: string required: + - content + - return_code + - stderr + - stdout - type - - refusal - example: - type: refusal - refusal: I'm sorry, I cannot assist with that request - OutputMessage: type: object + AnthropicBashCodeExecutionToolResult: + example: + content: + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: bash_code_execution_result + tool_use_id: srvtoolu_01abc + type: bash_code_execution_tool_result properties: - id: - type: string - role: + content: + $ref: '#/components/schemas/AnthropicBashCodeExecutionContent' + tool_use_id: type: string - enum: - - assistant type: - type: string enum: - - message - status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - incomplete - - type: string - enum: - - in_progress - content: - type: array - items: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - phase: - anyOf: - - type: string - enum: - - commentary - - type: string - enum: - - final_answer - - 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. + - bash_code_execution_tool_result + type: string required: - - id - - role - type - content - example: - id: msg-abc123 - role: assistant - type: message - status: completed - content: - - type: output_text - text: Hello! How can I help you today? - OutputMessageItem: - allOf: - - $ref: '#/components/schemas/OutputMessage' - - type: object - properties: {} - example: - id: msg-123 - type: message - role: assistant - status: completed - content: - - type: output_text - text: Hello! How can I help you? - annotations: [] - description: An output message item - ReasoningTextContent: + - tool_use_id type: object + AnthropicBashCodeExecutionToolResultError: + example: + error_code: unavailable + type: bash_code_execution_tool_result_error properties: - type: + error_code: + enum: + - invalid_tool_input + - unavailable + - too_many_requests + - execution_time_exceeded + - output_file_too_large type: string + type: enum: - - reasoning_text - text: + - bash_code_execution_tool_result_error type: string required: + - error_code - type - - text - example: - type: reasoning_text - text: Let me think step by step about this problem... - ReasoningSummaryText: type: object + AnthropicCacheControlDirective: + example: + type: ephemeral properties: + ttl: + $ref: '#/components/schemas/AnthropicCacheControlTtl' type: - type: string enum: - - summary_text - text: + - ephemeral type: string required: - type - - text - example: - type: summary_text - text: Analyzed the problem using first principles - ReasoningFormat: + type: object + AnthropicCacheControlTtl: + enum: + - 5m + - 1h + example: 5m type: string + AnthropicCacheCreation: + example: + ephemeral_1h_input_tokens: 0 + ephemeral_5m_input_tokens: 100 nullable: true - enum: - - unknown - - openai-responses-v1 - - azure-openai-responses-v1 - - xai-responses-v1 - - anthropic-claude-v1 - - google-gemini-v1 - - null - example: unknown - OutputItemReasoning: + properties: + ephemeral_1h_input_tokens: + type: integer + ephemeral_5m_input_tokens: + type: integer + required: + - ephemeral_5m_input_tokens + - ephemeral_1h_input_tokens type: object + AnthropicCaller: + discriminator: + mapping: + code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' + code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' + direct: '#/components/schemas/AnthropicDirectCaller' + propertyName: type + example: + type: direct + oneOf: + - $ref: '#/components/schemas/AnthropicDirectCaller' + - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' + - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' + AnthropicCitationCharLocation: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_char_index: 18 + file_id: null + start_char_index: 0 + type: char_location properties: - type: + cited_text: type: string - enum: - - reasoning - id: - type: string - content: - type: array - items: - $ref: '#/components/schemas/ReasoningTextContent' - summary: - type: array - items: - $ref: '#/components/schemas/ReasoningSummaryText' - encrypted_content: + document_index: + type: integer + document_title: + nullable: true type: string + end_char_index: + type: integer + file_id: nullable: true - status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - incomplete - - type: string - enum: - - in_progress + type: string + start_char_index: + type: integer + type: + enum: + - char_location + type: string required: - type - - id - - summary - example: - type: reasoning - id: reasoning-abc123 - summary: - - type: summary_text - text: Analyzed the problem using first principles - OutputReasoningItem: - allOf: - - $ref: '#/components/schemas/OutputItemReasoning' - - type: object - properties: - content: - type: array - nullable: true - items: - $ref: '#/components/schemas/ReasoningTextContent' - signature: - type: string - nullable: true - description: A signature for the reasoning content, used for verification - example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... - format: - $ref: '#/components/schemas/ReasoningFormat' - example: - id: reasoning-123 - type: reasoning - status: completed - summary: - - type: summary_text - text: Analyzed the problem and found the optimal solution. - content: - - type: reasoning_text - text: First, we analyze the problem... - signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... - format: anthropic-claude-v1 - description: An output item containing reasoning - OutputItemFunctionCall: + - cited_text + - document_index + - document_title + - start_char_index + - end_char_index + - file_id type: object + AnthropicCitationCharLocationParam: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_char_index: 18 + start_char_index: 0 + type: char_location properties: - type: + cited_text: + type: string + document_index: + type: integer + document_title: + nullable: true type: string + end_char_index: + type: integer + start_char_index: + type: integer + type: enum: - - function_call - id: + - char_location type: string - name: + required: + - type + - cited_text + - document_index + - document_title + - start_char_index + - end_char_index + type: object + AnthropicCitationContentBlockLocation: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_block_index: 1 + file_id: null + start_block_index: 0 + type: content_block_location + properties: + cited_text: type: string - arguments: + document_index: + type: integer + document_title: + nullable: true type: string - call_id: + end_block_index: + type: integer + file_id: + nullable: true + type: string + start_block_index: + type: integer + type: + enum: + - content_block_location type: string - status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - incomplete - - type: string - enum: - - in_progress required: - type - - name - - arguments - - call_id - example: - type: function_call - id: call-abc123 - name: get_weather - arguments: '{"location":"San Francisco","unit":"celsius"}' - call_id: call-abc123 - OutputFunctionCallItem: - allOf: - - $ref: '#/components/schemas/OutputItemFunctionCall' - - type: object - properties: {} - example: - id: fc-abc123 - type: function_call - call_id: call-abc123 - name: get_weather - arguments: '{"location":"San Francisco"}' - status: completed - WebSearchSource: + - cited_text + - document_index + - document_title + - start_block_index + - end_block_index + - file_id type: object + AnthropicCitationContentBlockLocationParam: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_block_index: 1 + start_block_index: 0 + type: content_block_location properties: - type: + cited_text: + type: string + document_index: + type: integer + document_title: + nullable: true type: string + end_block_index: + type: integer + start_block_index: + type: integer + type: enum: - - url - url: + - content_block_location type: string required: - type - - url - example: - type: url - url: https://example.com/article - WebSearchStatus: - type: string - enum: - - completed - - searching - - in_progress - - failed - example: completed - OutputItemWebSearchCall: + - cited_text + - document_index + - document_title + - start_block_index + - end_block_index type: object + AnthropicCitationPageLocation: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_page_number: 2 + file_id: null + start_page_number: 1 + type: page_location properties: - type: + cited_text: + type: string + document_index: + type: integer + document_title: + nullable: true + type: string + end_page_number: + type: integer + file_id: + nullable: true type: string + start_page_number: + type: integer + type: enum: - - web_search_call - id: + - page_location type: string - action: - oneOf: - - type: object - properties: - type: - type: string - enum: - - search - query: - type: string - queries: - type: array - items: - type: string - sources: - type: array - items: - $ref: '#/components/schemas/WebSearchSource' - required: - - type - - query - - type: object - properties: - type: - type: string - enum: - - open_page - url: - type: string - nullable: true - required: - - type - - type: object - properties: - type: - type: string - enum: - - find_in_page - pattern: - type: string - url: - type: string - required: - - type - - pattern - - url - status: - $ref: '#/components/schemas/WebSearchStatus' required: - type - - id - - action - - status - example: - type: web_search_call - id: search-abc123 - action: - type: search - query: OpenAI API - status: completed - OutputWebSearchCallItem: - allOf: - - $ref: '#/components/schemas/OutputItemWebSearchCall' - - type: object - properties: {} - example: - id: ws-abc123 - type: web_search_call - status: completed - OutputItemFileSearchCall: + - cited_text + - document_index + - document_title + - start_page_number + - end_page_number + - file_id type: object + AnthropicCitationPageLocationParam: + example: + cited_text: Example cited text + document_index: 0 + document_title: null + end_page_number: 2 + start_page_number: 1 + type: page_location properties: - type: + cited_text: + type: string + document_index: + type: integer + document_title: + nullable: true type: string + end_page_number: + type: integer + start_page_number: + type: integer + type: enum: - - file_search_call - id: + - page_location type: string - queries: - type: array - items: - type: string - status: - $ref: '#/components/schemas/WebSearchStatus' required: - type - - id - - queries - - status - example: - type: file_search_call - id: filesearch-abc123 - queries: - - machine learning algorithms - - neural networks - status: completed - OutputFileSearchCallItem: - allOf: - - $ref: '#/components/schemas/OutputItemFileSearchCall' - - type: object - properties: {} + - cited_text + - document_index + - document_title + - start_page_number + - end_page_number + type: object + AnthropicCitationsConfig: example: - id: fs-abc123 - type: file_search_call - status: completed - queries: - - search term - results: [] - ImageGenerationStatus: - type: string - enum: - - in_progress - - completed - - generating - - failed - example: completed - OutputItemImageGenerationCall: + enabled: true + nullable: true + properties: + enabled: + type: boolean + required: + - enabled type: object + AnthropicCitationSearchResultLocation: + example: + cited_text: Example cited text + end_block_index: 1 + search_result_index: 0 + source: example_source + start_block_index: 0 + title: Example Result + type: search_result_location properties: - type: - type: string - enum: - - image_generation_call - id: + cited_text: type: string - result: + end_block_index: + type: integer + search_result_index: + type: integer + source: type: string + start_block_index: + type: integer + title: nullable: true - default: null - status: - $ref: '#/components/schemas/ImageGenerationStatus' + type: string + type: + enum: + - search_result_location + type: string required: - type - - id - - status - example: - type: image_generation_call - id: imagegen-abc123 - result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== - status: completed - OutputImageGenerationCallItem: - allOf: - - $ref: '#/components/schemas/OutputItemImageGenerationCall' - - type: object - properties: {} - example: - id: img-abc123 - type: image_generation_call - status: completed - result: null - ToolCallStatus: - type: string - enum: - - in_progress - - completed - - incomplete - example: completed - OutputDatetimeItem: + - cited_text + - search_result_index + - source + - title + - start_block_index + - end_block_index type: object + AnthropicCitationWebSearchResultLocation: + example: + cited_text: Example cited text + encrypted_index: enc_idx_0 + title: Example Page + type: web_search_result_location + url: https://example.com properties: - id: + cited_text: type: string - status: - $ref: '#/components/schemas/ToolCallStatus' - type: + encrypted_index: + type: string + title: + nullable: true type: string + type: enum: - - openrouter:datetime - datetime: + - web_search_result_location type: string - description: ISO 8601 datetime string - timezone: + url: type: string - description: IANA timezone name required: - - status - type - - datetime - - timezone - description: An openrouter:datetime server tool output item - example: - type: openrouter:datetime - id: dt_tmp_abc123 - status: completed - datetime: '2026-03-12T14:30:00.000Z' - timezone: UTC - OutputWebSearchServerToolItem: + - cited_text + - encrypted_index + - title + - url type: object + AnthropicCodeExecution20250825Caller: + example: + tool_id: toolu_01abc + type: code_execution_20250825 properties: - id: + tool_id: type: string - status: - $ref: '#/components/schemas/ToolCallStatus' type: - type: string enum: - - openrouter:web_search + - code_execution_20250825 + type: string required: - - status - type - description: An openrouter:web_search server tool output item + - tool_id + type: object + AnthropicCodeExecution20260120Caller: example: - type: openrouter:web_search - id: ws_tmp_abc123 - status: completed - OutputItems: - oneOf: - - $ref: '#/components/schemas/OutputMessageItem' - - $ref: '#/components/schemas/OutputReasoningItem' - - $ref: '#/components/schemas/OutputFunctionCallItem' - - $ref: '#/components/schemas/OutputWebSearchCallItem' - - $ref: '#/components/schemas/OutputFileSearchCallItem' - - $ref: '#/components/schemas/OutputImageGenerationCallItem' - - $ref: '#/components/schemas/OutputDatetimeItem' - - $ref: '#/components/schemas/OutputWebSearchServerToolItem' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OutputMessageItem' - reasoning: '#/components/schemas/OutputReasoningItem' - function_call: '#/components/schemas/OutputFunctionCallItem' - web_search_call: '#/components/schemas/OutputWebSearchCallItem' - file_search_call: '#/components/schemas/OutputFileSearchCallItem' - image_generation_call: '#/components/schemas/OutputImageGenerationCallItem' - openrouter:datetime: '#/components/schemas/OutputDatetimeItem' - openrouter:web_search: '#/components/schemas/OutputWebSearchServerToolItem' - description: An output item from the response - example: - id: msg-abc123 - role: assistant - type: message - status: completed - content: - - type: output_text - text: Hello! How can I help you today? - ResponsesErrorField: - type: object - nullable: true + tool_id: toolu_01abc + type: code_execution_20260120 properties: - code: + tool_id: type: string + type: enum: - - server_error - - rate_limit_exceeded - - invalid_prompt - - vector_store_timeout - - invalid_image - - invalid_image_format - - invalid_base64_image - - invalid_image_url - - image_too_large - - image_too_small - - image_parse_error - - image_content_policy_violation - - invalid_image_mode - - image_file_too_large - - unsupported_image_media_type - - empty_image_file - - failed_to_download_image - - image_file_not_found - message: + - code_execution_20260120 type: string required: - - code - - message - description: Error information returned from the API - example: - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. - IncompleteDetails: + - type + - tool_id type: object - nullable: true + AnthropicCodeExecutionContent: + discriminator: + mapping: + code_execution_result: '#/components/schemas/AnthropicCodeExecutionResult' + code_execution_tool_result_error: '#/components/schemas/AnthropicCodeExecutionToolResultError' + encrypted_code_execution_result: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' + propertyName: type + example: + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: code_execution_result + oneOf: + - $ref: '#/components/schemas/AnthropicCodeExecutionToolResultError' + - $ref: '#/components/schemas/AnthropicCodeExecutionResult' + - $ref: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' + AnthropicCodeExecutionOutput: + example: + file_id: file_01abc + type: code_execution_output properties: - reason: + file_id: type: string + type: enum: - - max_output_tokens - - content_filter - example: - reason: max_output_tokens - OpenAIResponsesUsage: - type: object - properties: - input_tokens: - type: integer - input_tokens_details: - type: object - properties: - cached_tokens: - type: integer - required: - - cached_tokens - output_tokens: - type: integer - output_tokens_details: - type: object - properties: - reasoning_tokens: - type: integer - required: - - reasoning_tokens - total_tokens: - type: integer + - code_execution_output + type: string required: - - input_tokens - - input_tokens_details - - output_tokens - - output_tokens_details - - total_tokens - example: - input_tokens: 100 - input_tokens_details: - cached_tokens: 0 - output_tokens: 50 - output_tokens_details: - reasoning_tokens: 0 - total_tokens: 150 - Usage: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesUsage' - - type: object - nullable: true - properties: - cost: - type: number - format: double - description: Cost of the completion - is_byok: - type: boolean - description: Whether a request was made using a Bring Your Own Key configuration - cost_details: - type: object - properties: - upstream_inference_cost: - type: number - format: double - upstream_inference_input_cost: - type: number - format: double - upstream_inference_output_cost: - type: number - format: double - required: - - upstream_inference_input_cost - - upstream_inference_output_cost - example: - input_tokens: 10 - output_tokens: 25 - total_tokens: 35 - input_tokens_details: - cached_tokens: 0 - output_tokens_details: - reasoning_tokens: 0 - cost: 0.0012 - cost_details: - upstream_inference_cost: null - upstream_inference_input_cost: 0.0008 - upstream_inference_output_cost: 0.0004 - description: Token usage information for the response - InputText: + - file_id + - type type: object + AnthropicCodeExecutionResult: + example: + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: code_execution_result properties: - type: + content: + items: + $ref: '#/components/schemas/AnthropicCodeExecutionOutput' + type: array + return_code: + type: integer + stderr: type: string + stdout: + type: string + type: enum: - - input_text - text: + - code_execution_result type: string required: + - content + - return_code + - stderr + - stdout - type - - text - description: Text input content item - example: - type: input_text - text: Hello, how can I help you? - InputImage: type: object + AnthropicCodeExecutionToolResult: + example: + content: + content: [] + return_code: 0 + stderr: '' + stdout: Hello + type: code_execution_result + tool_use_id: srvtoolu_01abc + type: code_execution_tool_result properties: - type: - type: string - enum: - - input_image - detail: + content: + $ref: '#/components/schemas/AnthropicCodeExecutionContent' + tool_use_id: type: string + type: enum: - - auto - - high - - low - image_url: + - code_execution_tool_result type: string - nullable: true required: - type - - detail - description: Image input content item - example: - type: input_image - detail: auto - image_url: https://example.com/image.jpg - InputFile: + - content + - tool_use_id type: object + AnthropicCodeExecutionToolResultError: + example: + error_code: unavailable + type: code_execution_tool_result_error properties: + error_code: + $ref: '#/components/schemas/AnthropicServerToolErrorCode' type: - type: string enum: - - input_file - file_id: + - code_execution_tool_result_error type: string + required: + - error_code + - type + type: object + AnthropicCompactionBlock: + example: + content: Compacted summary of conversation. + type: compaction + properties: + content: nullable: true - file_data: - type: string - filename: type: string - file_url: + type: + enum: + - compaction type: string required: - type - description: File input content item - example: - type: input_file - file_id: file-abc123 - filename: document.pdf - InputAudio: + - content type: object - properties: - type: - type: string - enum: - - input_audio - input_audio: - type: object - properties: - data: - type: string - format: - type: string + AnthropicCompactionUsageIteration: + allOf: + - $ref: '#/components/schemas/AnthropicBaseUsageIteration' + - properties: + type: enum: - - mp3 - - wav + - compaction + type: string required: - - data - - format - required: - - type - - input_audio - description: Audio input content item + - type + type: object example: - type: input_audio - input_audio: - data: SGVsbG8gV29ybGQ= - format: mp3 - OpenAIResponseInputMessageItem: - type: object + cache_creation: null + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 50 + output_tokens: 25 + type: compaction + AnthropicContainer: + example: + expires_at: '2026-04-08T00:00:00Z' + id: ctr_01abc + nullable: true properties: - id: + expires_at: type: string - type: + id: type: string - enum: - - message - role: - anyOf: - - type: string - enum: - - user - - type: string - enum: - - system - - type: string - enum: - - developer - content: - type: array - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - $ref: '#/components/schemas/InputImage' - - $ref: '#/components/schemas/InputFile' - - $ref: '#/components/schemas/InputAudio' - discriminator: - propertyName: type - mapping: - input_text: '#/components/schemas/InputText' - input_image: '#/components/schemas/InputImage' - input_file: '#/components/schemas/InputFile' - input_audio: '#/components/schemas/InputAudio' required: - id - - role - - content - example: - id: msg-abc123 - type: message - role: user - content: - - type: input_text - text: Hello, how are you? - OpenAIResponseFunctionToolCallOutput: + - expires_at type: object + AnthropicContainerUpload: + example: + file_id: file_01abc + type: container_upload properties: + file_id: + type: string type: + enum: + - container_upload type: string + required: + - type + - file_id + type: object + AnthropicDirectCaller: + example: + type: direct + properties: + type: enum: - - function_call_output - id: + - direct type: string + required: + - type + type: object + AnthropicDocumentBlock: + example: + citations: null + source: + data: Hello, world! + media_type: text/plain + type: text + title: null + type: document + properties: + citations: + $ref: '#/components/schemas/AnthropicCitationsConfig' + source: + anyOf: + - $ref: '#/components/schemas/AnthropicBase64PdfSource' + - $ref: '#/components/schemas/AnthropicPlainTextSource' + title: nullable: true - call_id: type: string - output: - anyOf: - - type: string - - type: array - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - $ref: '#/components/schemas/InputImage' - - $ref: '#/components/schemas/InputFile' - discriminator: - propertyName: type - mapping: - input_text: '#/components/schemas/InputText' - input_image: '#/components/schemas/InputImage' - input_file: '#/components/schemas/InputFile' - status: - allOf: - - $ref: '#/components/schemas/ToolCallStatus' - - nullable: true + type: + enum: + - document + type: string required: + - citations + - source + - title - type - - call_id - - output - example: - type: function_call_output - call_id: call-abc123 - output: '{"temperature":72,"conditions":"sunny"}' - OpenAIResponseFunctionToolCall: type: object + AnthropicDocumentBlockParam: + example: + source: + data: Hello, world! + media_type: text/plain + type: text + type: document properties: - type: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + citations: + nullable: true + properties: + enabled: + type: boolean + type: object + context: + nullable: true + type: string + source: + oneOf: + - $ref: '#/components/schemas/AnthropicBase64PdfSource' + - $ref: '#/components/schemas/AnthropicPlainTextSource' + - properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + image: '#/components/schemas/AnthropicImageBlockParam' + text: '#/components/schemas/AnthropicTextBlockParam' + propertyName: type + oneOf: + - $ref: '#/components/schemas/AnthropicTextBlockParam' + - $ref: '#/components/schemas/AnthropicImageBlockParam' + type: array + type: + enum: + - content + type: string + required: + - type + - content + type: object + - $ref: '#/components/schemas/AnthropicUrlPdfSource' + title: + nullable: true type: string + type: enum: - - function_call - call_id: + - document type: string - name: + required: + - type + - source + type: object + AnthropicEncryptedCodeExecutionResult: + example: + content: [] + encrypted_stdout: enc_stdout + return_code: 0 + stderr: '' + type: encrypted_code_execution_result + properties: + content: + items: + $ref: '#/components/schemas/AnthropicCodeExecutionOutput' + type: array + encrypted_stdout: type: string - arguments: + return_code: + type: integer + stderr: type: string - id: + type: + enum: + - encrypted_code_execution_result type: string - status: - $ref: '#/components/schemas/ToolCallStatus' required: + - content + - encrypted_stdout + - return_code + - stderr - type - - call_id - - name - - arguments + type: object + AnthropicImageBlockParam: example: - type: function_call - call_id: call-abc123 - name: get_weather - arguments: '{"location":"San Francisco"}' - id: fc-abc123 - status: completed - BaseInputs: - anyOf: - - type: string - - type: array - items: - anyOf: - - type: object - properties: - type: - type: string - enum: - - message - role: - anyOf: - - type: string - enum: - - user - - type: string - enum: - - system - - type: string - enum: - - assistant - - type: string - enum: - - developer - content: - anyOf: - - type: array - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - $ref: '#/components/schemas/InputImage' - - $ref: '#/components/schemas/InputFile' - - $ref: '#/components/schemas/InputAudio' - discriminator: - propertyName: type - mapping: - input_text: '#/components/schemas/InputText' - input_image: '#/components/schemas/InputImage' - input_file: '#/components/schemas/InputFile' - input_audio: '#/components/schemas/InputAudio' - - type: string - phase: - anyOf: - - type: string - enum: - - commentary - - type: string - enum: - - final_answer - - nullable: true - required: - - role - - content - - $ref: '#/components/schemas/OpenAIResponseInputMessageItem' - - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' - - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' - - $ref: '#/components/schemas/OutputItemImageGenerationCall' - - $ref: '#/components/schemas/OutputMessage' - - nullable: true - example: - - role: user - content: What is the weather today? - RequestMetadata: - type: object - nullable: true - additionalProperties: - type: string - maxLength: 512 - description: >- - Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must - be ≤512 characters. Maximum 16 pairs allowed. - example: - user_id: '123' - session_id: abc-def-ghi - FunctionTool: - type: object + source: + data: /9j/4AAQ... + media_type: image/jpeg + type: base64 + type: image properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + source: + discriminator: + mapping: + base64: '#/components/schemas/AnthropicBase64ImageSource' + url: '#/components/schemas/AnthropicUrlImageSource' + propertyName: type + oneOf: + - $ref: '#/components/schemas/AnthropicBase64ImageSource' + - $ref: '#/components/schemas/AnthropicUrlImageSource' type: - type: string enum: - - function - name: - type: string - description: + - image type: string - nullable: true - strict: - type: boolean - nullable: true - parameters: - type: object - nullable: true - additionalProperties: - nullable: true required: - type - - name - - parameters - description: Function tool definition - example: - type: function - name: get_weather - description: Get the current weather in a location - parameters: - type: object - properties: - location: - type: string - description: The city and state - unit: - type: string - enum: - - celsius - - fahrenheit - required: - - location - SearchContextSizeEnum: - type: string - enum: - - low - - medium - - high - description: Size of the search context for web search tools - example: medium - Preview_WebSearchUserLocation: + - source type: object + AnthropicImageMimeType: + enum: + - image/jpeg + - image/png + - image/gif + - image/webp + example: image/jpeg + type: string + AnthropicInputTokensClearAtLeast: + example: + type: input_tokens + value: 50000 nullable: true properties: type: - type: string enum: - - approximate - city: - type: string - nullable: true - country: - type: string - nullable: true - region: - type: string - nullable: true - timezone: + - input_tokens type: string - nullable: true + value: + type: integer required: - type - example: - type: approximate - city: San Francisco - country: USA - region: California - timezone: America/Los_Angeles - WebSearchEngineEnum: - type: string - enum: - - auto - - native - - exa - - firecrawl - - parallel - 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. - example: auto - WebSearchDomainFilter: + - value type: object - nullable: true - properties: - allowed_domains: - type: array - nullable: true - items: - type: string - excluded_domains: - type: array - nullable: true - items: - type: string + AnthropicInputTokensTrigger: example: - allowed_domains: - - example.com - excluded_domains: - - spam.com - Preview_WebSearchServerTool: - type: object + type: input_tokens + value: 100000 properties: type: - type: string enum: - - web_search_preview - search_context_size: - $ref: '#/components/schemas/SearchContextSizeEnum' - user_location: - $ref: '#/components/schemas/Preview_WebSearchUserLocation' - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: + - input_tokens + type: string + value: type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 - filters: - $ref: '#/components/schemas/WebSearchDomainFilter' required: - type - description: Web search preview tool configuration - example: - type: web_search_preview - Preview_20250311_WebSearchServerTool: + - value type: object + AnthropicIterationCacheCreation: + default: null + example: + ephemeral_1h_input_tokens: 0 + ephemeral_5m_input_tokens: 0 + nullable: true properties: - type: - type: string - enum: - - web_search_preview_2025_03_11 - search_context_size: - $ref: '#/components/schemas/SearchContextSizeEnum' - user_location: - $ref: '#/components/schemas/Preview_WebSearchUserLocation' - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: + ephemeral_1h_input_tokens: + type: integer + ephemeral_5m_input_tokens: type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 - filters: - $ref: '#/components/schemas/WebSearchDomainFilter' - required: - - type - description: Web search preview tool configuration (2025-03-11 version) - example: - type: web_search_preview_2025_03_11 - WebSearchUserLocation: type: object - nullable: true + AnthropicMessageUsageIteration: + allOf: + - $ref: '#/components/schemas/AnthropicBaseUsageIteration' + - properties: + type: + enum: + - message + type: string + required: + - type + type: object + example: + cache_creation: null + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 100 + output_tokens: 50 + type: message + AnthropicPlainTextSource: + example: + data: Hello, world! + media_type: text/plain + type: text properties: - type: + data: type: string + media_type: enum: - - approximate - city: - type: string - nullable: true - country: - type: string - nullable: true - region: + - text/plain type: string - nullable: true - timezone: + type: + enum: + - text type: string - nullable: true - description: User location information for web search - example: - type: approximate - city: San Francisco - country: USA - region: California - timezone: America/Los_Angeles - Legacy_WebSearchServerTool: + required: + - type + - media_type + - data type: object + AnthropicRedactedThinkingBlock: + example: + data: cmVkYWN0ZWQ= + type: redacted_thinking properties: - type: + data: type: string + type: enum: - - web_search - filters: - $ref: '#/components/schemas/WebSearchDomainFilter' - search_context_size: - $ref: '#/components/schemas/SearchContextSizeEnum' - user_location: - $ref: '#/components/schemas/WebSearchUserLocation' - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: - type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 + - redacted_thinking + type: string required: - type - description: Web search tool configuration - example: - type: web_search - engine: auto - filters: - allowed_domains: - - example.com - WebSearchServerTool: + - data type: object + AnthropicSearchResultBlockParam: + example: + content: + - text: Result content + type: text + source: example_source + title: Example Result + type: search_result properties: - type: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + citations: + properties: + enabled: + type: boolean + type: object + content: + items: + $ref: '#/components/schemas/AnthropicTextBlockParam' + type: array + source: + type: string + title: type: string + type: enum: - - web_search_2025_08_26 - filters: - $ref: '#/components/schemas/WebSearchDomainFilter' - search_context_size: - $ref: '#/components/schemas/SearchContextSizeEnum' - user_location: - $ref: '#/components/schemas/WebSearchUserLocation' - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: - type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 + - search_result + type: string required: - type - description: Web search tool configuration (2025-08-26 version) + - source + - title + - content + type: object + AnthropicServerToolErrorCode: + enum: + - invalid_tool_input + - unavailable + - too_many_requests + - execution_time_exceeded + example: unavailable + type: string + AnthropicServerToolName: + enum: + - web_search + - web_fetch + - code_execution + - bash_code_execution + - text_editor_code_execution + - tool_search_tool_regex + - tool_search_tool_bm25 + example: web_search + type: string + AnthropicServerToolUsage: example: - type: web_search_2025_08_26 - engine: auto - filters: - allowed_domains: - - example.com - CompoundFilter: + web_fetch_requests: 0 + web_search_requests: 1 + nullable: true + properties: + web_fetch_requests: + type: integer + web_search_requests: + type: integer + required: + - web_search_requests + - web_fetch_requests type: object + AnthropicServerToolUseBlock: + example: + caller: + type: direct + id: srvtoolu_01abc + input: + query: latest news + name: web_search + type: server_tool_use properties: - type: + caller: + $ref: '#/components/schemas/AnthropicCaller' + id: type: string + input: + nullable: true + name: + $ref: '#/components/schemas/AnthropicServerToolName' + type: enum: - - and - - or - filters: - type: array - items: - type: object - additionalProperties: - nullable: true + - server_tool_use + type: string required: - type - - filters - description: A compound filter that combines multiple comparison or compound filters - example: - type: and - filters: - - key: author - type: eq - value: Alice - FileSearchServerTool: + - id + - caller + - name type: object + AnthropicServiceTier: + enum: + - standard + - priority + - batch + - null + example: standard + nullable: true + type: string + AnthropicSpeed: + enum: + - fast + - standard + - null + example: standard + nullable: true + type: string + AnthropicTextBlock: + example: + citations: null + text: Hello, world! + type: text properties: - type: + citations: + items: + $ref: '#/components/schemas/AnthropicTextCitation' + nullable: true + type: array + text: type: string + type: enum: - - file_search - vector_store_ids: - type: array - items: - type: string - filters: - anyOf: - - type: object - properties: - key: - type: string - type: - type: string - enum: - - eq - - ne - - gt - - gte - - lt - - lte - value: - anyOf: - - type: string - - type: number - format: double - - type: boolean - - type: array - items: - anyOf: - - type: string - - type: number - format: double - required: - - key - - type - - value - - $ref: '#/components/schemas/CompoundFilter' - - nullable: true - max_num_results: - type: integer - ranking_options: - type: object - properties: - ranker: - type: string - enum: - - auto - - default-2024-11-15 - score_threshold: - type: number - format: double + - text + type: string required: - type - - vector_store_ids - description: File search tool configuration - example: - type: file_search - vector_store_ids: - - vs_abc123 - ComputerUseServerTool: + - text + - citations type: object + AnthropicTextBlockParam: + example: + text: Hello, world! + type: text properties: - type: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + citations: + items: + discriminator: + mapping: + char_location: '#/components/schemas/AnthropicCitationCharLocationParam' + content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam' + page_location: '#/components/schemas/AnthropicCitationPageLocationParam' + search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' + web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + propertyName: type + oneOf: + - $ref: '#/components/schemas/AnthropicCitationCharLocationParam' + - $ref: '#/components/schemas/AnthropicCitationPageLocationParam' + - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam' + - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' + nullable: true + type: array + text: type: string + type: enum: - - computer_use_preview - display_height: - type: integer - display_width: - type: integer - environment: + - text type: string - enum: - - windows - - mac - - linux - - ubuntu - - browser required: - type - - display_height - - display_width - - environment - description: Computer use preview tool configuration - example: - type: computer_use_preview - display_height: 768 - display_width: 1024 - environment: linux - CodeInterpreterServerTool: + - text type: object + AnthropicTextCitation: + discriminator: + mapping: + char_location: '#/components/schemas/AnthropicCitationCharLocation' + content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' + page_location: '#/components/schemas/AnthropicCitationPageLocation' + search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' + web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + propertyName: type + example: + cited_text: Example text + document_index: 0 + document_title: null + end_char_index: 10 + file_id: null + start_char_index: 0 + type: char_location + oneOf: + - $ref: '#/components/schemas/AnthropicCitationCharLocation' + - $ref: '#/components/schemas/AnthropicCitationPageLocation' + - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation' + - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' + AnthropicTextEditorCodeExecutionContent: + discriminator: + mapping: + text_editor_code_execution_create_result: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' + text_editor_code_execution_str_replace_result: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' + text_editor_code_execution_tool_result_error: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' + text_editor_code_execution_view_result: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' + propertyName: type + example: + content: file content + file_type: text + num_lines: 10 + start_line: 1 + total_lines: 10 + type: text_editor_code_execution_view_result + oneOf: + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' + AnthropicTextEditorCodeExecutionCreateResult: + example: + is_file_update: false + type: text_editor_code_execution_create_result properties: + is_file_update: + type: boolean type: - type: string enum: - - code_interpreter - container: - anyOf: - - type: string - - type: object - properties: - type: - type: string - enum: - - auto - file_ids: - type: array - items: - type: string - memory_limit: - type: string - nullable: true - enum: - - 1g - - 4g - - 16g - - 64g - - null - required: - - type + - text_editor_code_execution_create_result + type: string required: + - is_file_update - type - - container - description: Code interpreter tool configuration - example: - type: code_interpreter - container: auto - McpServerTool: type: object + AnthropicTextEditorCodeExecutionStrReplaceResult: + example: + lines: null + new_lines: null + new_start: null + old_lines: null + old_start: null + type: text_editor_code_execution_str_replace_result properties: + lines: + items: + type: string + nullable: true + type: array + new_lines: + type: integer + new_start: + type: integer + old_lines: + type: integer + old_start: + type: integer type: - type: string enum: - - mcp - server_label: + - text_editor_code_execution_str_replace_result type: string - allowed_tools: - anyOf: - - type: array - items: - type: string - - type: object - properties: - tool_names: - type: array - items: - type: string - read_only: - type: boolean - - nullable: true - authorization: + required: + - lines + - new_lines + - new_start + - old_lines + - old_start + - type + type: object + AnthropicTextEditorCodeExecutionToolResult: + example: + content: + content: file content + file_type: text + num_lines: 10 + start_line: 1 + total_lines: 10 + type: text_editor_code_execution_view_result + tool_use_id: srvtoolu_01abc + type: text_editor_code_execution_tool_result + properties: + content: + $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionContent' + tool_use_id: type: string - connector_id: + type: + enum: + - text_editor_code_execution_tool_result type: string + required: + - type + - content + - tool_use_id + type: object + AnthropicTextEditorCodeExecutionToolResultError: + example: + error_code: unavailable + error_message: null + type: text_editor_code_execution_tool_result_error + properties: + error_code: enum: - - connector_dropbox - - connector_gmail - - connector_googlecalendar - - connector_googledrive - - connector_microsoftteams - - connector_outlookcalendar - - connector_outlookemail - - connector_sharepoint - headers: - type: object + - invalid_tool_input + - unavailable + - too_many_requests + - execution_time_exceeded + - file_not_found + type: string + error_message: nullable: true - additionalProperties: - type: string - require_approval: - anyOf: - - type: object - properties: - never: - type: object - properties: - tool_names: - type: array - items: - type: string - always: - type: object - properties: - tool_names: - type: array - items: - type: string - - type: string - enum: - - always - - type: string - enum: - - never - - nullable: true - server_description: type: string - server_url: + type: + enum: + - text_editor_code_execution_tool_result_error type: string required: + - error_code + - error_message - type - - server_label - description: MCP (Model Context Protocol) tool configuration - example: - type: mcp - server_label: my-server - server_url: https://example.com/mcp - ImageGenerationServerTool: type: object + AnthropicTextEditorCodeExecutionViewResult: + example: + content: file content + file_type: text + num_lines: 10 + start_line: 1 + total_lines: 10 + type: text_editor_code_execution_view_result properties: - type: - type: string - enum: - - image_generation - background: - type: string - enum: - - transparent - - opaque - - auto - input_fidelity: - type: string - nullable: true - enum: - - high - - low - - null - input_image_mask: - type: object - properties: - image_url: - type: string - file_id: - type: string - model: + content: type: string + file_type: enum: - - gpt-image-1 - - gpt-image-1-mini - moderation: + - text + - image + - pdf type: string - enum: - - auto - - low - output_compression: + num_lines: type: integer - output_format: - type: string - enum: - - png - - webp - - jpeg - partial_images: + start_line: type: integer - quality: - type: string + total_lines: + type: integer + type: enum: - - low - - medium - - high - - auto - size: + - text_editor_code_execution_view_result type: string - enum: - - 1024x1024 - - 1024x1536 - - 1536x1024 - - auto required: + - content + - file_type + - num_lines + - start_line + - total_lines - type - description: Image generation tool configuration - example: - type: image_generation - quality: high - CodexLocalShellTool: type: object + AnthropicThinkingBlock: + example: + signature: sig_abc123 + thinking: Let me think about this... + type: thinking properties: - type: + signature: + type: string + thinking: type: string + type: enum: - - local_shell + - thinking + type: string required: - type - description: Local shell tool configuration - example: - type: local_shell - ShellServerTool: + - thinking + - signature type: object + AnthropicThinkingTurns: + example: + type: thinking_turns + value: 3 properties: type: - type: string enum: - - shell + - thinking_turns + type: string + value: + type: integer required: - type - description: Shell tool configuration - example: - type: shell - ApplyPatchServerTool: + - value type: object + AnthropicToolReference: + example: + tool_name: my_tool + type: tool_reference properties: - type: + tool_name: type: string + type: enum: - - apply_patch + - tool_reference + type: string required: + - tool_name - type - description: Apply patch tool configuration - example: - type: apply_patch - CustomTool: type: object + AnthropicToolSearchContent: + discriminator: + mapping: + tool_search_tool_result_error: '#/components/schemas/AnthropicToolSearchResultError' + tool_search_tool_search_result: '#/components/schemas/AnthropicToolSearchResult' + propertyName: type + example: + tool_references: + - tool_name: my_tool + type: tool_reference + type: tool_search_tool_search_result + oneOf: + - $ref: '#/components/schemas/AnthropicToolSearchResultError' + - $ref: '#/components/schemas/AnthropicToolSearchResult' + AnthropicToolSearchResult: + example: + tool_references: + - tool_name: my_tool + type: tool_reference + type: tool_search_tool_search_result properties: + tool_references: + items: + $ref: '#/components/schemas/AnthropicToolReference' + type: array type: - type: string enum: - - custom - name: - type: string - description: + - tool_search_tool_search_result type: string - format: - anyOf: - - type: object - properties: - type: - type: string - enum: - - text - required: - - type - - type: object - properties: - type: - type: string - enum: - - grammar - definition: - type: string - syntax: - type: string - enum: - - lark - - regex - required: - - type - - definition - - syntax required: + - tool_references - type - - name - description: Custom tool configuration - example: - type: custom - name: my_tool - ToolChoiceAllowed: type: object + AnthropicToolSearchResultError: + example: + error_code: unavailable + error_message: null + type: tool_search_tool_result_error properties: - type: + error_code: + $ref: '#/components/schemas/AnthropicServerToolErrorCode' + error_message: + nullable: true type: string + type: enum: - - allowed_tools - mode: - anyOf: - - type: string - enum: - - auto - - type: string - enum: - - required - tools: - type: array - items: - type: object - additionalProperties: - nullable: true + - tool_search_tool_result_error + type: string required: + - error_code + - error_message - type - - mode - - tools - description: Constrains the model to a pre-defined set of allowed tools + type: object + AnthropicToolSearchToolResult: example: - type: allowed_tools - mode: auto - tools: - - type: function - name: get_weather - OpenAIResponsesToolChoice: - anyOf: - - type: string - enum: - - auto - - type: string - enum: - - none - - type: string + content: + tool_references: + - tool_name: my_tool + type: tool_reference + type: tool_search_tool_search_result + tool_use_id: srvtoolu_01abc + type: tool_search_tool_result + properties: + content: + $ref: '#/components/schemas/AnthropicToolSearchContent' + tool_use_id: + type: string + type: enum: - - required - - type: object - properties: - type: - type: string - enum: - - function - name: - type: string - required: - - type - - name - - type: object - properties: - type: - anyOf: - - type: string - enum: - - web_search_preview_2025_03_11 - - type: string - enum: - - web_search_preview - required: - - type - - $ref: '#/components/schemas/ToolChoiceAllowed' - example: auto - StoredPromptTemplate: + - tool_search_tool_result + type: string + required: + - type + - content + - tool_use_id type: object - nullable: true + AnthropicToolUseBlock: + example: + caller: + type: direct + id: toolu_01abc + input: + location: San Francisco + name: get_weather + type: tool_use properties: + caller: + $ref: '#/components/schemas/AnthropicCaller' id: type: string - variables: - type: object + input: nullable: true - additionalProperties: - anyOf: - - type: string - - $ref: '#/components/schemas/InputText' - - $ref: '#/components/schemas/InputImage' - - $ref: '#/components/schemas/InputFile' + name: + type: string + type: + enum: + - tool_use + type: string required: + - type - id - example: - id: prompt-abc123 - variables: - name: John - ReasoningEffort: - type: string - nullable: true - enum: - - xhigh - - high - - medium - - low - - minimal - - none - - null - example: medium - ReasoningSummaryVerbosity: - type: string - nullable: true - enum: - - auto - - concise - - detailed - - null - example: auto - BaseReasoningConfig: + - caller + - name type: object - nullable: true - properties: - effort: - $ref: '#/components/schemas/ReasoningEffort' - summary: - $ref: '#/components/schemas/ReasoningSummaryVerbosity' + AnthropicToolUsesKeep: example: - effort: medium - summary: auto - Truncation: - type: string - nullable: true - enum: - - auto - - disabled - - null - example: auto - FormatTextConfig: - type: object + type: tool_uses + value: 5 properties: type: - type: string enum: - - text + - tool_uses + type: string + value: + type: integer required: - type - description: Plain text response format - example: - type: text - FormatJsonObjectConfig: + - value type: object + AnthropicToolUsesTrigger: + example: + type: tool_uses + value: 10 properties: type: - type: string enum: - - json_object + - tool_uses + type: string + value: + type: integer required: - type - description: JSON object response format - example: - type: json_object - FormatJsonSchemaConfig: + - value type: object + AnthropicUnknownUsageIteration: + allOf: + - $ref: '#/components/schemas/AnthropicBaseUsageIteration' + - properties: + type: + type: string + required: + - type + type: object + example: + cache_creation: null + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 100 + output_tokens: 50 + type: unknown + AnthropicUrlImageSource: + example: + type: url + url: https://example.com/image.jpg properties: type: - type: string enum: - - json_schema - name: + - url type: string - description: + url: type: string - strict: - type: boolean - nullable: true - schema: - type: object - additionalProperties: - nullable: true required: - type - - name - - schema - description: JSON schema constrained response format - example: - type: json_schema - name: user_info - description: User information schema - schema: - type: object - properties: - name: - type: string - age: - type: number - required: - - name - Formats: - anyOf: - - $ref: '#/components/schemas/FormatTextConfig' - - $ref: '#/components/schemas/FormatJsonObjectConfig' - - $ref: '#/components/schemas/FormatJsonSchemaConfig' - description: Text response format configuration - example: - type: text - TextConfig: + - url type: object + AnthropicUrlPdfSource: + example: + type: url + url: https://example.com/document.pdf properties: - format: - $ref: '#/components/schemas/Formats' - verbosity: - type: string - nullable: true + type: enum: - - high - - low - - medium - - null - description: Text output configuration including format and verbosity + - url + type: string + url: + type: string + required: + - type + - url + type: object + AnthropicUsage: example: - format: - type: text - verbosity: medium - ServiceTier: - type: string - nullable: true - enum: - - auto - - default - - flex - - priority - - scale - - null - example: default - BaseResponsesResult: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null + input_tokens: 100 + output_tokens: 50 + server_tool_use: null + service_tier: standard + properties: + cache_creation: + $ref: '#/components/schemas/AnthropicCacheCreation' + cache_creation_input_tokens: + type: integer + cache_read_input_tokens: + type: integer + inference_geo: + nullable: true + type: string + input_tokens: + type: integer + output_tokens: + type: integer + server_tool_use: + $ref: '#/components/schemas/AnthropicServerToolUsage' + service_tier: + $ref: '#/components/schemas/AnthropicServiceTier' + required: + - input_tokens + - output_tokens + - cache_creation_input_tokens + - cache_read_input_tokens + - cache_creation + - inference_geo + - server_tool_use + - service_tier type: object + AnthropicUsageIteration: + anyOf: + - $ref: '#/components/schemas/AnthropicCompactionUsageIteration' + - $ref: '#/components/schemas/AnthropicMessageUsageIteration' + - $ref: '#/components/schemas/AnthropicUnknownUsageIteration' + example: + cache_creation: null + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 100 + output_tokens: 50 + type: message + AnthropicWebFetchBlock: + example: + content: + citations: null + source: + data: '' + media_type: text/plain + type: text + title: null + type: document + retrieved_at: null + type: web_fetch_result + url: https://example.com properties: - id: + content: + $ref: '#/components/schemas/AnthropicDocumentBlock' + retrieved_at: + nullable: true type: string - object: + type: + enum: + - web_fetch_result + type: string + url: + type: string + required: + - content + - retrieved_at + - type + - url + type: object + AnthropicWebFetchContent: + discriminator: + mapping: + web_fetch_result: '#/components/schemas/AnthropicWebFetchBlock' + web_fetch_tool_result_error: '#/components/schemas/AnthropicWebFetchToolResultError' + propertyName: type + example: + content: + citations: null + source: + data: '' + media_type: text/plain + type: text + title: null + type: document + retrieved_at: null + type: web_fetch_result + url: https://example.com + oneOf: + - $ref: '#/components/schemas/AnthropicWebFetchToolResultError' + - $ref: '#/components/schemas/AnthropicWebFetchBlock' + AnthropicWebFetchToolResult: + example: + caller: + type: direct + content: + content: + citations: null + source: + data: '' + media_type: text/plain + type: text + title: null + type: document + retrieved_at: null + type: web_fetch_result + url: https://example.com + tool_use_id: srvtoolu_01abc + type: web_fetch_tool_result + properties: + caller: + $ref: '#/components/schemas/AnthropicCaller' + content: + $ref: '#/components/schemas/AnthropicWebFetchContent' + tool_use_id: type: string + type: enum: - - response - created_at: - type: integer - model: + - web_fetch_tool_result type: string - status: - $ref: '#/components/schemas/OpenAIResponsesResponseStatus' - completed_at: - type: integer - output: - type: array - items: - oneOf: - - $ref: '#/components/schemas/OutputMessage' - - $ref: '#/components/schemas/OutputItemReasoning' - - $ref: '#/components/schemas/OutputItemFunctionCall' - - $ref: '#/components/schemas/OutputItemWebSearchCall' - - $ref: '#/components/schemas/OutputItemFileSearchCall' - - $ref: '#/components/schemas/OutputItemImageGenerationCall' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OutputMessage' - reasoning: '#/components/schemas/OutputItemReasoning' - function_call: '#/components/schemas/OutputItemFunctionCall' - web_search_call: '#/components/schemas/OutputItemWebSearchCall' - file_search_call: '#/components/schemas/OutputItemFileSearchCall' - image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' - user: + required: + - type + - caller + - content + - tool_use_id + type: object + AnthropicWebFetchToolResultError: + example: + error_code: unavailable + type: web_fetch_tool_result_error + properties: + error_code: + enum: + - invalid_tool_input + - url_too_long + - url_not_allowed + - url_not_accessible + - unsupported_content_type + - too_many_requests + - max_uses_exceeded + - unavailable type: string - nullable: true - output_text: + type: + enum: + - web_fetch_tool_result_error type: string - prompt_cache_key: + required: + - type + - error_code + type: object + AnthropicWebSearchResult: + example: + encrypted_content: enc_content_0 + page_age: null + title: Example Page + type: web_search_result + url: https://example.com + properties: + encrypted_content: type: string + page_age: nullable: true - safety_identifier: type: string + title: + type: string + type: + enum: + - web_search_result + type: string + url: + type: string + required: + - type + - encrypted_content + - page_age + - title + - url + type: object + AnthropicWebSearchResultBlockParam: + example: + encrypted_content: enc_content_0 + title: Example Page + type: web_search_result + url: https://example.com + properties: + encrypted_content: + type: string + page_age: nullable: true - error: - $ref: '#/components/schemas/ResponsesErrorField' - incomplete_details: - $ref: '#/components/schemas/IncompleteDetails' - usage: - $ref: '#/components/schemas/OpenAIResponsesUsage' - max_tool_calls: - type: integer - top_logprobs: - type: integer - max_output_tokens: - type: integer - temperature: - type: number - format: double - top_p: - type: number - format: double - presence_penalty: - type: number - format: double - frequency_penalty: - type: number - format: double - instructions: - $ref: '#/components/schemas/BaseInputs' - metadata: - $ref: '#/components/schemas/RequestMetadata' - tools: - type: array - items: - oneOf: - - allOf: - - $ref: '#/components/schemas/FunctionTool' - - type: object - properties: {} - description: Function tool definition - example: - type: function - name: get_weather - description: Get the current weather in a location - parameters: - type: object - properties: - location: - type: string - description: The city and state - unit: - type: string - enum: - - celsius - - fahrenheit - required: - - location - - $ref: '#/components/schemas/Preview_WebSearchServerTool' - - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - - $ref: '#/components/schemas/Legacy_WebSearchServerTool' - - $ref: '#/components/schemas/WebSearchServerTool' - - $ref: '#/components/schemas/FileSearchServerTool' - - $ref: '#/components/schemas/ComputerUseServerTool' - - $ref: '#/components/schemas/CodeInterpreterServerTool' - - $ref: '#/components/schemas/McpServerTool' - - $ref: '#/components/schemas/ImageGenerationServerTool' - - $ref: '#/components/schemas/CodexLocalShellTool' - - $ref: '#/components/schemas/ShellServerTool' - - $ref: '#/components/schemas/ApplyPatchServerTool' - - $ref: '#/components/schemas/CustomTool' - tool_choice: - $ref: '#/components/schemas/OpenAIResponsesToolChoice' - parallel_tool_calls: - type: boolean - prompt: - $ref: '#/components/schemas/StoredPromptTemplate' - background: - type: boolean - nullable: true - previous_response_id: type: string - nullable: true - reasoning: - $ref: '#/components/schemas/BaseReasoningConfig' - service_tier: - $ref: '#/components/schemas/ServiceTier' - store: - type: boolean - truncation: - $ref: '#/components/schemas/Truncation' - text: - $ref: '#/components/schemas/TextConfig' + title: + type: string + type: + enum: + - web_search_result + type: string + url: + 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 + - encrypted_content + - title + - url + type: object + AnthropicWebSearchToolResult: example: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: completed - completed_at: 1704067210 - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - OpenResponsesResult: - allOf: - - $ref: '#/components/schemas/BaseResponsesResult' - - type: object - properties: - output: + caller: + type: direct + content: [] + tool_use_id: srvtoolu_01abc + type: web_search_tool_result + properties: + caller: + $ref: '#/components/schemas/AnthropicCaller' + content: + anyOf: + - items: + $ref: '#/components/schemas/AnthropicWebSearchResult' type: array - items: - $ref: '#/components/schemas/OutputItems' - usage: - $ref: '#/components/schemas/Usage' - service_tier: - type: string - nullable: true + - $ref: '#/components/schemas/AnthropicWebSearchToolResultError' + tool_use_id: + type: string + type: + enum: + - web_search_tool_result + type: string + required: + - type + - caller + - tool_use_id + - content + type: object + AnthropicWebSearchToolResultError: example: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: completed - output: - - type: message - id: msg-abc123 - status: completed - role: assistant - content: - - type: output_text - text: Hello! How can I help you today? - annotations: [] - usage: - input_tokens: 10 - output_tokens: 25 - total_tokens: 35 - input_tokens_details: - cached_tokens: 0 - output_tokens_details: - reasoning_tokens: 0 - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - temperature: null - top_p: null - max_output_tokens: null - metadata: null - instructions: null - description: Complete non-streaming response from the Responses API - CreatedEvent: + error_code: unavailable + type: web_search_tool_result_error + properties: + error_code: + enum: + - invalid_tool_input + - unavailable + - max_uses_exceeded + - too_many_requests + - query_too_long + - request_too_large + type: string + type: + enum: + - web_search_tool_result_error + type: string + required: + - type + - error_code type: object + AnthropicWebSearchToolUserLocation: + example: + city: San Francisco + country: US + region: California + timezone: America/Los_Angeles + type: approximate + nullable: true properties: + city: + nullable: true + type: string + country: + nullable: true + type: string + region: + nullable: true + type: string + timezone: + nullable: true + type: string type: + enum: + - approximate type: string + required: + - type + type: object + ApplyPatchServerTool: + description: Apply patch tool configuration + example: + type: apply_patch + properties: + type: enum: - - response.created - response: - $ref: '#/components/schemas/BaseResponsesResult' - sequence_number: - type: integer + - apply_patch + type: string required: - type - - response - - sequence_number - description: Event emitted when a response is created + type: object + AutoRouterPlugin: example: - type: response.created - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: in_progress - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 0 - OpenResponsesCreatedEvent: - allOf: - - $ref: '#/components/schemas/CreatedEvent' - - type: object - properties: - response: - $ref: '#/components/schemas/OpenResponsesResult' - description: Event emitted when a response is created - example: - type: response.created - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: in_progress - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 0 - InProgressEvent: + allowed_models: + - anthropic/* + - openai/gpt-4o + enabled: true + id: auto-router + properties: + allowed_models: + description: >- + List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., + "anthropic/*" matches all Anthropic models). When not specified, uses the default supported models list. + example: + - anthropic/* + - openai/gpt-4o + - google/* + items: + type: string + type: array + enabled: + description: Set to false to disable the auto-router plugin for this request. Defaults to true. + type: boolean + id: + enum: + - auto-router + type: string + required: + - id type: object + BadGatewayResponse: + description: Bad Gateway - Provider/upstream API failure + example: + error: + code: 502 + message: Provider returned error properties: - type: + error: + $ref: '#/components/schemas/BadGatewayResponseErrorData' + user_id: + nullable: true type: string - enum: - - response.in_progress - response: - $ref: '#/components/schemas/BaseResponsesResult' - sequence_number: + required: + - error + type: object + BadGatewayResponseErrorData: + description: Error data for BadGatewayResponse + example: + code: 502 + message: Provider returned error + properties: + code: type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object required: - - type - - response - - sequence_number - description: Event emitted when a response is in progress + - code + - message + type: object + BadRequestResponse: + description: Bad Request - Invalid request parameters or malformed input example: - type: response.in_progress - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: in_progress - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 1 - OpenResponsesInProgressEvent: - allOf: - - $ref: '#/components/schemas/InProgressEvent' - - type: object - properties: - response: - $ref: '#/components/schemas/OpenResponsesResult' - description: Event emitted when a response is in progress + error: + code: 400 + message: Invalid request parameters + properties: + error: + $ref: '#/components/schemas/BadRequestResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + BadRequestResponseErrorData: + description: Error data for BadRequestResponse example: - type: response.in_progress - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: in_progress - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 1 - CompletedEvent: + code: 400 + message: Invalid request parameters + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message type: object + BaseAnnotationAddedEvent: + description: Event emitted when a text annotation is added to output + example: + annotation: + end_index: 7 + start_index: 0 + title: Example + type: url_citation + url: https://example.com + annotation_index: 0 + content_index: 0 + item_id: item-1 + output_index: 0 + sequence_number: 5 + type: response.output_text.annotation.added properties: - type: + annotation: + $ref: '#/components/schemas/OpenAIResponsesAnnotation' + annotation_index: + type: integer + content_index: + type: integer + item_id: type: string - enum: - - response.completed - response: - $ref: '#/components/schemas/BaseResponsesResult' + output_index: + type: integer sequence_number: type: integer + type: + enum: + - response.output_text.annotation.added + type: string required: - type - - response + - output_index + - item_id + - content_index - sequence_number - description: Event emitted when a response has completed successfully + - annotation_index + - annotation + type: object + BaseContentPartAddedEvent: + description: Event emitted when a new content part is added to an output item example: - type: response.completed - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: completed - output: - - id: item-1 - type: message - status: completed - role: assistant - content: - - type: output_text - text: Hello! How can I help you? - annotations: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 10 - StreamEventsResponseCompleted: - allOf: - - $ref: '#/components/schemas/CompletedEvent' - - type: object - properties: - response: - $ref: '#/components/schemas/OpenResponsesResult' - description: Event emitted when a response has completed successfully - example: - type: response.completed - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: completed - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 10 - IncompleteEvent: - type: object + content_index: 0 + item_id: item-1 + output_index: 0 + part: + annotations: [] + text: '' + type: output_text + sequence_number: 3 + type: response.content_part.added properties: - type: + content_index: + type: integer + item_id: type: string - enum: - - response.incomplete - response: - $ref: '#/components/schemas/BaseResponsesResult' + output_index: + type: integer + part: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: integer + type: + enum: + - response.content_part.added + type: string required: - type - - response + - output_index + - item_id + - content_index + - part - sequence_number - description: Event emitted when a response is incomplete - example: - type: response.incomplete - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: incomplete - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 5 - StreamEventsResponseIncomplete: - allOf: - - $ref: '#/components/schemas/IncompleteEvent' - - type: object - properties: - response: - $ref: '#/components/schemas/OpenResponsesResult' - description: Event emitted when a response is incomplete - example: - type: response.incomplete - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: incomplete - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 5 - FailedEvent: type: object + BaseContentPartDoneEvent: + description: Event emitted when a content part is complete + example: + content_index: 0 + item_id: item-1 + output_index: 0 + part: + annotations: [] + text: Hello! How can I help you? + type: output_text + sequence_number: 7 + type: response.content_part.done properties: - type: + content_index: + type: integer + item_id: type: string - enum: - - response.failed - response: - $ref: '#/components/schemas/BaseResponsesResult' + output_index: + type: integer + part: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: integer + type: + enum: + - response.content_part.done + type: string required: - type - - response + - output_index + - item_id + - content_index + - part - sequence_number - description: Event emitted when a response has failed - example: - type: response.failed - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: failed - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 3 - StreamEventsResponseFailed: - allOf: - - $ref: '#/components/schemas/FailedEvent' - - type: object - properties: - response: - $ref: '#/components/schemas/OpenResponsesResult' - description: Event emitted when a response has failed - example: - type: response.failed - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: failed - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 3 - BaseErrorEvent: type: object + BaseErrorEvent: + description: Event emitted when an error occurs during streaming + example: + code: rate_limit_exceeded + message: Rate limit exceeded. Please try again later. + param: null + sequence_number: 2 + type: error properties: - type: - type: string - enum: - - error code: - type: string nullable: true + type: string message: type: string param: - type: string nullable: true + type: string sequence_number: type: integer + type: + enum: + - error + type: string required: - type - code - message - param - sequence_number - description: Event emitted when an error occurs during streaming - example: - type: error - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. - param: null - sequence_number: 2 - ErrorEvent: - allOf: - - $ref: '#/components/schemas/BaseErrorEvent' - - type: object - properties: {} - description: Event emitted when an error occurs during streaming - example: - type: error - code: rate_limit_exceeded - message: Rate limit exceeded. Please try again later. - param: null - sequence_number: 2 - OutputItemAddedEvent: type: object + BaseFunctionCallArgsDeltaEvent: + description: Event emitted when function call arguments are being streamed + example: + delta: '{"city": "..."}' + item_id: item-1 + output_index: 0 + sequence_number: 4 + type: response.function_call_arguments.delta properties: - type: + delta: + type: string + item_id: type: string - enum: - - response.output_item.added output_index: type: integer - item: - oneOf: - - $ref: '#/components/schemas/OutputMessage' - - $ref: '#/components/schemas/OutputItemReasoning' - - $ref: '#/components/schemas/OutputItemFunctionCall' - - $ref: '#/components/schemas/OutputItemWebSearchCall' - - $ref: '#/components/schemas/OutputItemFileSearchCall' - - $ref: '#/components/schemas/OutputItemImageGenerationCall' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OutputMessage' - reasoning: '#/components/schemas/OutputItemReasoning' - function_call: '#/components/schemas/OutputItemFunctionCall' - web_search_call: '#/components/schemas/OutputItemWebSearchCall' - file_search_call: '#/components/schemas/OutputItemFileSearchCall' - image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' sequence_number: type: integer - required: - - type - - output_index - - item - - sequence_number - description: Event emitted when a new output item is added to the response - example: - type: response.output_item.added - output_index: 0 - item: - id: item-1 - type: message - status: in_progress - role: assistant - content: [] - sequence_number: 2 - StreamEventsResponseOutputItemAdded: - allOf: - - $ref: '#/components/schemas/OutputItemAddedEvent' - - type: object - properties: - item: - $ref: '#/components/schemas/OutputItems' - description: Event emitted when a new output item is added to the response - example: - type: response.output_item.added - output_index: 0 - item: - id: item-1 - type: message - status: in_progress - role: assistant - content: [] - sequence_number: 2 - OutputItemDoneEvent: - type: object - properties: type: - type: string enum: - - response.output_item.done - output_index: - type: integer - item: - oneOf: - - $ref: '#/components/schemas/OutputMessage' - - $ref: '#/components/schemas/OutputItemReasoning' - - $ref: '#/components/schemas/OutputItemFunctionCall' - - $ref: '#/components/schemas/OutputItemWebSearchCall' - - $ref: '#/components/schemas/OutputItemFileSearchCall' - - $ref: '#/components/schemas/OutputItemImageGenerationCall' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OutputMessage' - reasoning: '#/components/schemas/OutputItemReasoning' - function_call: '#/components/schemas/OutputItemFunctionCall' - web_search_call: '#/components/schemas/OutputItemWebSearchCall' - file_search_call: '#/components/schemas/OutputItemFileSearchCall' - image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' - sequence_number: - type: integer + - response.function_call_arguments.delta + type: string required: - type + - item_id - output_index - - item + - delta - sequence_number - description: Event emitted when an output item is complete - example: - type: response.output_item.done - output_index: 0 - item: - id: item-1 - type: message - status: completed - role: assistant - content: - - type: output_text - text: Hello! How can I help you? - annotations: [] - sequence_number: 8 - StreamEventsResponseOutputItemDone: - allOf: - - $ref: '#/components/schemas/OutputItemDoneEvent' - - type: object - properties: - item: - $ref: '#/components/schemas/OutputItems' - description: Event emitted when an output item is complete + type: object + BaseFunctionCallArgsDoneEvent: + description: Event emitted when function call arguments streaming is complete example: - type: response.output_item.done + arguments: '{"city": "San Francisco", "units": "celsius"}' + item_id: item-1 + name: get_weather output_index: 0 - item: - id: item-1 - type: message - status: completed - role: assistant - content: - - type: output_text - text: Hello! How can I help you? - annotations: [] - sequence_number: 8 - BaseContentPartAddedEvent: - type: object + sequence_number: 6 + type: response.function_call_arguments.done properties: - type: + arguments: type: string - enum: - - response.content_part.added - output_index: - type: integer item_id: type: string - content_index: + name: + type: string + output_index: type: integer - part: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: integer + type: + enum: + - response.function_call_arguments.done + type: string required: - type - - output_index - item_id - - content_index - - part + - output_index + - name + - arguments - sequence_number - description: Event emitted when a new content part is added to an output item + type: object + BaseInputs: + anyOf: + - type: string + - items: + anyOf: + - properties: + content: + anyOf: + - items: + discriminator: + mapping: + input_audio: '#/components/schemas/InputAudio' + input_file: '#/components/schemas/InputFile' + input_image: '#/components/schemas/InputImage' + input_text: '#/components/schemas/InputText' + propertyName: type + oneOf: + - $ref: '#/components/schemas/InputText' + - $ref: '#/components/schemas/InputImage' + - $ref: '#/components/schemas/InputFile' + - $ref: '#/components/schemas/InputAudio' + type: array + - type: string + phase: + anyOf: + - enum: + - commentary + type: string + - enum: + - final_answer + type: string + - nullable: true + role: + anyOf: + - enum: + - user + type: string + - enum: + - system + type: string + - enum: + - assistant + type: string + - enum: + - developer + type: string + type: + enum: + - message + type: string + required: + - role + - content + type: object + - $ref: '#/components/schemas/OpenAIResponseInputMessageItem' + - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' + - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' + - $ref: '#/components/schemas/OutputItemImageGenerationCall' + - $ref: '#/components/schemas/OutputMessage' + type: array + - nullable: true example: - type: response.content_part.added - output_index: 0 - item_id: item-1 - content_index: 0 - part: - type: output_text - text: '' - annotations: [] - sequence_number: 3 - ContentPartAddedEvent: - allOf: - - $ref: '#/components/schemas/BaseContentPartAddedEvent' - - type: object - properties: - part: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/ReasoningTextContent' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - description: Event emitted when a new content part is added to an output item + - content: What is the weather today? + role: user + BaseMessagesResult: + description: Base Anthropic Messages API response before OpenRouter extensions example: - type: response.content_part.added - output_index: 0 - item_id: item-1 - content_index: 0 - part: - type: output_text - text: '' - annotations: [] - sequence_number: 3 - BaseContentPartDoneEvent: - type: object + container: null + content: + - citations: null + text: Hello! + type: text + id: msg_01XFDUDYJgAACzvnptvVoYEL + model: claude-sonnet-4-5-20250929 + role: assistant + stop_reason: end_turn + stop_sequence: null + type: message + usage: + cache_creation_input_tokens: null + cache_read_input_tokens: null + input_tokens: 12 + output_tokens: 8 properties: - type: + container: + $ref: '#/components/schemas/AnthropicContainer' + content: + items: + $ref: '#/components/schemas/ORAnthropicContentBlock' + type: array + id: type: string + model: + type: string + role: enum: - - response.content_part.done - output_index: - type: integer - item_id: + - assistant type: string - content_index: - type: integer - part: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - sequence_number: - type: integer + stop_reason: + $ref: '#/components/schemas/ORAnthropicStopReason' + stop_sequence: + nullable: true + type: string + type: + enum: + - message + type: string + usage: + allOf: + - $ref: '#/components/schemas/AnthropicUsage' + - properties: + iterations: + items: + $ref: '#/components/schemas/AnthropicUsageIteration' + type: array + speed: + $ref: '#/components/schemas/AnthropicSpeed' + type: object + example: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null + input_tokens: 100 + output_tokens: 50 + server_tool_use: null + service_tier: standard required: + - id - type - - output_index - - item_id - - content_index - - part - - sequence_number - description: Event emitted when a content part is complete - example: - type: response.content_part.done - output_index: 0 - item_id: item-1 - content_index: 0 - part: - type: output_text - text: Hello! How can I help you? - annotations: [] - sequence_number: 7 - ContentPartDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseContentPartDoneEvent' - - type: object - properties: - part: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/ReasoningTextContent' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - description: Event emitted when a content part is complete - example: - type: response.content_part.done - output_index: 0 - item_id: item-1 - content_index: 0 - part: - type: output_text - text: Hello! How can I help you? - annotations: [] - sequence_number: 7 - OpenResponsesTopLogprobs: + - role + - container + - content + - model + - stop_reason + - stop_sequence + - usage type: object - properties: - token: - type: string - logprob: - type: number - format: double - bytes: - type: array - items: - type: integer - description: Alternative token with its log probability - example: - token: hello - logprob: -0.5 - StreamLogprobTopLogprob: - allOf: - - $ref: '#/components/schemas/OpenResponsesTopLogprobs' - - type: object - properties: {} - description: Alternative token with its log probability + BaseReasoningConfig: example: - token: Hello - logprob: -0.5 - bytes: - - 72 - - 101 - - 108 - - 108 - - 111 - OpenResponsesLogProbs: - type: object + effort: medium + summary: auto + nullable: true properties: - logprob: - type: number - format: double - token: - type: string - top_logprobs: - type: array - items: - $ref: '#/components/schemas/OpenResponsesTopLogprobs' - bytes: - type: array - items: - type: integer - required: - - logprob - - token - description: Log probability information for a token - example: - logprob: -0.1 - token: world - top_logprobs: - - token: hello - logprob: -0.5 - StreamLogprob: - allOf: - - $ref: '#/components/schemas/OpenResponsesLogProbs' - - type: object - properties: - top_logprobs: - type: array - items: - $ref: '#/components/schemas/StreamLogprobTopLogprob' - description: Log probability information for a token - example: - token: Hello - logprob: -0.5 - bytes: - - 72 - - 101 - - 108 - - 108 - - 111 - top_logprobs: [] - BaseTextDeltaEvent: + effort: + $ref: '#/components/schemas/ReasoningEffort' + summary: + $ref: '#/components/schemas/ReasoningSummaryVerbosity' type: object + BaseReasoningDeltaEvent: + description: Event emitted when reasoning text delta is streamed + example: + content_index: 0 + delta: First, we need + item_id: item-1 + output_index: 0 + sequence_number: 4 + type: response.reasoning_text.delta properties: - type: - type: string - enum: - - response.output_text.delta - logprobs: - type: array - items: - $ref: '#/components/schemas/OpenResponsesLogProbs' - output_index: - type: integer - item_id: - type: string content_index: type: integer delta: type: string + item_id: + type: string + output_index: + type: integer sequence_number: type: integer + type: + enum: + - response.reasoning_text.delta + type: string required: - type - - logprobs - output_index - item_id - content_index - delta - sequence_number - description: Event emitted when a text delta is streamed + type: object + BaseReasoningDoneEvent: + description: Event emitted when reasoning text streaming is complete example: - type: response.output_text.delta - logprobs: [] - output_index: 0 - item_id: item-1 content_index: 0 - delta: Hello - sequence_number: 4 - TextDeltaEvent: - allOf: - - $ref: '#/components/schemas/BaseTextDeltaEvent' - - type: object - properties: - logprobs: - type: array - items: - $ref: '#/components/schemas/StreamLogprob' - description: Event emitted when a text delta is streamed - example: - type: response.output_text.delta - logprobs: [] - output_index: 0 item_id: item-1 - content_index: 0 - delta: Hello - sequence_number: 4 - BaseTextDoneEvent: - type: object + output_index: 0 + sequence_number: 6 + text: First, we need to identify the key components and then combine them logically. + type: response.reasoning_text.done properties: - type: - type: string - enum: - - response.output_text.done - output_index: + content_index: type: integer item_id: type: string - content_index: + output_index: type: integer - text: - type: string sequence_number: type: integer - logprobs: - type: array - items: - $ref: '#/components/schemas/OpenResponsesLogProbs' + text: + type: string + type: + enum: + - response.reasoning_text.done + type: string required: - type - output_index @@ -2949,14793 +2452,16277 @@ components: - content_index - text - sequence_number - - logprobs - description: Event emitted when text streaming is complete + type: object + BaseReasoningSummaryPartAddedEvent: + description: Event emitted when a reasoning summary part is added example: - type: response.output_text.done - output_index: 0 item_id: item-1 - content_index: 0 - text: Hello! How can I help you? - sequence_number: 6 - logprobs: [] - TextDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseTextDoneEvent' - - type: object - properties: - logprobs: - type: array - items: - $ref: '#/components/schemas/StreamLogprob' - description: Event emitted when text streaming is complete - example: - type: response.output_text.done output_index: 0 - item_id: item-1 - content_index: 0 - text: Hello! How can I help you? - sequence_number: 6 - logprobs: [] - BaseRefusalDeltaEvent: - type: object + part: + text: '' + type: summary_text + sequence_number: 3 + summary_index: 0 + type: response.reasoning_summary_part.added properties: - type: - type: string - enum: - - response.refusal.delta - output_index: - type: integer item_id: type: string - content_index: + output_index: type: integer - delta: - type: string + part: + $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: integer + summary_index: + type: integer + type: + enum: + - response.reasoning_summary_part.added + type: string required: - type - output_index - item_id - - content_index - - delta + - summary_index + - part - sequence_number - description: Event emitted when a refusal delta is streamed + type: object + BaseReasoningSummaryPartDoneEvent: + description: Event emitted when a reasoning summary part is complete example: - type: response.refusal.delta - output_index: 0 item_id: item-1 - content_index: 0 - delta: I'm sorry - sequence_number: 4 - RefusalDeltaEvent: - allOf: - - $ref: '#/components/schemas/BaseRefusalDeltaEvent' - - type: object - properties: {} - description: Event emitted when a refusal delta is streamed - example: - type: response.refusal.delta output_index: 0 - item_id: item-1 - content_index: 0 - delta: I'm sorry - sequence_number: 4 - BaseRefusalDoneEvent: - type: object + part: + text: Analyzing the problem step by step to find the optimal solution. + type: summary_text + sequence_number: 7 + summary_index: 0 + type: response.reasoning_summary_part.done properties: - type: - type: string - enum: - - response.refusal.done - output_index: - type: integer item_id: type: string - content_index: + output_index: type: integer - refusal: - type: string + part: + $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: integer + summary_index: + type: integer + type: + enum: + - response.reasoning_summary_part.done + type: string required: - type - output_index - item_id - - content_index - - refusal + - summary_index + - part - sequence_number - description: Event emitted when refusal streaming is complete + type: object + BaseReasoningSummaryTextDeltaEvent: + description: Event emitted when reasoning summary text delta is streamed example: - type: response.refusal.done - output_index: 0 + delta: Analyzing item_id: item-1 - content_index: 0 - refusal: I'm sorry, but I can't assist with that request. - sequence_number: 6 - RefusalDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseRefusalDoneEvent' - - type: object - properties: {} - description: Event emitted when refusal streaming is complete - example: - type: response.refusal.done output_index: 0 - item_id: item-1 - content_index: 0 - refusal: I'm sorry, but I can't assist with that request. - sequence_number: 6 - BaseAnnotationAddedEvent: - type: object + sequence_number: 4 + summary_index: 0 + type: response.reasoning_summary_text.delta properties: - type: + delta: type: string - enum: - - response.output_text.annotation.added - output_index: - type: integer item_id: type: string - content_index: + output_index: type: integer sequence_number: type: integer - annotation_index: + summary_index: type: integer - annotation: - $ref: '#/components/schemas/OpenAIResponsesAnnotation' + type: + enum: + - response.reasoning_summary_text.delta + type: string required: - type - - output_index - item_id - - content_index + - output_index + - summary_index + - delta - sequence_number - - annotation_index - - annotation - description: Event emitted when a text annotation is added to output + type: object + BaseReasoningSummaryTextDoneEvent: + description: Event emitted when reasoning summary text streaming is complete example: - type: response.output_text.annotation.added - output_index: 0 item_id: item-1 - content_index: 0 - sequence_number: 5 - annotation_index: 0 - annotation: - type: url_citation - url: https://example.com - title: Example - start_index: 0 - end_index: 7 - AnnotationAddedEvent: - allOf: - - $ref: '#/components/schemas/BaseAnnotationAddedEvent' - - type: object - properties: {} - description: Event emitted when a text annotation is added to output - example: - type: response.output_text.annotation.added output_index: 0 - item_id: item-1 - content_index: 0 - sequence_number: 5 - annotation_index: 0 - annotation: - type: url_citation - url: https://example.com - title: Example - start_index: 0 - end_index: 7 - BaseFunctionCallArgsDeltaEvent: - type: object + sequence_number: 6 + summary_index: 0 + text: Analyzing the problem step by step to find the optimal solution. + type: response.reasoning_summary_text.done properties: - type: - type: string - enum: - - response.function_call_arguments.delta item_id: type: string output_index: type: integer - delta: - type: string sequence_number: type: integer + summary_index: + type: integer + text: + type: string + type: + enum: + - response.reasoning_summary_text.done + type: string required: - type - item_id - output_index - - delta + - summary_index + - text - sequence_number - description: Event emitted when function call arguments are being streamed - example: - type: response.function_call_arguments.delta - item_id: item-1 - output_index: 0 - delta: '{"city": "..."}' - sequence_number: 4 - FunctionCallArgsDeltaEvent: - allOf: - - $ref: '#/components/schemas/BaseFunctionCallArgsDeltaEvent' - - type: object - properties: {} - description: Event emitted when function call arguments are being streamed + type: object + BaseRefusalDeltaEvent: + description: Event emitted when a refusal delta is streamed example: - type: response.function_call_arguments.delta + content_index: 0 + delta: I'm sorry item_id: item-1 output_index: 0 - delta: '{"city": "..."}' sequence_number: 4 - BaseFunctionCallArgsDoneEvent: - type: object + type: response.refusal.delta properties: - type: + content_index: + type: integer + delta: type: string - enum: - - response.function_call_arguments.done item_id: type: string output_index: type: integer - name: - type: string - arguments: - type: string sequence_number: type: integer + type: + enum: + - response.refusal.delta + type: string required: - type - - item_id - output_index - - name - - arguments + - item_id + - content_index + - delta - sequence_number - description: Event emitted when function call arguments streaming is complete - example: - type: response.function_call_arguments.done - item_id: item-1 - output_index: 0 - name: get_weather - arguments: '{"city": "San Francisco", "units": "celsius"}' - sequence_number: 6 - FunctionCallArgsDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseFunctionCallArgsDoneEvent' - - type: object - properties: {} - description: Event emitted when function call arguments streaming is complete + type: object + BaseRefusalDoneEvent: + description: Event emitted when refusal streaming is complete example: - type: response.function_call_arguments.done + content_index: 0 item_id: item-1 output_index: 0 - name: get_weather - arguments: '{"city": "San Francisco", "units": "celsius"}' + refusal: I'm sorry, but I can't assist with that request. sequence_number: 6 - BaseReasoningDeltaEvent: - type: object + type: response.refusal.done properties: - type: - type: string - enum: - - response.reasoning_text.delta - output_index: + content_index: type: integer item_id: type: string - content_index: + output_index: type: integer - delta: + refusal: type: string sequence_number: type: integer + type: + enum: + - response.refusal.done + type: string required: - type - output_index - item_id - content_index - - delta + - refusal - sequence_number - description: Event emitted when reasoning text delta is streamed - example: - type: response.reasoning_text.delta - output_index: 0 - item_id: item-1 - content_index: 0 - delta: First, we need - sequence_number: 4 - ReasoningDeltaEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningDeltaEvent' - - type: object - properties: {} - description: Event emitted when reasoning text delta is streamed - example: - type: response.reasoning_text.delta - output_index: 0 - item_id: item-1 - content_index: 0 - delta: First, we need - sequence_number: 4 - BaseReasoningDoneEvent: type: object + BaseResponsesResult: + example: + completed_at: 1704067210 + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: completed + temperature: null + tool_choice: auto + tools: [] + top_p: null properties: - type: + background: + nullable: true + type: boolean + completed_at: + type: integer + created_at: + type: integer + error: + $ref: '#/components/schemas/ResponsesErrorField' + frequency_penalty: + format: double + type: number + id: + type: string + incomplete_details: + $ref: '#/components/schemas/IncompleteDetails' + instructions: + $ref: '#/components/schemas/BaseInputs' + max_output_tokens: + type: integer + max_tool_calls: + type: integer + metadata: + $ref: '#/components/schemas/RequestMetadata' + model: type: string + object: enum: - - response.reasoning_text.done - output_index: + - response + type: string + output: + items: + discriminator: + mapping: + file_search_call: '#/components/schemas/OutputItemFileSearchCall' + function_call: '#/components/schemas/OutputItemFunctionCall' + image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' + message: '#/components/schemas/OutputMessage' + reasoning: '#/components/schemas/OutputItemReasoning' + web_search_call: '#/components/schemas/OutputItemWebSearchCall' + propertyName: type + oneOf: + - $ref: '#/components/schemas/OutputMessage' + - $ref: '#/components/schemas/OutputItemReasoning' + - $ref: '#/components/schemas/OutputItemFunctionCall' + - $ref: '#/components/schemas/OutputItemWebSearchCall' + - $ref: '#/components/schemas/OutputItemFileSearchCall' + - $ref: '#/components/schemas/OutputItemImageGenerationCall' + type: array + output_text: + type: string + parallel_tool_calls: + type: boolean + presence_penalty: + format: double + type: number + previous_response_id: + nullable: true + type: string + prompt: + $ref: '#/components/schemas/StoredPromptTemplate' + prompt_cache_key: + nullable: true + type: string + reasoning: + $ref: '#/components/schemas/BaseReasoningConfig' + safety_identifier: + nullable: true + type: string + service_tier: + $ref: '#/components/schemas/ServiceTier' + status: + $ref: '#/components/schemas/OpenAIResponsesResponseStatus' + store: + type: boolean + temperature: + format: double + type: number + text: + $ref: '#/components/schemas/TextConfig' + tool_choice: + $ref: '#/components/schemas/OpenAIResponsesToolChoice' + tools: + items: + oneOf: + - allOf: + - $ref: '#/components/schemas/FunctionTool' + - properties: {} + type: object + description: Function tool definition + example: + description: Get the current weather in a location + name: get_weather + parameters: + properties: + location: + description: The city and state + type: string + unit: + enum: + - celsius + - fahrenheit + type: string + required: + - location + type: object + type: function + - $ref: '#/components/schemas/Preview_WebSearchServerTool' + - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' + - $ref: '#/components/schemas/Legacy_WebSearchServerTool' + - $ref: '#/components/schemas/WebSearchServerTool' + - $ref: '#/components/schemas/FileSearchServerTool' + - $ref: '#/components/schemas/ComputerUseServerTool' + - $ref: '#/components/schemas/CodeInterpreterServerTool' + - $ref: '#/components/schemas/McpServerTool' + - $ref: '#/components/schemas/ImageGenerationServerTool' + - $ref: '#/components/schemas/CodexLocalShellTool' + - $ref: '#/components/schemas/ShellServerTool' + - $ref: '#/components/schemas/ApplyPatchServerTool' + - $ref: '#/components/schemas/CustomTool' + type: array + top_logprobs: type: integer - item_id: + top_p: + format: double + type: number + truncation: + $ref: '#/components/schemas/Truncation' + usage: + $ref: '#/components/schemas/OpenAIResponsesUsage' + user: + nullable: true type: string + required: + - id + - object + - created_at + - model + - status + - completed_at + - output + - error + - incomplete_details + - temperature + - top_p + - presence_penalty + - frequency_penalty + - instructions + - metadata + - tools + - tool_choice + - parallel_tool_calls + type: object + BaseTextDeltaEvent: + description: Event emitted when a text delta is streamed + example: + content_index: 0 + delta: Hello + item_id: item-1 + logprobs: [] + output_index: 0 + sequence_number: 4 + type: response.output_text.delta + properties: content_index: type: integer - text: + delta: + type: string + item_id: type: string + logprobs: + items: + $ref: '#/components/schemas/OpenResponsesLogProbs' + type: array + output_index: + type: integer sequence_number: type: integer + type: + enum: + - response.output_text.delta + type: string required: - type + - logprobs - output_index - item_id - content_index - - text + - delta - sequence_number - description: Event emitted when reasoning text streaming is complete + type: object + BaseTextDoneEvent: + description: Event emitted when text streaming is complete example: - type: response.reasoning_text.done - output_index: 0 - item_id: item-1 content_index: 0 - text: First, we need to identify the key components and then combine them logically. - sequence_number: 6 - ReasoningDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningDoneEvent' - - type: object - properties: {} - description: Event emitted when reasoning text streaming is complete - example: - type: response.reasoning_text.done - output_index: 0 item_id: item-1 - content_index: 0 - text: First, we need to identify the key components and then combine them logically. + logprobs: [] + output_index: 0 sequence_number: 6 - BaseReasoningSummaryPartAddedEvent: - type: object + text: Hello! How can I help you? + type: response.output_text.done properties: - type: + content_index: + type: integer + item_id: type: string - enum: - - response.reasoning_summary_part.added + logprobs: + items: + $ref: '#/components/schemas/OpenResponsesLogProbs' + type: array output_index: type: integer - item_id: - type: string - summary_index: - type: integer - part: - $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: integer - required: - - type - - output_index - - item_id - - summary_index - - part - - sequence_number - description: Event emitted when a reasoning summary part is added - example: - type: response.reasoning_summary_part.added - output_index: 0 - item_id: item-1 - summary_index: 0 - part: - type: summary_text - text: '' - sequence_number: 3 - ReasoningSummaryPartAddedEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent' - - type: object - properties: {} - description: Event emitted when a reasoning summary part is added - example: - type: response.reasoning_summary_part.added - output_index: 0 - item_id: item-1 - summary_index: 0 - part: - type: summary_text - text: '' - sequence_number: 3 - BaseReasoningSummaryPartDoneEvent: - type: object - properties: - type: + text: type: string + type: enum: - - response.reasoning_summary_part.done - output_index: - type: integer - item_id: + - response.output_text.done type: string - summary_index: - type: integer - part: - $ref: '#/components/schemas/ReasoningSummaryText' - sequence_number: - type: integer required: - type - output_index - item_id - - summary_index - - part + - content_index + - text - sequence_number - description: Event emitted when a reasoning summary part is complete - example: - type: response.reasoning_summary_part.done - output_index: 0 - item_id: item-1 - summary_index: 0 - part: - type: summary_text - text: Analyzing the problem step by step to find the optimal solution. - sequence_number: 7 - ReasoningSummaryPartDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningSummaryPartDoneEvent' - - type: object - properties: {} - description: Event emitted when a reasoning summary part is complete + - logprobs + type: object + BigNumberUnion: + description: Price per million prompt tokens + example: 1000 + type: string + BulkAssignKeysRequest: example: - type: response.reasoning_summary_part.done - output_index: 0 - item_id: item-1 - summary_index: 0 - part: - type: summary_text - text: Analyzing the problem step by step to find the optimal solution. - sequence_number: 7 - BaseReasoningSummaryTextDeltaEvent: + key_hashes: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + properties: + key_hashes: + description: Array of API key hashes to assign to the guardrail + example: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + items: + minLength: 1 + type: string + minItems: 1 + type: array + required: + - key_hashes type: object + BulkAssignKeysResponse: + example: + assigned_count: 3 properties: - type: - type: string - enum: - - response.reasoning_summary_text.delta - item_id: - type: string - output_index: - type: integer - summary_index: - type: integer - delta: - type: string - sequence_number: + assigned_count: + description: Number of keys successfully assigned + example: 3 type: integer required: - - type - - item_id - - output_index - - summary_index - - delta - - sequence_number - description: Event emitted when reasoning summary text delta is streamed - example: - type: response.reasoning_summary_text.delta - item_id: item-1 - output_index: 0 - summary_index: 0 - delta: Analyzing - sequence_number: 4 - ReasoningSummaryTextDeltaEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent' - - type: object - properties: {} - description: Event emitted when reasoning summary text delta is streamed + - assigned_count + type: object + BulkAssignMembersRequest: example: - type: response.reasoning_summary_text.delta - item_id: item-1 - output_index: 0 - summary_index: 0 - delta: Analyzing - sequence_number: 4 - BaseReasoningSummaryTextDoneEvent: + member_user_ids: + - user_abc123 + - user_def456 + properties: + member_user_ids: + description: Array of member user IDs to assign to the guardrail + example: + - user_abc123 + - user_def456 + items: + minLength: 1 + type: string + minItems: 1 + type: array + required: + - member_user_ids type: object + BulkAssignMembersResponse: + example: + assigned_count: 2 properties: - type: - type: string - enum: - - response.reasoning_summary_text.done - item_id: - type: string - output_index: - type: integer - summary_index: - type: integer - text: - type: string - sequence_number: + assigned_count: + description: Number of members successfully assigned + example: 2 type: integer required: - - type - - item_id - - output_index - - summary_index - - text - - sequence_number - description: Event emitted when reasoning summary text streaming is complete - example: - type: response.reasoning_summary_text.done - item_id: item-1 - output_index: 0 - summary_index: 0 - text: Analyzing the problem step by step to find the optimal solution. - sequence_number: 6 - ReasoningSummaryTextDoneEvent: - allOf: - - $ref: '#/components/schemas/BaseReasoningSummaryTextDoneEvent' - - type: object - properties: {} - description: Event emitted when reasoning summary text streaming is complete + - assigned_count + type: object + BulkUnassignKeysRequest: example: - type: response.reasoning_summary_text.done - item_id: item-1 - output_index: 0 - summary_index: 0 - text: Analyzing the problem step by step to find the optimal solution. - sequence_number: 6 - OpenAIResponsesImageGenCallInProgress: + key_hashes: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + properties: + key_hashes: + description: Array of API key hashes to unassign from the guardrail + example: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + items: + minLength: 1 + type: string + minItems: 1 + type: array + required: + - key_hashes type: object + BulkUnassignKeysResponse: + example: + unassigned_count: 3 properties: - type: - type: string - enum: - - response.image_generation_call.in_progress - item_id: - type: string - output_index: - type: integer - sequence_number: + unassigned_count: + description: Number of keys successfully unassigned + example: 3 type: integer required: - - type - - item_id - - output_index - - sequence_number + - unassigned_count + type: object + BulkUnassignMembersRequest: example: - type: response.image_generation_call.in_progress - item_id: ig_abc123 - output_index: 0 - sequence_number: 1 - ImageGenCallInProgressEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress' - - type: object - properties: {} - example: - type: response.image_generation_call.in_progress - output_index: 0 - sequence_number: 1 - item_id: call-123 - description: Image generation call in progress - OpenAIResponsesImageGenCallGenerating: + member_user_ids: + - user_abc123 + - user_def456 + properties: + member_user_ids: + description: Array of member user IDs to unassign from the guardrail + example: + - user_abc123 + - user_def456 + items: + minLength: 1 + type: string + minItems: 1 + type: array + required: + - member_user_ids type: object + BulkUnassignMembersResponse: + example: + unassigned_count: 2 properties: - type: - type: string - enum: - - response.image_generation_call.generating - item_id: - type: string - output_index: - type: integer - sequence_number: + unassigned_count: + description: Number of members successfully unassigned + example: 2 type: integer required: - - type - - item_id - - output_index - - sequence_number + - unassigned_count + type: object + ChatAssistantImages: + description: Generated images from image generation models example: - type: response.image_generation_call.generating - item_id: ig_abc123 - output_index: 0 - sequence_number: 2 - ImageGenCallGeneratingEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating' - - type: object - properties: {} + - image_url: + url: data:image/png;base64,iVBORw0KGgo... + items: + properties: + image_url: + properties: + url: + description: URL or base64-encoded data of the generated image + type: string + required: + - url + type: object + required: + - image_url + type: object + type: array + ChatAssistantMessage: + description: Assistant message for requests and responses example: - type: response.image_generation_call.generating - output_index: 0 - sequence_number: 2 - item_id: call-123 - description: Image generation call is generating - OpenAIResponsesImageGenCallPartialImage: - type: object + content: The capital of France is Paris. + role: assistant properties: - type: + audio: + $ref: '#/components/schemas/ChatAudioOutput' + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ChatContentItems' + type: array + - nullable: true + description: Assistant message content + images: + $ref: '#/components/schemas/ChatAssistantImages' + name: + description: Optional name for the assistant type: string - enum: - - response.image_generation_call.partial_image - item_id: + reasoning: + description: Reasoning output + nullable: true type: string - output_index: - type: integer - sequence_number: - type: integer - partial_image_b64: + reasoning_details: + $ref: '#/components/schemas/ChatReasoningDetails' + refusal: + description: Refusal message if content was refused + nullable: true type: string - partial_image_index: - type: integer + role: + enum: + - assistant + type: string + tool_calls: + description: Tool calls made by the assistant + items: + $ref: '#/components/schemas/ChatToolCall' + type: array required: - - type - - item_id - - output_index - - sequence_number - - partial_image_b64 - - partial_image_index - example: - type: response.image_generation_call.partial_image - item_id: ig_abc123 - output_index: 0 - sequence_number: 3 - partial_image_b64: iVBORw0KGgo... - partial_image_index: 0 - ImageGenCallPartialImageEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage' - - type: object - properties: {} - example: - type: response.image_generation_call.partial_image - output_index: 0 - sequence_number: 3 - item_id: call-123 - partial_image_b64: base64encodedimage... - partial_image_index: 0 - description: Image generation call with partial image - OpenAIResponsesImageGenCallCompleted: + - role type: object + ChatAudioOutput: + description: Audio output data or reference + example: + data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f + expires_at: 1677652400 + id: audio_abc123 + transcript: Hello! How can I help you today? properties: - type: - type: string - enum: - - response.image_generation_call.completed - item_id: + data: + description: Base64 encoded audio data type: string - output_index: + expires_at: + description: Audio expiration timestamp type: integer - sequence_number: + id: + description: Audio output identifier + type: string + transcript: + description: Audio transcript + type: string + type: object + ChatChoice: + description: Chat completion choice + example: + finish_reason: stop + index: 0 + logprobs: null + message: + content: The capital of France is Paris. + role: assistant + properties: + finish_reason: + $ref: '#/components/schemas/ChatFinishReasonEnum' + index: + description: Choice index + example: 0 type: integer + logprobs: + $ref: '#/components/schemas/ChatTokenLogprobs' + message: + $ref: '#/components/schemas/ChatAssistantMessage' required: - - type - - item_id - - output_index - - sequence_number - example: - type: response.image_generation_call.completed - item_id: ig_abc123 - output_index: 0 - sequence_number: 4 - ImageGenCallCompletedEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted' - - type: object - properties: {} - example: - type: response.image_generation_call.completed - output_index: 0 - sequence_number: 4 - item_id: call-123 - description: Image generation call completed - OpenAIResponsesWebSearchCallInProgress: + - finish_reason + - index + - message type: object + ChatContentAudio: + description: Audio input content part. Supported audio formats vary by provider. + example: + input_audio: + data: SGVsbG8gV29ybGQ= + format: wav + type: input_audio properties: + input_audio: + properties: + data: + description: Base64 encoded audio data + type: string + format: + description: >- + Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by + provider. + type: string + required: + - data + - format + type: object type: - type: string enum: - - response.web_search_call.in_progress - item_id: + - input_audio type: string - output_index: - type: integer - sequence_number: - type: integer required: - type - - item_id - - output_index - - sequence_number + - input_audio + type: object + ChatContentCacheControl: + allOf: + - $ref: '#/components/schemas/AnthropicCacheControlDirective' + - properties: {} + type: object + description: Cache control for the content part example: - type: response.web_search_call.in_progress - item_id: ws_abc123 - output_index: 0 - sequence_number: 1 - WebSearchCallInProgressEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallInProgress' - - type: object - properties: {} + ttl: 5m + type: ephemeral + ChatContentFile: + description: File content part for document processing example: - type: response.web_search_call.in_progress - output_index: 0 - sequence_number: 1 - item_id: ws-123 - description: Web search call in progress - OpenAIResponsesWebSearchCallSearching: - type: object + file: + file_data: https://example.com/document.pdf + filename: document.pdf + type: file properties: + file: + properties: + file_data: + description: File content as base64 data URL or URL + type: string + file_id: + description: File ID for previously uploaded files + type: string + filename: + description: Original filename + type: string + type: object type: - type: string enum: - - response.web_search_call.searching - item_id: + - file type: string - output_index: - type: integer - sequence_number: - type: integer required: - type - - item_id - - output_index - - sequence_number - example: - type: response.web_search_call.searching - item_id: ws_abc123 - output_index: 0 - sequence_number: 2 - WebSearchCallSearchingEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallSearching' - - type: object - properties: {} - example: - type: response.web_search_call.searching - output_index: 0 - sequence_number: 2 - item_id: ws-123 - description: Web search call is searching - OpenAIResponsesSearchCompleted: + - file type: object + ChatContentImage: + description: Image content part for vision models + example: + image_url: + detail: auto + url: https://example.com/image.jpg + type: image_url properties: + image_url: + properties: + detail: + description: Image detail level for vision models + enum: + - auto + - low + - high + type: string + url: + description: 'URL of the image (data: URLs supported)' + type: string + required: + - url + type: object type: - type: string enum: - - response.web_search_call.completed - item_id: + - image_url type: string - output_index: - type: integer - sequence_number: - type: integer required: - type - - item_id - - output_index - - sequence_number - example: - type: response.web_search_call.completed - item_id: ws_abc123 - output_index: 0 - sequence_number: 5 - WebSearchCallCompletedEvent: - allOf: - - $ref: '#/components/schemas/OpenAIResponsesSearchCompleted' - - type: object - properties: {} - example: - type: response.web_search_call.completed - output_index: 0 - sequence_number: 3 - item_id: ws-123 - description: Web search call completed - StreamEvents: - oneOf: - - $ref: '#/components/schemas/OpenResponsesCreatedEvent' - - $ref: '#/components/schemas/OpenResponsesInProgressEvent' - - $ref: '#/components/schemas/StreamEventsResponseCompleted' - - $ref: '#/components/schemas/StreamEventsResponseIncomplete' - - $ref: '#/components/schemas/StreamEventsResponseFailed' - - $ref: '#/components/schemas/ErrorEvent' - - $ref: '#/components/schemas/StreamEventsResponseOutputItemAdded' - - $ref: '#/components/schemas/StreamEventsResponseOutputItemDone' - - $ref: '#/components/schemas/ContentPartAddedEvent' - - $ref: '#/components/schemas/ContentPartDoneEvent' - - $ref: '#/components/schemas/TextDeltaEvent' - - $ref: '#/components/schemas/TextDoneEvent' - - $ref: '#/components/schemas/RefusalDeltaEvent' - - $ref: '#/components/schemas/RefusalDoneEvent' - - $ref: '#/components/schemas/AnnotationAddedEvent' - - $ref: '#/components/schemas/FunctionCallArgsDeltaEvent' - - $ref: '#/components/schemas/FunctionCallArgsDoneEvent' - - $ref: '#/components/schemas/ReasoningDeltaEvent' - - $ref: '#/components/schemas/ReasoningDoneEvent' - - $ref: '#/components/schemas/ReasoningSummaryPartAddedEvent' - - $ref: '#/components/schemas/ReasoningSummaryPartDoneEvent' - - $ref: '#/components/schemas/ReasoningSummaryTextDeltaEvent' - - $ref: '#/components/schemas/ReasoningSummaryTextDoneEvent' - - $ref: '#/components/schemas/ImageGenCallInProgressEvent' - - $ref: '#/components/schemas/ImageGenCallGeneratingEvent' - - $ref: '#/components/schemas/ImageGenCallPartialImageEvent' - - $ref: '#/components/schemas/ImageGenCallCompletedEvent' - - $ref: '#/components/schemas/WebSearchCallInProgressEvent' - - $ref: '#/components/schemas/WebSearchCallSearchingEvent' - - $ref: '#/components/schemas/WebSearchCallCompletedEvent' + - image_url + type: object + ChatContentItems: + description: Content part for chat completion messages discriminator: - propertyName: type mapping: - response.created: '#/components/schemas/OpenResponsesCreatedEvent' - response.in_progress: '#/components/schemas/OpenResponsesInProgressEvent' - response.completed: '#/components/schemas/StreamEventsResponseCompleted' - response.incomplete: '#/components/schemas/StreamEventsResponseIncomplete' - response.failed: '#/components/schemas/StreamEventsResponseFailed' - error: '#/components/schemas/ErrorEvent' - response.output_item.added: '#/components/schemas/StreamEventsResponseOutputItemAdded' - response.output_item.done: '#/components/schemas/StreamEventsResponseOutputItemDone' - response.content_part.added: '#/components/schemas/ContentPartAddedEvent' - response.content_part.done: '#/components/schemas/ContentPartDoneEvent' - response.output_text.delta: '#/components/schemas/TextDeltaEvent' - response.output_text.done: '#/components/schemas/TextDoneEvent' - response.refusal.delta: '#/components/schemas/RefusalDeltaEvent' - response.refusal.done: '#/components/schemas/RefusalDoneEvent' - response.output_text.annotation.added: '#/components/schemas/AnnotationAddedEvent' - response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent' - response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent' - response.reasoning_text.delta: '#/components/schemas/ReasoningDeltaEvent' - response.reasoning_text.done: '#/components/schemas/ReasoningDoneEvent' - response.reasoning_summary_part.added: '#/components/schemas/ReasoningSummaryPartAddedEvent' - response.reasoning_summary_part.done: '#/components/schemas/ReasoningSummaryPartDoneEvent' - response.reasoning_summary_text.delta: '#/components/schemas/ReasoningSummaryTextDeltaEvent' - response.reasoning_summary_text.done: '#/components/schemas/ReasoningSummaryTextDoneEvent' - response.image_generation_call.in_progress: '#/components/schemas/ImageGenCallInProgressEvent' - response.image_generation_call.generating: '#/components/schemas/ImageGenCallGeneratingEvent' - response.image_generation_call.partial_image: '#/components/schemas/ImageGenCallPartialImageEvent' - response.image_generation_call.completed: '#/components/schemas/ImageGenCallCompletedEvent' - response.web_search_call.in_progress: '#/components/schemas/WebSearchCallInProgressEvent' - response.web_search_call.searching: '#/components/schemas/WebSearchCallSearchingEvent' - response.web_search_call.completed: '#/components/schemas/WebSearchCallCompletedEvent' - description: Union of all possible event types emitted during response streaming + file: '#/components/schemas/ChatContentFile' + image_url: '#/components/schemas/ChatContentImage' + input_audio: '#/components/schemas/ChatContentAudio' + input_video: '#/components/schemas/Legacy_ChatContentVideo' + text: '#/components/schemas/ChatContentText' + video_url: '#/components/schemas/ChatContentVideo' + propertyName: type example: - type: response.created - response: - id: resp-abc123 - object: response - created_at: 1704067200 - model: gpt-4 - status: in_progress - output: [] - tools: [] - tool_choice: auto - parallel_tool_calls: true - error: null - incomplete_details: null - metadata: null - instructions: null - temperature: null - top_p: null - max_output_tokens: null - sequence_number: 0 - BadRequestResponseErrorData: - type: object + text: Hello, world! + type: text + oneOf: + - $ref: '#/components/schemas/ChatContentText' + - $ref: '#/components/schemas/ChatContentImage' + - $ref: '#/components/schemas/ChatContentAudio' + - $ref: '#/components/schemas/Legacy_ChatContentVideo' + - $ref: '#/components/schemas/ChatContentVideo' + - $ref: '#/components/schemas/ChatContentFile' + ChatContentText: + description: Text content part + example: + text: Hello, world! + type: text properties: - code: - type: integer - message: + cache_control: + $ref: '#/components/schemas/ChatContentCacheControl' + text: + type: string + type: + enum: + - text type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true required: - - code - - message - description: Error data for BadRequestResponse - example: - code: 400 - message: Invalid request parameters - BadRequestResponse: + - type + - text type: object + ChatContentVideo: + description: Video input content part + example: + type: video_url + video_url: + url: https://example.com/video.mp4 properties: - error: - $ref: '#/components/schemas/BadRequestResponseErrorData' - user_id: + type: + enum: + - video_url type: string - nullable: true - required: - - error - description: Bad Request - Invalid request parameters or malformed input - example: - error: - code: 400 - message: Invalid request parameters - UnauthorizedResponseErrorData: - type: object - properties: - code: - type: integer - message: - type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true + video_url: + $ref: '#/components/schemas/ChatContentVideoInput' required: - - code - - message - description: Error data for UnauthorizedResponse - example: - code: 401 - message: Missing Authentication header - UnauthorizedResponse: + - type + - video_url type: object - properties: - error: - $ref: '#/components/schemas/UnauthorizedResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Unauthorized - Authentication required or invalid credentials + ChatContentVideoInput: + description: Video input object example: - error: - code: 401 - message: Missing Authentication header - PaymentRequiredResponseErrorData: - type: object + url: https://example.com/video.mp4 properties: - code: - type: integer - message: + url: + description: 'URL of the video (data: URLs supported)' type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true required: - - code - - message - description: Error data for PaymentRequiredResponse - example: - code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits - PaymentRequiredResponse: + - url type: object - properties: - error: - $ref: '#/components/schemas/PaymentRequiredResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Payment Required - Insufficient credits or quota to complete request + ChatDebugOptions: + description: Debug options for inspecting request transformations (streaming only) example: - error: - code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits - NotFoundResponseErrorData: - type: object + echo_upstream_body: true properties: - code: - type: integer - message: - type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true - required: - - code - - message - description: Error data for NotFoundResponse - example: - code: 404 - message: Resource not found - NotFoundResponse: + echo_upstream_body: + description: >- + If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only + works with streaming mode. + example: true + type: boolean type: object + ChatDeveloperMessage: + description: Developer message + example: + content: This is a message from the developer. + role: developer properties: - error: - $ref: '#/components/schemas/NotFoundResponseErrorData' - user_id: + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ChatContentText' + type: array + description: Developer message content + example: This is a message from the developer. + name: + description: Optional name for the developer message + example: Developer + type: string + role: + enum: + - developer type: string - nullable: true required: + - role + - content + type: object + ChatFinishReasonEnum: + enum: + - tool_calls + - stop + - length + - content_filter - error - description: Not Found - Resource does not exist + - null + example: stop + nullable: true + type: string + ChatFormatGrammarConfig: + description: Custom grammar response format example: - error: - code: 404 - message: Resource not found - RequestTimeoutResponseErrorData: - type: object + grammar: root ::= "yes" | "no" + type: grammar properties: - code: - type: integer - message: + grammar: + description: Custom grammar for text generation + example: root ::= "yes" | "no" type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true - required: - - code - - message - description: Error data for RequestTimeoutResponse - example: - code: 408 - message: Operation timed out. Please try again later. - RequestTimeoutResponse: - type: object - properties: - error: - $ref: '#/components/schemas/RequestTimeoutResponseErrorData' - user_id: + type: + enum: + - grammar type: string - nullable: true required: - - error - description: Request Timeout - Operation exceeded time limit - example: - error: - code: 408 - message: Operation timed out. Please try again later. - PayloadTooLargeResponseErrorData: + - type + - grammar type: object + ChatFormatJsonSchemaConfig: + description: JSON Schema response format for structured outputs + example: + json_schema: + name: math_response + schema: + properties: + answer: + type: number + required: + - answer + type: object + type: json_schema properties: - code: - type: integer - message: + json_schema: + $ref: '#/components/schemas/ChatJsonSchemaConfig' + type: + enum: + - json_schema type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true required: - - code - - message - description: Error data for PayloadTooLargeResponse - example: - code: 413 - message: Request payload too large - PayloadTooLargeResponse: + - type + - json_schema type: object + ChatFormatPythonConfig: + description: Python code response format + example: + type: python properties: - error: - $ref: '#/components/schemas/PayloadTooLargeResponseErrorData' - user_id: + type: + enum: + - python type: string - nullable: true required: - - error - description: Payload Too Large - Request payload exceeds size limits - example: - error: - code: 413 - message: Request payload too large - UnprocessableEntityResponseErrorData: + - type type: object + ChatFormatTextConfig: + description: Default text response format + example: + type: text properties: - code: - type: integer - message: + type: + enum: + - text type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true required: - - code - - message - description: Error data for UnprocessableEntityResponse - example: - code: 422 - message: Invalid argument - UnprocessableEntityResponse: - type: object - properties: - error: - $ref: '#/components/schemas/UnprocessableEntityResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Unprocessable Entity - Semantic validation failure - example: - error: - code: 422 - message: Invalid argument - TooManyRequestsResponseErrorData: + - type type: object - properties: - code: - type: integer - message: - type: string - metadata: + ChatFunctionTool: + anyOf: + - properties: + cache_control: + $ref: '#/components/schemas/ChatContentCacheControl' + function: + description: Function definition for tool calling + example: + description: Get the current weather for a location + name: get_weather + parameters: + properties: + location: + description: City name + type: string + required: + - location + type: object + properties: + description: + description: Function description for the model + example: Get the current weather for a location + type: string + name: + description: Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) + example: get_weather + maxLength: 64 + type: string + parameters: + additionalProperties: + nullable: true + description: Function parameters as JSON Schema object + example: + properties: + location: + description: City name + type: string + required: + - location + type: object + type: object + strict: + description: Enable strict schema adherence + example: false + nullable: true + type: boolean + required: + - name + type: object + type: + enum: + - function + type: string + required: + - type + - function type: object - nullable: true - additionalProperties: - nullable: true - required: - - code - - message - description: Error data for TooManyRequestsResponse + - $ref: '#/components/schemas/DatetimeServerTool' + - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' + - $ref: '#/components/schemas/ChatWebSearchShorthand' + description: Tool definition for function calling (regular function or OpenRouter built-in server tool) example: - code: 429 - message: Rate limit exceeded - TooManyRequestsResponse: - type: object - properties: - error: - $ref: '#/components/schemas/TooManyRequestsResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Too Many Requests - Rate limit exceeded + function: + description: Get the current weather for a location + name: get_weather + parameters: + properties: + location: + description: City name + type: string + unit: + enum: + - celsius + - fahrenheit + type: string + required: + - location + type: object + type: function + ChatJsonSchemaConfig: + description: JSON Schema configuration object example: - error: - code: 429 - message: Rate limit exceeded - InternalServerResponseErrorData: - type: object + description: A mathematical response + name: math_response + schema: + properties: + answer: + type: number + required: + - answer + type: object + strict: true properties: - code: - type: integer - message: + description: + description: Schema description for the model + example: A mathematical response type: string - metadata: - type: object - nullable: true + name: + description: Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) + example: math_response + maxLength: 64 + type: string + schema: additionalProperties: nullable: true - required: - - code - - message - description: Error data for InternalServerResponse - example: - code: 500 - message: Internal Server Error - InternalServerResponse: - type: object - properties: - error: - $ref: '#/components/schemas/InternalServerResponseErrorData' - user_id: - type: string + description: JSON Schema object + example: + properties: + answer: + type: number + required: + - answer + type: object + type: object + strict: + description: Enable strict schema adherence + example: false nullable: true + type: boolean required: - - error - description: Internal Server Error - Unexpected server error - example: - error: - code: 500 - message: Internal Server Error - BadGatewayResponseErrorData: + - name type: object + ChatMessages: + description: Chat completion message with role-based discrimination + discriminator: + mapping: + assistant: '#/components/schemas/ChatAssistantMessage' + developer: '#/components/schemas/ChatDeveloperMessage' + system: '#/components/schemas/ChatSystemMessage' + tool: '#/components/schemas/ChatToolMessage' + user: '#/components/schemas/ChatUserMessage' + propertyName: role + example: + content: What is the capital of France? + role: user + oneOf: + - $ref: '#/components/schemas/ChatSystemMessage' + - $ref: '#/components/schemas/ChatUserMessage' + - $ref: '#/components/schemas/ChatDeveloperMessage' + - $ref: '#/components/schemas/ChatAssistantMessage' + - $ref: '#/components/schemas/ChatToolMessage' + ChatModelNames: + description: Models to use for completion + example: + - openai/gpt-4 + - openai/gpt-4o + items: + allOf: + - $ref: '#/components/schemas/ModelName' + - description: Available OpenRouter chat completion models + type: array + ChatNamedToolChoice: + description: Named tool choice for specific function + example: + function: + name: get_weather + type: function properties: - code: - type: integer - message: - type: string - metadata: + function: + properties: + name: + description: Function name to call + example: get_weather + type: string + required: + - name type: object - nullable: true - additionalProperties: - nullable: true + type: + enum: + - function + type: string required: - - code - - message - description: Error data for BadGatewayResponse - example: - code: 502 - message: Provider returned error - BadGatewayResponse: + - type + - function type: object - properties: - error: - $ref: '#/components/schemas/BadGatewayResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Bad Gateway - Provider/upstream API failure + ChatReasoningDetails: + description: Reasoning details for extended thinking models example: - error: - code: 502 - message: Provider returned error - ServiceUnavailableResponseErrorData: - type: object + - thinking: Let me work through this step by step... + type: thinking + items: + $ref: '#/components/schemas/ReasoningDetailUnion' + type: array + ChatReasoningSummaryVerbosityEnum: + enum: + - auto + - concise + - detailed + - null + example: concise + nullable: true + type: string + ChatRequest: + description: Chat completion request parameters + example: + max_tokens: 150 + messages: + - content: You are a helpful assistant. + role: system + - content: What is the capital of France? + role: user + model: openai/gpt-4 + temperature: 0.7 properties: - code: - type: integer - message: - type: string - metadata: + cache_control: + allOf: + - $ref: '#/components/schemas/AnthropicCacheControlDirective' + - description: >- + Enable automatic prompt caching. When set, the system automatically applies cache breakpoints to the + last cacheable block in the request. Currently supported for Anthropic Claude models. + debug: + $ref: '#/components/schemas/ChatDebugOptions' + frequency_penalty: + description: Frequency penalty (-2.0 to 2.0) + example: 0 + format: double + type: number + image_config: + additionalProperties: + anyOf: + - type: string + - format: double + type: number + - items: + nullable: true + type: array + description: >- + Provider-specific image configuration options. Keys and values vary by model/provider. See + https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. + example: + aspect_ratio: '16:9' type: object - nullable: true + logit_bias: additionalProperties: - nullable: true - required: - - code - - message - description: Error data for ServiceUnavailableResponse - example: - code: 503 - message: Service temporarily unavailable - ServiceUnavailableResponse: - type: object - properties: - error: - $ref: '#/components/schemas/ServiceUnavailableResponseErrorData' - user_id: - type: string + format: double + type: number + description: Token logit bias adjustments + example: + '50256': -100 nullable: true - required: - - error - description: Service Unavailable - Service temporarily unavailable - example: - error: - code: 503 - message: Service temporarily unavailable - EdgeNetworkTimeoutResponseErrorData: - type: object - properties: - code: - type: integer - message: - type: string - metadata: type: object + logprobs: + description: Return log probabilities + example: false nullable: true - additionalProperties: - nullable: true - required: - - code - - message - description: Error data for EdgeNetworkTimeoutResponse - example: - code: 524 - message: Request timed out. Please try again later. - EdgeNetworkTimeoutResponse: - type: object - properties: - error: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Infrastructure Timeout - Provider request timed out at edge network - example: - error: - code: 524 - message: Request timed out. Please try again later. - ProviderOverloadedResponseErrorData: - type: object - properties: - code: + type: boolean + max_completion_tokens: + description: Maximum tokens in completion + example: 100 type: integer - message: - type: string + max_tokens: + description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.' + example: 100 + type: integer + messages: + description: List of messages for the conversation + example: + - content: Hello! + role: user + items: + $ref: '#/components/schemas/ChatMessages' + minItems: 1 + type: array metadata: - type: object - nullable: true additionalProperties: - nullable: true - required: - - code - - message - description: Error data for ProviderOverloadedResponse - example: - code: 529 - message: Provider returned error - ProviderOverloadedResponse: - type: object - properties: - error: - $ref: '#/components/schemas/ProviderOverloadedResponseErrorData' - user_id: - type: string + type: string + description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) + example: + session_id: session-456 + user_id: user-123 + type: object + modalities: + description: Output modalities for the response. Supported values are "text", "image", and "audio". + example: + - text + - image + items: + enum: + - text + - image + - audio + type: string + type: array + model: + $ref: '#/components/schemas/ModelName' + models: + $ref: '#/components/schemas/ChatModelNames' + parallel_tool_calls: + description: >- + Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool + calls in a single response. + example: true nullable: true - required: - - error - description: Provider Overloaded - Provider is temporarily overloaded - example: - error: - code: 529 - message: Provider returned error - ReasoningItem: - allOf: - - $ref: '#/components/schemas/OutputItemReasoning' - - type: object + type: boolean + plugins: + description: Plugins you want to enable for this request, including their settings. + items: + discriminator: + mapping: + auto-router: '#/components/schemas/AutoRouterPlugin' + context-compression: '#/components/schemas/ContextCompressionPlugin' + file-parser: '#/components/schemas/FileParserPlugin' + moderation: '#/components/schemas/ModerationPlugin' + response-healing: '#/components/schemas/ResponseHealingPlugin' + web: '#/components/schemas/WebSearchPlugin' + propertyName: id + oneOf: + - $ref: '#/components/schemas/AutoRouterPlugin' + - $ref: '#/components/schemas/ModerationPlugin' + - $ref: '#/components/schemas/WebSearchPlugin' + - $ref: '#/components/schemas/FileParserPlugin' + - $ref: '#/components/schemas/ResponseHealingPlugin' + - $ref: '#/components/schemas/ContextCompressionPlugin' + type: array + presence_penalty: + description: Presence penalty (-2.0 to 2.0) + example: 0 + format: double + type: number + provider: + $ref: '#/components/schemas/ProviderPreferences' + reasoning: + description: Configuration options for reasoning models + example: + effort: medium + summary: concise properties: - content: - type: array + effort: + description: Constrains effort on reasoning for reasoning models + enum: + - xhigh + - high + - medium + - low + - minimal + - none + - null + example: medium nullable: true - items: - $ref: '#/components/schemas/ReasoningTextContent' - signature: type: string - nullable: true - format: - $ref: '#/components/schemas/ReasoningFormat' - example: - type: reasoning - id: reasoning-abc123 - summary: - - type: summary_text - text: Step by step analysis - description: Reasoning output item with signature and format extensions - InputVideo: - type: object - properties: - type: - type: string + summary: + $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum' + type: object + response_format: + description: Response format configuration + discriminator: + mapping: + grammar: '#/components/schemas/ChatFormatGrammarConfig' + json_object: '#/components/schemas/FormatJsonObjectConfig' + json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig' + python: '#/components/schemas/ChatFormatPythonConfig' + text: '#/components/schemas/ChatFormatTextConfig' + propertyName: type + example: + type: json_object + oneOf: + - $ref: '#/components/schemas/ChatFormatTextConfig' + - $ref: '#/components/schemas/FormatJsonObjectConfig' + - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig' + - $ref: '#/components/schemas/ChatFormatGrammarConfig' + - $ref: '#/components/schemas/ChatFormatPythonConfig' + route: + $ref: '#/components/schemas/DeprecatedRoute' + seed: + description: Random seed for deterministic outputs + example: 42 + type: integer + service_tier: + description: The service tier to use for processing this request. enum: - - input_video - video_url: + - auto + - default + - flex + - priority + - scale + - null + example: auto + nullable: true type: string - description: A base64 data URL or remote URL that resolves to a video file - required: - - type - - video_url - description: Video input content item - example: - type: input_video - video_url: https://example.com/video.mp4 - EasyInputMessage: - type: object - properties: - type: + session_id: + description: >- + A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for + observability. If provided in both the request body and the x-session-id header, the body value takes + precedence. Maximum of 256 characters. + maxLength: 256 type: string - enum: - - message - role: - anyOf: - - type: string - enum: - - user - - type: string - enum: - - system - - type: string - enum: - - assistant - - type: string - enum: - - developer - content: - anyOf: - - type: array - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - allOf: - - $ref: '#/components/schemas/InputImage' - - type: object - properties: {} - description: Image input content item - example: - type: input_image - detail: auto - image_url: https://example.com/image.jpg - - $ref: '#/components/schemas/InputFile' - - $ref: '#/components/schemas/InputAudio' - - $ref: '#/components/schemas/InputVideo' - - type: string - - nullable: true - phase: + stop: anyOf: - type: string - enum: - - commentary - - type: string - enum: - - final_answer + - items: + type: string + maxItems: 4 + type: array - 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 + description: Stop sequences (up to 4) + example: + - |+ + + stream: + default: false + description: Enable streaming response + example: false + type: boolean + stream_options: + $ref: '#/components/schemas/ChatStreamOptions' + temperature: + description: Sampling temperature (0-2) + example: 0.7 + format: double + type: number + tool_choice: + $ref: '#/components/schemas/ChatToolChoice' + tools: + description: Available tools for function calling + example: + - function: + description: Get weather + name: get_weather + type: function + items: + $ref: '#/components/schemas/ChatFunctionTool' + type: array + top_logprobs: + description: Number of top log probabilities to return (0-20) + example: 5 + type: integer + top_p: + description: Nucleus sampling parameter (0-1) + example: 1 + format: double + type: number + trace: + $ref: '#/components/schemas/TraceConfig' + user: + description: Unique user identifier + example: user-123 + type: string required: - - role - example: - role: user - content: What is the weather today? - InputMessageItem: + - messages type: object + ChatResult: + description: Chat completion response + example: + choices: + - finish_reason: stop + index: 0 + message: + content: The capital of France is Paris. + role: assistant + created: 1677652288 + id: chatcmpl-123 + model: openai/gpt-4 + object: chat.completion + usage: + completion_tokens: 15 + prompt_tokens: 10 + total_tokens: 25 properties: + choices: + description: List of completion choices + items: + $ref: '#/components/schemas/ChatChoice' + type: array + created: + description: Unix timestamp of creation + example: 1677652288 + type: integer id: + description: Unique completion identifier + example: chatcmpl-123 type: string - type: + model: + description: Model used for completion + example: openai/gpt-4 type: string + object: enum: - - message - role: - anyOf: - - type: string - enum: - - user - - type: string - enum: - - system - - type: string - enum: - - developer - content: - type: array + - chat.completion + type: string + service_tier: + description: The service tier used by the upstream provider for this request + example: default nullable: true - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - allOf: - - $ref: '#/components/schemas/InputImage' - - type: object - properties: {} - description: Image input content item - example: - type: input_image - detail: auto - image_url: https://example.com/image.jpg - - $ref: '#/components/schemas/InputFile' - - $ref: '#/components/schemas/InputAudio' - - $ref: '#/components/schemas/InputVideo' + type: string + system_fingerprint: + description: System fingerprint + example: fp_44709d6fcb + nullable: true + type: string + usage: + $ref: '#/components/schemas/ChatUsage' required: - - role - example: - id: msg-abc123 - type: message - role: user - content: - - type: input_text - text: Hello, how are you? - FunctionCallItem: - allOf: - - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' - - type: object - properties: {} - required: - - id + - id + - choices + - created + - model + - object + - system_fingerprint + type: object + ChatStreamChoice: + description: Streaming completion choice chunk example: - id: call-abc123 - type: function_call - call_id: call-abc123 - name: get_weather - arguments: '{"location":"San Francisco"}' - status: completed - description: A function call initiated by the model - FunctionCallOutputItem: - allOf: - - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' - - type: object - properties: - output: - anyOf: - - type: string - - type: array - items: - oneOf: - - $ref: '#/components/schemas/InputText' - - allOf: - - $ref: '#/components/schemas/InputImage' - - type: object - properties: {} - description: Image input content item - example: - type: input_image - detail: auto - image_url: https://example.com/image.jpg - - $ref: '#/components/schemas/InputFile' - example: - type: function_call_output - id: output-abc123 - call_id: call-abc123 - output: '{"temperature":72,"conditions":"sunny"}' - status: completed - description: The output from a function call execution - Inputs: - anyOf: - - type: string - - type: array - items: - anyOf: - - $ref: '#/components/schemas/ReasoningItem' - - $ref: '#/components/schemas/EasyInputMessage' - - $ref: '#/components/schemas/InputMessageItem' - - $ref: '#/components/schemas/FunctionCallItem' - - $ref: '#/components/schemas/FunctionCallOutputItem' - - allOf: - - $ref: '#/components/schemas/OutputMessageItem' - - type: object - properties: - content: - anyOf: - - type: array - items: - anyOf: - - $ref: '#/components/schemas/ResponseOutputText' - - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' - - type: string - - nullable: true - example: - id: msg-123 - type: message - role: assistant - status: completed - content: - - type: output_text - text: Hello! How can I help you? - annotations: [] - description: An output message item - - allOf: - - $ref: '#/components/schemas/OutputReasoningItem' - - type: object - properties: - summary: - type: array - nullable: true - items: - $ref: '#/components/schemas/ReasoningSummaryText' - example: - id: reasoning-123 - type: reasoning - status: completed - summary: - - type: summary_text - text: Analyzed the problem and found the optimal solution. - content: - - type: reasoning_text - text: First, we analyze the problem... - signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... - format: anthropic-claude-v1 - description: An output item containing reasoning - - $ref: '#/components/schemas/OutputFunctionCallItem' - - $ref: '#/components/schemas/OutputWebSearchCallItem' - - $ref: '#/components/schemas/OutputFileSearchCallItem' - - $ref: '#/components/schemas/OutputImageGenerationCallItem' - - $ref: '#/components/schemas/OutputDatetimeItem' - - $ref: '#/components/schemas/OutputWebSearchServerToolItem' - description: Input for a response request - can be a string or array of items - example: - - role: user - content: What is the weather today? - DatetimeServerTool: + delta: + content: Hello + role: assistant + finish_reason: null + index: 0 + properties: + delta: + $ref: '#/components/schemas/ChatStreamDelta' + finish_reason: + $ref: '#/components/schemas/ChatFinishReasonEnum' + index: + description: Choice index + example: 0 + type: integer + logprobs: + $ref: '#/components/schemas/ChatTokenLogprobs' + required: + - delta + - finish_reason + - index type: object + ChatStreamChunk: + description: Streaming chat completion chunk + example: + choices: + - delta: + content: Hello + role: assistant + finish_reason: null + index: 0 + created: 1677652288 + id: chatcmpl-123 + model: openai/gpt-4 + object: chat.completion.chunk properties: - type: - type: string - enum: - - openrouter:datetime - parameters: - type: object + choices: + description: List of streaming chunk choices + items: + $ref: '#/components/schemas/ChatStreamChoice' + type: array + created: + description: Unix timestamp of creation + example: 1677652288 + type: integer + error: + description: Error information + example: + code: 429 + message: Rate limit exceeded properties: - timezone: + code: + description: Error code + example: 429 + format: int32 + type: integer + message: + description: Error message + example: Rate limit exceeded type: string - description: IANA timezone name (e.g. "America/New_York"). Defaults to UTC. - example: America/New_York + required: + - message + - code + type: object + id: + description: Unique chunk identifier + example: chatcmpl-123 + type: string + model: + description: Model used for completion + example: openai/gpt-4 + type: string + object: + enum: + - chat.completion.chunk + type: string + service_tier: + description: The service tier used by the upstream provider for this request + example: default + nullable: true + type: string + system_fingerprint: + description: System fingerprint + example: fp_44709d6fcb + type: string + usage: + $ref: '#/components/schemas/ChatUsage' required: - - type - description: 'OpenRouter built-in server tool: returns the current date and time' - example: - type: openrouter:datetime - parameters: - timezone: America/New_York - WebSearchServerTool_OpenRouter: + - id + - choices + - created + - model + - object type: object + x-speakeasy-entity: ChatStreamChunk + ChatStreamDelta: + description: Delta changes in streaming response + example: + content: Hello + role: assistant properties: - type: + audio: + allOf: + - $ref: '#/components/schemas/ChatAudioOutput' + - description: Audio output data + content: + description: Message content delta + example: Hello + nullable: true + type: string + reasoning: + description: Reasoning content delta + example: I need to + nullable: true + type: string + reasoning_details: + $ref: '#/components/schemas/ChatStreamReasoningDetails' + refusal: + description: Refusal message delta + example: null + nullable: true type: string + role: + description: The role of the message author enum: - - openrouter:web_search - parameters: - type: object - properties: - max_results: - type: integer - description: Maximum number of search results to return per search call. Defaults to 5. - example: 5 - max_total_results: - type: integer - 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. - example: 20 - required: - - type - description: 'OpenRouter built-in server tool: searches the web for current information' - example: - type: openrouter:web_search - parameters: - max_results: 5 - TextExtendedConfig: - allOf: - - $ref: '#/components/schemas/TextConfig' - - type: object - properties: {} - description: Text output configuration including format and verbosity + - assistant + example: assistant + type: string + tool_calls: + description: Tool calls delta + items: + $ref: '#/components/schemas/ChatStreamToolCall' + type: array + type: object + ChatStreamOptions: + description: Streaming configuration options example: - format: - type: text - ReasoningConfig: - allOf: - - $ref: '#/components/schemas/BaseReasoningConfig' - - type: object - nullable: true - properties: - max_tokens: - type: integer - enabled: - type: boolean - nullable: true - example: - summary: auto - enabled: true - description: Configuration for reasoning mode in the response - OutputModalityEnum: - type: string - enum: - - text - - image - example: text - ResponseIncludesEnum: - type: string - enum: - - file_search_call.results - - message.input_image.image_url - - computer_call_output.output.image_url - - reasoning.encrypted_content - - code_interpreter_call.outputs - example: file_search_call.results - OpenAIResponsesTruncation: - type: string + include_usage: true nullable: true - enum: - - auto - - disabled - - null - example: auto - ProviderName: - type: string - enum: - - AkashML - - AI21 - - AionLabs - - Alibaba - - Ambient - - Amazon Bedrock - - Amazon Nova - - Anthropic - - Arcee AI - - AtlasCloud - - Avian - - Azure - - BaseTen - - BytePlus - - Black Forest Labs - - Cerebras - - Chutes - - Cirrascale - - Clarifai - - Cloudflare - - Cohere - - Crusoe - - DeepInfra - - DeepSeek - - Featherless - - Fireworks - - Friendli - - GMICloud - - Google - - Google AI Studio - - Groq - - Hyperbolic - - Inception - - Inceptron - - InferenceNet - - Ionstream - - Infermatic - - Io Net - - Inflection - - Liquid - - Mara - - Mancer 2 - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Perplexity - - Phala - - Reka - - Relace - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Together - - Upstage - - Venice - - WandB - - Xiaomi - - xAI - - Z.AI - - FakeProvider - example: OpenAI - Quantization: - type: string - enum: - - int4 - - int8 - - fp4 - - fp6 - - fp8 - - fp16 - - bf16 - - fp32 - - unknown - example: fp16 - ProviderSort: - type: string - enum: - - price - - throughput - - latency - - exacto - description: The provider sorting strategy (price, throughput, latency) - example: price - ProviderSortConfig: + properties: + include_usage: + deprecated: true + description: 'Deprecated: This field has no effect. Full usage details are always included.' + example: true + type: boolean type: object + ChatStreamReasoningDetails: + description: Reasoning details for extended thinking models + example: + - text: Let me think about this... + type: text + items: + $ref: '#/components/schemas/ReasoningDetailUnion' + type: array + ChatStreamToolCall: + description: Tool call delta for streaming responses + example: + function: + arguments: '{"location": "..."}' + name: get_weather + id: call_abc123 + index: 0 + type: function properties: - by: + function: + description: Function call details + properties: + arguments: + description: Function arguments as JSON string + example: '{"location": "..."}' + type: string + name: + description: Function name + example: get_weather + type: string + type: object + id: + description: Tool call identifier + example: call_abc123 type: string - nullable: true + index: + description: Tool call index in the array + example: 0 + type: integer + type: + description: Tool call type enum: - - price - - throughput - - latency - - exacto - - null - description: The provider sorting strategy (price, throughput, latency) - example: price - partition: + - function + example: function type: string - nullable: true - enum: - - model - - none - - null - 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. - example: model - description: The provider sorting strategy (price, throughput, latency) + required: + - index + type: object + ChatSystemMessage: + description: System message for setting behavior example: - by: price - partition: model - BigNumberUnion: - type: string - description: Price per million prompt tokens - example: 1000 - PercentileThroughputCutoffs: + content: You are a helpful assistant. + name: Assistant Config + role: system + properties: + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ChatContentText' + type: array + description: System message content + example: You are a helpful assistant. + name: + description: Optional name for the system message + example: Assistant Config + type: string + role: + enum: + - system + type: string + required: + - role + - content type: object + ChatTokenLogprob: + description: Token log probability information + example: + bytes: null + logprob: -0.612345 + token: ' Hello' + top_logprobs: + - bytes: null + logprob: -0.612345 + token: ' Hello' properties: - p50: - type: number + bytes: + description: UTF-8 bytes of the token + items: + type: integer + nullable: true + type: array + logprob: + description: Log probability of the token format: double - description: Minimum p50 throughput (tokens/sec) - p75: - type: number - format: double - description: Minimum p75 throughput (tokens/sec) - p90: - type: number - format: double - description: Minimum p90 throughput (tokens/sec) - p99: type: number - format: double - description: Minimum p99 throughput (tokens/sec) - description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred. - example: - p50: 100 - p90: 50 - PreferredMinThroughput: - anyOf: - - type: number - format: double - - $ref: '#/components/schemas/PercentileThroughputCutoffs' - - nullable: true - description: >- - Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with - percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in - routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if - it meets the threshold. - example: 100 - PercentileLatencyCutoffs: + token: + description: The token + type: string + top_logprobs: + description: Top alternative tokens with probabilities + items: + properties: + bytes: + items: + type: integer + nullable: true + type: array + logprob: + format: double + type: number + token: + type: string + required: + - token + - logprob + - bytes + type: object + type: array + required: + - token + - logprob + - bytes + - top_logprobs type: object - properties: - p50: - type: number - format: double - description: Maximum p50 latency (seconds) - p75: - type: number - format: double - description: Maximum p75 latency (seconds) - p90: - type: number - format: double - description: Maximum p90 latency (seconds) - p99: - type: number - format: double - description: Maximum p99 latency (seconds) - description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred. + ChatTokenLogprobs: + description: Log probabilities for the completion example: - p50: 5 - p90: 10 - PreferredMaxLatency: - anyOf: - - type: number - format: double - - $ref: '#/components/schemas/PercentileLatencyCutoffs' - - nullable: true - description: >- - Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific - cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using - fallback models, this may cause a fallback model to be used instead of the primary model if it meets the - threshold. - example: 5 - ProviderPreferences: - type: object + content: + - bytes: null + logprob: -0.612345 + token: ' Hello' + top_logprobs: [] + refusal: null nullable: true properties: - allow_fallbacks: - type: boolean - nullable: true - description: > - Whether to allow backup providers to serve requests - - - true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the - next best provider. - - - false: use only the primary/custom provider, and return the upstream error if it's unavailable. - require_parameters: - type: boolean - nullable: true - description: >- - Whether to filter providers to only those that support the parameters you've provided. If this setting is - omitted or set to false, then providers will receive only the parameters they support, and ignore the rest. - data_collection: - type: string - nullable: true - enum: - - deny - - allow - - null - example: allow - description: >- - Data collection setting. If no available model provider meets the requirement, your request will return an - error. - - - allow: (default) allow providers which store user data non-transiently and may train on it - - - - deny: use only providers which do not collect user data. - zdr: - type: boolean - nullable: true - description: >- - Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do - not retain prompts will be used. - example: true - enforce_distillable_text: - type: boolean - nullable: true - description: >- - Whether to restrict routing to only models that allow text distillation. When true, only models where the - author has allowed distillation will be used. - example: true - order: - type: array - nullable: true + content: + description: Log probabilities for content tokens items: - anyOf: - - $ref: '#/components/schemas/ProviderName' - - type: string - description: >- - An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this - list that supports your requested model, and fall back to the next if it is unavailable. If no providers are - available, the request will fail with an error message. - example: - - openai - - anthropic - only: - type: array + $ref: '#/components/schemas/ChatTokenLogprob' nullable: true - items: - anyOf: - - $ref: '#/components/schemas/ProviderName' - - type: string - description: >- - List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider - settings for this request. - example: - - openai - - anthropic - ignore: type: array - nullable: true + refusal: + description: Log probabilities for refusal tokens items: - anyOf: - - $ref: '#/components/schemas/ProviderName' - - type: string - description: >- - List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider - settings for this request. - example: - - openai - - anthropic - quantizations: - type: array + $ref: '#/components/schemas/ChatTokenLogprob' nullable: true - items: - $ref: '#/components/schemas/Quantization' - description: A list of quantization levels to filter the provider by. - 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 - max_price: - type: object - properties: - prompt: - $ref: '#/components/schemas/BigNumberUnion' - completion: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: Price per million completion tokens - image: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: Price per image - audio: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: Price per audio unit - request: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: Price per request - description: >- - The object specifying the maximum price you want to pay for this request. USD price per million tokens, for - prompt and completion. - preferred_min_throughput: - $ref: '#/components/schemas/PreferredMinThroughput' - preferred_max_latency: - $ref: '#/components/schemas/PreferredMaxLatency' - additionalProperties: false - example: - allow_fallbacks: true - description: When multiple model providers are available, optionally indicate your routing preference. - AutoRouterPlugin: + type: array + required: + - content type: object + ChatToolCall: + description: Tool call made by the assistant + example: + function: + arguments: '{"location": "Boston, MA"}' + name: get_current_weather + id: call_abc123 + type: function properties: + function: + properties: + arguments: + description: Function arguments as JSON string + type: string + name: + description: Function name to call + type: string + required: + - name + - arguments + type: object id: + description: Tool call identifier type: string + type: enum: - - auto-router - enabled: - type: boolean - description: Set to false to disable the auto-router plugin for this request. Defaults to true. - allowed_models: - type: array - items: - type: string - 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/* + - function + type: string required: - id - example: - id: auto-router - enabled: true - allowed_models: - - anthropic/* - - openai/gpt-4o - ModerationPlugin: + - type + - function type: object - properties: - id: + ChatToolChoice: + anyOf: + - enum: + - none + type: string + - enum: + - auto + type: string + - enum: + - required type: string + - $ref: '#/components/schemas/ChatNamedToolChoice' + description: Tool choice configuration + example: auto + ChatToolMessage: + description: Tool response message + example: + content: The weather in San Francisco is 72°F and sunny. + role: tool + tool_call_id: call_abc123 + properties: + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ChatContentItems' + type: array + description: Tool response content + example: The weather in San Francisco is 72°F and sunny. + role: enum: - - moderation + - tool + type: string + tool_call_id: + description: ID of the assistant message tool call this message responds to + example: call_abc123 + type: string required: - - id + - role + - content + - tool_call_id + type: object + ChatUsage: + description: Token usage statistics example: - id: moderation - WebSearchEngine: - type: string - enum: - - native - - exa - - firecrawl - - parallel - description: The search engine to use for web search. - example: exa - WebSearchPlugin: + completion_tokens: 15 + completion_tokens_details: + reasoning_tokens: 5 + prompt_tokens: 10 + prompt_tokens_details: + cached_tokens: 2 + total_tokens: 25 + properties: + completion_tokens: + description: Number of tokens in the completion + type: integer + completion_tokens_details: + description: Detailed completion token usage + nullable: true + properties: + accepted_prediction_tokens: + description: Accepted prediction tokens + type: integer + audio_tokens: + description: Tokens used for audio output + type: integer + reasoning_tokens: + description: Tokens used for reasoning + type: integer + rejected_prediction_tokens: + description: Rejected prediction tokens + type: integer + type: object + prompt_tokens: + description: Number of tokens in the prompt + type: integer + prompt_tokens_details: + description: Detailed prompt token usage + nullable: true + properties: + audio_tokens: + description: Audio input tokens + type: integer + cache_write_tokens: + description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing. + type: integer + cached_tokens: + description: Cached prompt tokens + type: integer + video_tokens: + description: Video input tokens + type: integer + type: object + total_tokens: + description: Total number of tokens + type: integer + required: + - completion_tokens + - prompt_tokens + - total_tokens type: object + ChatUserMessage: + description: User message + example: + content: What is the capital of France? + role: user properties: - id: + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ChatContentItems' + type: array + description: User message content + example: What is the capital of France? + name: + description: Optional name for the user + example: User type: string + role: enum: - - web - enabled: - type: boolean - description: Set to false to disable the web-search plugin for this request. Defaults to true. - max_results: - type: integer - search_prompt: + - user type: string - engine: - $ref: '#/components/schemas/WebSearchEngine' - include_domains: - type: array + required: + - role + - content + type: object + ChatWebSearchShorthand: + description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search. + example: + type: web_search_preview + properties: + allowed_domains: + description: >- + Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, + OpenAI, xAI). Not supported with Firecrawl or Perplexity. items: type: string - description: >- - A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path - filtering (e.g. "openai.com/blog"). - example: - - example.com - - '*.substack.com' - - openai.com/blog - exclude_domains: type: array + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + excluded_domains: + description: >- + Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported + with Firecrawl, OpenAI (silently ignored), or Perplexity. items: type: string + type: array + max_results: description: >- - A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path - filtering (e.g. "openai.com/blog"). - example: - - example.com - - '*.substack.com' - - openai.com/blog - required: - - id - example: - id: web - enabled: true - max_results: 5 - PDFParserEngine: - anyOf: - - type: string - enum: - - mistral-ocr - - native - - cloudflare-ai - - type: string + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 + type: integer + max_total_results: + description: >- + Maximum total number of search results across all search calls in a single request. Once this limit is + reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic + loops. + example: 20 + type: integer + parameters: + $ref: '#/components/schemas/WebSearchConfig' + search_context_size: + $ref: '#/components/schemas/SearchQualityLevel' + type: enum: - - pdf-text - description: >- - The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to - "cloudflare-ai". - example: cloudflare-ai - PDFParserOptions: + - 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 - properties: - engine: - $ref: '#/components/schemas/PDFParserEngine' - description: Options for PDF parsing. + CodeInterpreterServerTool: + description: Code interpreter tool configuration example: - engine: cloudflare-ai - FileParserPlugin: - type: object + container: auto + type: code_interpreter properties: - id: - type: string - enum: - - file-parser - enabled: - type: boolean - description: Set to false to disable the file-parser plugin for this request. Defaults to true. - pdf: - $ref: '#/components/schemas/PDFParserOptions' + container: + anyOf: + - type: string + - properties: + file_ids: + items: + type: string + type: array + memory_limit: + enum: + - 1g + - 4g + - 16g + - 64g + - null + nullable: true + type: string + type: + enum: + - auto + type: string + required: + - type + type: object + type: + enum: + - code_interpreter + type: string required: - - id - example: - id: file-parser - enabled: true - pdf: - engine: cloudflare-ai - ResponseHealingPlugin: + - type + - container type: object + CodexLocalShellTool: + description: Local shell tool configuration + example: + type: local_shell properties: - id: - type: string + type: enum: - - response-healing - enabled: - type: boolean - description: Set to false to disable the response-healing plugin for this request. Defaults to true. + - local_shell + type: string required: - - id - example: - id: response-healing - enabled: true - ContextCompressionEngine: - type: string - enum: - - middle-out - description: The compression engine to use. Defaults to "middle-out". - example: middle-out - ContextCompressionPlugin: + - type type: object + CompletedEvent: + description: Event emitted when a response has completed successfully + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: + - content: + - annotations: [] + text: Hello! How can I help you? + type: output_text + id: item-1 + role: assistant + status: completed + type: message + parallel_tool_calls: true + status: completed + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 10 + type: response.completed properties: - id: - type: string + response: + $ref: '#/components/schemas/BaseResponsesResult' + sequence_number: + type: integer + type: enum: - - context-compression - enabled: - type: boolean - description: Set to false to disable the context-compression plugin for this request. Defaults to true. - engine: - $ref: '#/components/schemas/ContextCompressionEngine' + - response.completed + type: string required: - - id - example: - id: context-compression - enabled: true - engine: middle-out - DeprecatedRoute: - type: string - nullable: true - enum: - - fallback - - sort - - null - 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"). - example: fallback - x-speakeasy-deprecation-message: Use providers.sort.partition instead. - x-speakeasy-ignore: true - x-fern-ignore: true - TraceConfig: + - type + - response + - sequence_number type: object + CompoundFilter: + description: A compound filter that combines multiple comparison or compound filters + example: + filters: + - key: author + type: eq + value: Alice + type: and properties: - trace_id: - type: string - trace_name: - type: string - span_name: + filters: + items: + additionalProperties: + nullable: true + type: object + type: array + type: + enum: + - and + - or type: string - generation_name: + required: + - type + - filters + type: object + ComputerUseServerTool: + description: Computer use preview tool configuration + example: + display_height: 768 + display_width: 1024 + environment: linux + type: computer_use_preview + properties: + display_height: + type: integer + display_width: + type: integer + environment: + enum: + - windows + - mac + - linux + - ubuntu + - browser type: string - parent_span_id: + type: + enum: + - computer_use_preview type: string - additionalProperties: - nullable: true + required: + - type + - display_height + - display_width + - environment + type: object + ConflictResponse: + description: Conflict - Resource conflict or concurrent modification example: - trace_id: trace-abc123 - trace_name: my-app-trace - 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. - ResponsesRequest: + error: + code: 409 + message: Resource conflict. Please try again later. + properties: + error: + $ref: '#/components/schemas/ConflictResponseErrorData' + user_id: + nullable: true + type: string + required: + - error type: object + ConflictResponseErrorData: + description: Error data for ConflictResponse + example: + code: 409 + message: Resource conflict. Please try again later. properties: - input: - $ref: '#/components/schemas/Inputs' - instructions: + code: + type: integer + message: type: string - nullable: true metadata: - $ref: '#/components/schemas/RequestMetadata' - tools: - type: array - items: - anyOf: - - allOf: - - $ref: '#/components/schemas/FunctionTool' - - type: object - properties: {} - description: Function tool definition - example: - type: function - name: get_weather - description: Get the current weather in a location - parameters: - type: object - properties: - location: - type: string - description: The city and state - unit: - type: string - enum: - - celsius - - fahrenheit - required: - - location - - $ref: '#/components/schemas/Preview_WebSearchServerTool' - - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - - $ref: '#/components/schemas/Legacy_WebSearchServerTool' - - $ref: '#/components/schemas/WebSearchServerTool' - - $ref: '#/components/schemas/FileSearchServerTool' - - $ref: '#/components/schemas/ComputerUseServerTool' - - $ref: '#/components/schemas/CodeInterpreterServerTool' - - $ref: '#/components/schemas/McpServerTool' - - $ref: '#/components/schemas/ImageGenerationServerTool' - - $ref: '#/components/schemas/CodexLocalShellTool' - - $ref: '#/components/schemas/ShellServerTool' - - $ref: '#/components/schemas/ApplyPatchServerTool' - - $ref: '#/components/schemas/CustomTool' - - $ref: '#/components/schemas/DatetimeServerTool' - - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' - tool_choice: - $ref: '#/components/schemas/OpenAIResponsesToolChoice' - parallel_tool_calls: - type: boolean + additionalProperties: + nullable: true nullable: true - model: + type: object + required: + - code + - message + type: object + ContentPartAddedEvent: + allOf: + - $ref: '#/components/schemas/BaseContentPartAddedEvent' + - properties: + part: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/ReasoningTextContent' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' + type: object + description: Event emitted when a new content part is added to an output item + example: + content_index: 0 + item_id: item-1 + output_index: 0 + part: + annotations: [] + text: '' + type: output_text + sequence_number: 3 + type: response.content_part.added + ContentPartDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseContentPartDoneEvent' + - properties: + part: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/ReasoningTextContent' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' + type: object + description: Event emitted when a content part is complete + example: + content_index: 0 + item_id: item-1 + output_index: 0 + part: + annotations: [] + text: Hello! How can I help you? + type: output_text + sequence_number: 7 + type: response.content_part.done + ContentPartImage: + example: + image_url: + url: https://example.com/image.png + type: image_url + properties: + image_url: + properties: + url: + type: string + required: + - url + type: object + type: + enum: + - image_url type: string - models: - type: array - items: - type: string - text: - $ref: '#/components/schemas/TextExtendedConfig' - reasoning: - $ref: '#/components/schemas/ReasoningConfig' - max_output_tokens: - type: integer - temperature: - type: number - format: double - top_p: - type: number - format: double - top_logprobs: - type: integer - max_tool_calls: - type: integer - presence_penalty: - type: number - format: double - frequency_penalty: - type: number - format: double - top_k: + required: + - type + - image_url + type: object + ContextCompressionEngine: + description: The compression engine to use. Defaults to "middle-out". + enum: + - middle-out + example: middle-out + type: string + ContextCompressionPlugin: + example: + enabled: true + engine: middle-out + id: context-compression + properties: + enabled: + description: Set to false to disable the context-compression plugin for this request. Defaults to true. + type: boolean + engine: + $ref: '#/components/schemas/ContextCompressionEngine' + id: + enum: + - context-compression + type: string + required: + - id + type: object + CreatedEvent: + description: Event emitted when a response is created + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: in_progress + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 0 + type: response.created + properties: + response: + $ref: '#/components/schemas/BaseResponsesResult' + sequence_number: type: integer - image_config: - type: object - additionalProperties: - anyOf: - - type: string - - type: number - format: double - description: >- - Provider-specific image configuration options. Keys and values vary by model/provider. See - https://openrouter.ai/docs/features/multimodal/image-generation for more details. + type: + enum: + - response.created + type: string + required: + - type + - response + - sequence_number + type: object + CreateGuardrailRequest: + example: + allowed_models: null + allowed_providers: + - openai + - anthropic + - deepseek + description: A guardrail for limiting API usage + enforce_zdr: false + ignored_providers: null + limit_usd: 50 + name: My New Guardrail + reset_interval: monthly + properties: + allowed_models: + description: Array of model identifiers (slug or canonical_slug accepted) example: - aspect_ratio: '16:9' - modalities: - type: array + - openai/gpt-5.2 + - anthropic/claude-4.5-opus-20251124 + - deepseek/deepseek-r1-0528:free items: - $ref: '#/components/schemas/OutputModalityEnum' - description: Output modalities for the response. Supported values are "text" and "image". - example: - - text - - image - prompt_cache_key: - type: string - nullable: true - previous_response_id: - type: string + type: string + minItems: 1 nullable: true - prompt: - $ref: '#/components/schemas/StoredPromptTemplate' - include: type: array - nullable: true + allowed_providers: + description: List of allowed provider IDs + example: + - openai + - anthropic + - deepseek items: - $ref: '#/components/schemas/ResponseIncludesEnum' - background: - type: boolean + type: string + minItems: 1 nullable: true - safety_identifier: - type: string + type: array + description: + description: Description of the guardrail + example: A guardrail for limiting API usage + maxLength: 1000 nullable: true - store: - type: boolean - const: false - default: false - service_tier: type: string + enforce_zdr: + description: Whether to enforce zero data retention + example: false nullable: true - enum: - - auto - - default - - flex - - priority - - scale - - null - default: auto - truncation: - $ref: '#/components/schemas/OpenAIResponsesTruncation' - stream: type: boolean - default: false - provider: - $ref: '#/components/schemas/ProviderPreferences' - plugins: - type: array + ignored_providers: + description: List of provider IDs to exclude from routing + example: + - azure items: - oneOf: - - $ref: '#/components/schemas/AutoRouterPlugin' - - $ref: '#/components/schemas/ModerationPlugin' - - $ref: '#/components/schemas/WebSearchPlugin' - - $ref: '#/components/schemas/FileParserPlugin' - - $ref: '#/components/schemas/ResponseHealingPlugin' - - $ref: '#/components/schemas/ContextCompressionPlugin' - discriminator: - propertyName: id - mapping: - auto-router: '#/components/schemas/AutoRouterPlugin' - moderation: '#/components/schemas/ModerationPlugin' - web: '#/components/schemas/WebSearchPlugin' - file-parser: '#/components/schemas/FileParserPlugin' - response-healing: '#/components/schemas/ResponseHealingPlugin' - context-compression: '#/components/schemas/ContextCompressionPlugin' - description: Plugins you want to enable for this request, including their settings. - route: - $ref: '#/components/schemas/DeprecatedRoute' - user: - type: string - maxLength: 256 - 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. - session_id: + type: string + minItems: 1 + nullable: true + type: array + limit_usd: + description: Spending limit in USD + example: 50 + format: double + type: number + name: + description: Name for the new guardrail + example: My New Guardrail + maxLength: 200 + minLength: 1 type: string - maxLength: 256 - description: >- - A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for - observability. If provided in both the request body and the x-session-id header, the body value takes - precedence. Maximum of 256 characters. - trace: - $ref: '#/components/schemas/TraceConfig' - description: Request schema for Responses endpoint - example: - model: anthropic/claude-4.5-sonnet-20250929 - input: - - type: message - content: Hello, how are you? - role: user - temperature: 0.7 - top_p: 0.9 - tools: - - type: function - name: get_current_weather - description: Get the current weather in a given location - parameters: - type: object - properties: - location: - type: string - AnthropicContainer: + reset_interval: + $ref: '#/components/schemas/GuardrailInterval' + required: + - name type: object - nullable: true + CreateGuardrailResponse: + example: + data: + allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: A guardrail for limiting API usage + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 50 + name: My New Guardrail + reset_interval: monthly + updated_at: null properties: - id: - type: string - expires_at: - type: string + data: + allOf: + - $ref: '#/components/schemas/Guardrail' + - description: The created guardrail required: - - id - - expires_at - example: - id: ctr_01abc - expires_at: '2026-04-08T00:00:00Z' - AnthropicCitationCharLocation: + - data type: object + CustomTool: + description: Custom tool configuration + example: + name: my_tool + type: custom properties: - type: - type: string - enum: - - char_location - cited_text: - type: string - document_index: - type: integer - document_title: + description: type: string - nullable: true - start_char_index: - type: integer - end_char_index: - type: integer - file_id: + format: + anyOf: + - properties: + type: + enum: + - text + type: string + required: + - type + type: object + - properties: + definition: + type: string + syntax: + enum: + - lark + - regex + type: string + type: + enum: + - grammar + type: string + required: + - type + - definition + - syntax + type: object + name: type: string - nullable: true - required: - - type - - cited_text - - document_index - - document_title - - start_char_index - - end_char_index - - file_id - example: - type: char_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_char_index: 0 - end_char_index: 18 - file_id: null - AnthropicCitationPageLocation: - type: object - properties: type: - type: string enum: - - page_location - cited_text: - type: string - document_index: - type: integer - document_title: - type: string - nullable: true - start_page_number: - type: integer - end_page_number: - type: integer - file_id: + - custom type: string - nullable: true required: - type - - cited_text - - document_index - - document_title - - start_page_number - - end_page_number - - file_id - example: - type: page_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_page_number: 1 - end_page_number: 2 - file_id: null - AnthropicCitationContentBlockLocation: + - name type: object + DatetimeServerTool: + description: 'OpenRouter built-in server tool: returns the current date and time' + example: + parameters: + timezone: America/New_York + type: openrouter:datetime properties: + parameters: + properties: + timezone: + description: IANA timezone name (e.g. "America/New_York"). Defaults to UTC. + example: America/New_York + type: string + type: object type: - type: string enum: - - content_block_location - cited_text: - type: string - document_index: - type: integer - document_title: - type: string - nullable: true - start_block_index: - type: integer - end_block_index: - type: integer - file_id: + - openrouter:datetime type: string - nullable: true required: - type - - cited_text - - document_index - - document_title - - start_block_index - - end_block_index - - file_id - example: - type: content_block_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_block_index: 0 - end_block_index: 1 - file_id: null - AnthropicCitationWebSearchResultLocation: type: object + DefaultParameters: + additionalProperties: false + description: Default parameters for this model + example: + frequency_penalty: 0 + presence_penalty: 0 + repetition_penalty: 1 + temperature: 0.7 + top_k: 0 + top_p: 0.9 + nullable: true properties: - type: - type: string - enum: - - web_search_result_location - cited_text: - type: string - encrypted_index: - type: string - title: - type: string + frequency_penalty: + format: double + type: number + presence_penalty: + format: double + type: number + repetition_penalty: + format: double + type: number + temperature: + format: double + type: number + top_k: + minimum: 0 nullable: true - url: - type: string - required: - - type - - cited_text - - encrypted_index - - title - - url - example: - type: web_search_result_location - cited_text: Example cited text - encrypted_index: enc_idx_0 - title: Example Page - url: https://example.com - AnthropicCitationSearchResultLocation: + type: integer + top_p: + format: double + type: number type: object + DeleteGuardrailResponse: + example: + deleted: true properties: - type: - type: string - enum: - - search_result_location - cited_text: - type: string - search_result_index: - type: integer - source: - type: string - title: - type: string - nullable: true - start_block_index: - type: integer - end_block_index: - type: integer + deleted: + const: true + description: Confirmation that the guardrail was deleted + example: true + type: boolean required: - - type - - cited_text - - search_result_index - - source - - title - - start_block_index - - end_block_index - example: - type: search_result_location - cited_text: Example cited text - search_result_index: 0 - source: example_source - title: Example Result - start_block_index: 0 - end_block_index: 1 - AnthropicTextCitation: - oneOf: - - $ref: '#/components/schemas/AnthropicCitationCharLocation' - - $ref: '#/components/schemas/AnthropicCitationPageLocation' - - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation' - - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' - discriminator: - propertyName: type - mapping: - char_location: '#/components/schemas/AnthropicCitationCharLocation' - page_location: '#/components/schemas/AnthropicCitationPageLocation' - content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' - web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' - example: - type: char_location - cited_text: Example text - document_index: 0 - document_title: null - start_char_index: 0 - end_char_index: 10 - file_id: null - AnthropicTextBlock: + - deleted type: object + DeprecatedRoute: + deprecated: true + description: >- + **DEPRECATED** Use providers.sort.partition instead. Backwards-compatible alias for providers.sort.partition. + Accepts legacy values: "fallback" (maps to "model"), "sort" (maps to "none"). + enum: + - fallback + - sort + - null + example: fallback + nullable: true + type: string + x-fern-ignore: true + x-speakeasy-deprecation-message: Use providers.sort.partition instead. + x-speakeasy-ignore: true + EasyInputMessage: + example: + content: What is the weather today? + role: user properties: + content: + anyOf: + - items: + oneOf: + - $ref: '#/components/schemas/InputText' + - allOf: + - $ref: '#/components/schemas/InputImage' + - properties: {} + type: object + description: Image input content item + example: + detail: auto + image_url: https://example.com/image.jpg + type: input_image + - $ref: '#/components/schemas/InputFile' + - $ref: '#/components/schemas/InputAudio' + - $ref: '#/components/schemas/InputVideo' + type: array + - type: string + - nullable: true + phase: + anyOf: + - enum: + - commentary + type: string + - enum: + - final_answer + type: string + - nullable: true + description: >- + The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` + for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve + and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + example: final_answer + role: + anyOf: + - enum: + - user + type: string + - enum: + - system + type: string + - enum: + - assistant + type: string + - enum: + - developer + type: string type: - type: string enum: - - text - text: + - message type: string - citations: - type: array - nullable: true - items: - $ref: '#/components/schemas/AnthropicTextCitation' required: - - type - - text - - citations - example: - type: text - text: Hello, world! - citations: null - AnthropicDirectCaller: + - role type: object - properties: - type: - type: string - enum: - - direct - required: - - type + EdgeNetworkTimeoutResponse: + description: Infrastructure Timeout - Provider request timed out at edge network example: - type: direct - AnthropicCodeExecution20250825Caller: - type: object + error: + code: 524 + message: Request timed out. Please try again later. properties: - type: - type: string - enum: - - code_execution_20250825 - tool_id: + error: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData' + user_id: + nullable: true type: string required: - - type - - tool_id - example: - type: code_execution_20250825 - tool_id: toolu_01abc - AnthropicCodeExecution20260120Caller: + - error type: object + EdgeNetworkTimeoutResponseErrorData: + description: Error data for EdgeNetworkTimeoutResponse + example: + code: 524 + message: Request timed out. Please try again later. properties: - type: - type: string - enum: - - code_execution_20260120 - tool_id: + code: + type: integer + message: type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object required: - - type - - tool_id - example: - type: code_execution_20260120 - tool_id: toolu_01abc - AnthropicCaller: - oneOf: - - $ref: '#/components/schemas/AnthropicDirectCaller' - - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' - - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' - discriminator: - propertyName: type - mapping: - direct: '#/components/schemas/AnthropicDirectCaller' - code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' - code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' - example: - type: direct - AnthropicToolUseBlock: + - code + - message type: object - properties: - type: - type: string - enum: - - tool_use - id: - type: string - caller: - $ref: '#/components/schemas/AnthropicCaller' - name: - type: string - input: - nullable: true - required: - - type - - id - - caller - - name + EndpointStatus: + enum: + - 0 + - -1 + - -2 + - -3 + - -5 + - -10 + example: 0 + type: integer + ErrorEvent: + allOf: + - $ref: '#/components/schemas/BaseErrorEvent' + - properties: {} + type: object + description: Event emitted when an error occurs during streaming example: - type: tool_use - id: toolu_01abc - caller: - type: direct - name: get_weather - input: - location: San Francisco - AnthropicThinkingBlock: - type: object + code: rate_limit_exceeded + message: Rate limit exceeded. Please try again later. + param: null + sequence_number: 2 + type: error + FailedEvent: + description: Event emitted when a response has failed + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: failed + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 3 + type: response.failed properties: + response: + $ref: '#/components/schemas/BaseResponsesResult' + sequence_number: + type: integer type: - type: string enum: - - thinking - thinking: - type: string - signature: + - response.failed type: string required: - type - - thinking - - signature - example: - type: thinking - thinking: Let me think about this... - signature: sig_abc123 - AnthropicRedactedThinkingBlock: + - response + - sequence_number type: object + FileCitation: + example: + file_id: file-abc123 + filename: research_paper.pdf + index: 0 + type: file_citation properties: - type: + file_id: + type: string + filename: type: string + index: + type: integer + type: enum: - - redacted_thinking - data: + - file_citation type: string required: - type - - data - example: - type: redacted_thinking - data: cmVkYWN0ZWQ= - AnthropicServerToolName: - type: string - enum: - - web_search - - web_fetch - - code_execution - - bash_code_execution - - text_editor_code_execution - - tool_search_tool_regex - - tool_search_tool_bm25 - example: web_search - AnthropicServerToolUseBlock: + - file_id + - filename + - index type: object + FileParserPlugin: + example: + enabled: true + id: file-parser + pdf: + engine: cloudflare-ai properties: - type: - type: string - enum: - - server_tool_use + enabled: + description: Set to false to disable the file-parser plugin for this request. Defaults to true. + type: boolean id: + enum: + - file-parser type: string - caller: - $ref: '#/components/schemas/AnthropicCaller' - name: - $ref: '#/components/schemas/AnthropicServerToolName' - input: - nullable: true + pdf: + $ref: '#/components/schemas/PDFParserOptions' required: - - type - id - - caller - - name - example: - type: server_tool_use - id: srvtoolu_01abc - caller: - type: direct - name: web_search - input: - query: latest news - AnthropicWebSearchResult: type: object + FilePath: + example: + file_id: file-xyz789 + index: 0 + type: file_path properties: - type: + file_id: type: string + index: + type: integer + type: enum: - - web_search_result - encrypted_content: - type: string - page_age: - type: string - nullable: true - title: - type: string - url: + - file_path type: string required: - type - - encrypted_content - - page_age - - title - - url - example: - type: web_search_result - encrypted_content: enc_content_0 - page_age: null - title: Example Page - url: https://example.com - AnthropicWebSearchToolResultError: + - file_id + - index type: object + FileSearchServerTool: + description: File search tool configuration + example: + type: file_search + vector_store_ids: + - vs_abc123 properties: + filters: + anyOf: + - properties: + key: + type: string + type: + enum: + - eq + - ne + - gt + - gte + - lt + - lte + type: string + value: + anyOf: + - type: string + - format: double + type: number + - type: boolean + - items: + anyOf: + - type: string + - format: double + type: number + type: array + required: + - key + - type + - value + type: object + - $ref: '#/components/schemas/CompoundFilter' + - nullable: true + max_num_results: + type: integer + ranking_options: + properties: + ranker: + enum: + - auto + - default-2024-11-15 + type: string + score_threshold: + format: double + type: number + type: object type: - type: string enum: - - web_search_tool_result_error - error_code: + - file_search type: string - enum: - - invalid_tool_input - - unavailable - - max_uses_exceeded - - too_many_requests - - query_too_long - - request_too_large + vector_store_ids: + items: + type: string + type: array required: - type - - error_code - example: - type: web_search_tool_result_error - error_code: unavailable - AnthropicWebSearchToolResult: + - vector_store_ids type: object + ForbiddenResponse: + description: Forbidden - Authentication successful but insufficient permissions + example: + error: + code: 403 + message: Only management keys can perform this operation properties: - type: - type: string - enum: - - web_search_tool_result - caller: - $ref: '#/components/schemas/AnthropicCaller' - tool_use_id: + error: + $ref: '#/components/schemas/ForbiddenResponseErrorData' + user_id: + nullable: true type: string - content: - anyOf: - - type: array - items: - $ref: '#/components/schemas/AnthropicWebSearchResult' - - $ref: '#/components/schemas/AnthropicWebSearchToolResultError' required: - - type - - caller - - tool_use_id - - content + - error + type: object + ForbiddenResponseErrorData: + description: Error data for ForbiddenResponse example: - type: web_search_tool_result - caller: - type: direct - tool_use_id: srvtoolu_01abc - content: [] - AnthropicWebFetchToolResultError: + code: 403 + message: Only management keys can perform this operation + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message type: object + FormatJsonObjectConfig: + description: JSON object response format + example: + type: json_object properties: type: - type: string enum: - - web_fetch_tool_result_error - error_code: + - json_object type: string - enum: - - invalid_tool_input - - url_too_long - - url_not_allowed - - url_not_accessible - - unsupported_content_type - - too_many_requests - - max_uses_exceeded - - unavailable required: - type - - error_code - example: - type: web_fetch_tool_result_error - error_code: unavailable - AnthropicCitationsConfig: type: object - nullable: true - properties: - enabled: - type: boolean - required: - - enabled + FormatJsonSchemaConfig: + description: JSON schema constrained response format example: - enabled: true - AnthropicBase64PdfSource: - type: object + description: User information schema + name: user_info + schema: + properties: + age: + type: number + name: + type: string + required: + - name + type: object + type: json_schema properties: - type: + description: type: string - enum: - - base64 - media_type: + name: type: string + schema: + additionalProperties: + nullable: true + type: object + strict: + nullable: true + type: boolean + type: enum: - - application/pdf - data: + - json_schema type: string required: - type - - media_type - - data - example: - type: base64 - media_type: application/pdf - data: JVBERi0x... - AnthropicPlainTextSource: + - name + - schema type: object + Formats: + anyOf: + - $ref: '#/components/schemas/FormatTextConfig' + - $ref: '#/components/schemas/FormatJsonObjectConfig' + - $ref: '#/components/schemas/FormatJsonSchemaConfig' + description: Text response format configuration + example: + type: text + FormatTextConfig: + description: Plain text response format + example: + type: text properties: type: - type: string enum: - text - media_type: - type: string - enum: - - text/plain - data: type: string required: - type - - media_type - - data - example: - type: text - media_type: text/plain - data: Hello, world! - AnthropicDocumentBlock: type: object + FunctionCallArgsDeltaEvent: + allOf: + - $ref: '#/components/schemas/BaseFunctionCallArgsDeltaEvent' + - properties: {} + type: object + description: Event emitted when function call arguments are being streamed + example: + delta: '{"city": "..."}' + item_id: item-1 + output_index: 0 + sequence_number: 4 + type: response.function_call_arguments.delta + FunctionCallArgsDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseFunctionCallArgsDoneEvent' + - properties: {} + type: object + description: Event emitted when function call arguments streaming is complete + example: + arguments: '{"city": "San Francisco", "units": "celsius"}' + item_id: item-1 + name: get_weather + output_index: 0 + sequence_number: 6 + type: response.function_call_arguments.done + FunctionCallItem: + allOf: + - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' + - properties: {} + required: + - id + type: object + description: A function call initiated by the model + example: + arguments: '{"location":"San Francisco"}' + call_id: call-abc123 + id: call-abc123 + name: get_weather + status: completed + type: function_call + FunctionCallOutputItem: + allOf: + - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' + - properties: + output: + anyOf: + - type: string + - items: + oneOf: + - $ref: '#/components/schemas/InputText' + - allOf: + - $ref: '#/components/schemas/InputImage' + - properties: {} + type: object + description: Image input content item + example: + detail: auto + image_url: https://example.com/image.jpg + type: input_image + - $ref: '#/components/schemas/InputFile' + type: array + type: object + description: The output from a function call execution + example: + call_id: call-abc123 + id: output-abc123 + output: '{"temperature":72,"conditions":"sunny"}' + status: completed + type: function_call_output + FunctionTool: + description: Function tool definition + example: + description: Get the current weather in a location + name: get_weather + parameters: + properties: + location: + description: The city and state + type: string + unit: + enum: + - celsius + - fahrenheit + type: string + required: + - location + type: object + type: function properties: - citations: - $ref: '#/components/schemas/AnthropicCitationsConfig' - source: - anyOf: - - $ref: '#/components/schemas/AnthropicBase64PdfSource' - - $ref: '#/components/schemas/AnthropicPlainTextSource' - title: + description: + nullable: true + type: string + name: type: string + parameters: + additionalProperties: + nullable: true nullable: true + type: object + strict: + nullable: true + type: boolean type: - type: string enum: - - document + - function + type: string required: - - citations - - source - - title - type - example: - citations: null - source: - data: Hello, world! - media_type: text/plain - type: text - title: null - type: document - AnthropicWebFetchBlock: + - name + - parameters type: object - properties: - content: - $ref: '#/components/schemas/AnthropicDocumentBlock' - retrieved_at: - type: string - nullable: true - type: - type: string - enum: - - web_fetch_result - url: - type: string - required: - - content - - retrieved_at - - type - - url - example: - content: - type: document - citations: null - source: - data: '' - media_type: text/plain - type: text - title: null - retrieved_at: null - type: web_fetch_result - url: https://example.com - AnthropicWebFetchContent: - oneOf: - - $ref: '#/components/schemas/AnthropicWebFetchToolResultError' - - $ref: '#/components/schemas/AnthropicWebFetchBlock' - discriminator: - propertyName: type - mapping: - web_fetch_tool_result_error: '#/components/schemas/AnthropicWebFetchToolResultError' - web_fetch_result: '#/components/schemas/AnthropicWebFetchBlock' + GetGuardrailResponse: example: - type: web_fetch_result - content: - type: document - citations: null - source: - data: '' - media_type: text/plain - type: text - title: null - retrieved_at: null - url: https://example.com - AnthropicWebFetchToolResult: - type: object + data: + allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: Guardrail for production environment + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 100 + name: Production Guardrail + reset_interval: monthly + updated_at: '2025-08-24T15:45:00Z' properties: - type: - type: string - enum: - - web_fetch_tool_result - caller: - $ref: '#/components/schemas/AnthropicCaller' - content: - $ref: '#/components/schemas/AnthropicWebFetchContent' - tool_use_id: - type: string + data: + allOf: + - $ref: '#/components/schemas/Guardrail' + - description: The guardrail required: - - type - - caller - - content - - tool_use_id - example: - type: web_fetch_tool_result - caller: - type: direct - content: - type: web_fetch_result - content: - type: document - citations: null - source: - data: '' - media_type: text/plain - type: text - title: null - retrieved_at: null - url: https://example.com - tool_use_id: srvtoolu_01abc - AnthropicServerToolErrorCode: - type: string - enum: - - invalid_tool_input - - unavailable - - too_many_requests - - execution_time_exceeded - example: unavailable - AnthropicCodeExecutionToolResultError: + - data type: object - properties: - error_code: - $ref: '#/components/schemas/AnthropicServerToolErrorCode' - type: - type: string - enum: - - code_execution_tool_result_error - required: - - error_code - - type + GoneResponse: + description: Gone - Endpoint has been permanently removed or deprecated example: - error_code: unavailable - type: code_execution_tool_result_error - AnthropicCodeExecutionOutput: - type: object + error: + code: 410 + message: >- + The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been + removed. Use the web credits purchase flow instead. properties: - file_id: - type: string - type: + error: + $ref: '#/components/schemas/GoneResponseErrorData' + user_id: + nullable: true type: string - enum: - - code_execution_output required: - - file_id - - type - example: - file_id: file_01abc - type: code_execution_output - AnthropicCodeExecutionResult: + - error type: object + GoneResponseErrorData: + description: Error data for GoneResponse + example: + code: 410 + message: >- + The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been + removed. Use the web credits purchase flow instead. properties: - content: - type: array - items: - $ref: '#/components/schemas/AnthropicCodeExecutionOutput' - return_code: + code: type: integer - stderr: - type: string - stdout: - type: string - type: + message: type: string - enum: - - code_execution_result + metadata: + additionalProperties: + nullable: true + nullable: true + type: object required: - - content - - return_code - - stderr - - stdout - - type - example: - content: [] - return_code: 0 - stderr: '' - stdout: Hello - type: code_execution_result - AnthropicEncryptedCodeExecutionResult: + - code + - message type: object + Guardrail: + example: + allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: Guardrail for production environment + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 100 + name: Production Guardrail + reset_interval: monthly + updated_at: '2025-08-24T15:45:00Z' properties: - content: + allowed_models: + description: Array of model canonical_slugs (immutable identifiers) + example: + - openai/gpt-5.2-20251211 + - anthropic/claude-4.5-opus-20251124 + - deepseek/deepseek-r1-0528:free + items: + type: string + nullable: true type: array + allowed_providers: + description: List of allowed provider IDs + example: + - openai + - anthropic + - google items: - $ref: '#/components/schemas/AnthropicCodeExecutionOutput' - encrypted_stdout: + type: string + nullable: true + type: array + created_at: + description: ISO 8601 timestamp of when the guardrail was created + example: '2025-08-24T10:30:00Z' type: string - return_code: - type: integer - stderr: + description: + description: Description of the guardrail + example: Guardrail for production environment + nullable: true type: string - type: + enforce_zdr: + description: Whether to enforce zero data retention + example: false + nullable: true + type: boolean + id: + description: Unique identifier for the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + ignored_providers: + description: List of provider IDs to exclude from routing + example: + - azure + items: + type: string + nullable: true + type: array + limit_usd: + description: Spending limit in USD + example: 100 + format: double + type: number + name: + description: Name of the guardrail + example: Production Guardrail + type: string + reset_interval: + $ref: '#/components/schemas/GuardrailInterval' + updated_at: + description: ISO 8601 timestamp of when the guardrail was last updated + example: '2025-08-24T15:45:00Z' + nullable: true type: string - enum: - - encrypted_code_execution_result required: - - content - - encrypted_stdout - - return_code - - stderr - - type + - id + - name + - created_at + type: object + GuardrailInterval: + description: Interval at which the limit resets (daily, weekly, monthly) + enum: + - daily + - weekly + - monthly + - null + example: monthly + nullable: true + type: string + ImageGenCallCompletedEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted' + - properties: {} + type: object + description: Image generation call completed example: - content: [] - encrypted_stdout: enc_stdout - return_code: 0 - stderr: '' - type: encrypted_code_execution_result - AnthropicCodeExecutionContent: - oneOf: - - $ref: '#/components/schemas/AnthropicCodeExecutionToolResultError' - - $ref: '#/components/schemas/AnthropicCodeExecutionResult' - - $ref: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' - discriminator: - propertyName: type - mapping: - code_execution_tool_result_error: '#/components/schemas/AnthropicCodeExecutionToolResultError' - code_execution_result: '#/components/schemas/AnthropicCodeExecutionResult' - encrypted_code_execution_result: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' + item_id: call-123 + output_index: 0 + sequence_number: 4 + type: response.image_generation_call.completed + ImageGenCallGeneratingEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating' + - properties: {} + type: object + description: Image generation call is generating example: - type: code_execution_result - content: [] - return_code: 0 - stderr: '' - stdout: Hello - AnthropicCodeExecutionToolResult: - type: object + item_id: call-123 + output_index: 0 + sequence_number: 2 + type: response.image_generation_call.generating + ImageGenCallInProgressEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress' + - properties: {} + type: object + description: Image generation call in progress + example: + item_id: call-123 + output_index: 0 + sequence_number: 1 + type: response.image_generation_call.in_progress + ImageGenCallPartialImageEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage' + - properties: {} + type: object + description: Image generation call with partial image + example: + item_id: call-123 + output_index: 0 + partial_image_b64: base64encodedimage... + partial_image_index: 0 + sequence_number: 3 + type: response.image_generation_call.partial_image + ImageGenerationServerTool: + description: Image generation tool configuration + example: + quality: high + type: image_generation properties: - type: + background: + enum: + - transparent + - opaque + - auto type: string + input_fidelity: enum: - - code_execution_tool_result - content: - $ref: '#/components/schemas/AnthropicCodeExecutionContent' - tool_use_id: + - high + - low + - null + nullable: true type: string - required: - - type - - content - - tool_use_id - example: - type: code_execution_tool_result - content: - type: code_execution_result - content: [] - return_code: 0 - stderr: '' - stdout: Hello - tool_use_id: srvtoolu_01abc - AnthropicBashCodeExecutionToolResultError: - type: object - properties: - error_code: + input_image_mask: + properties: + file_id: + type: string + image_url: + type: string + type: object + model: + enum: + - gpt-image-1 + - gpt-image-1-mini type: string + moderation: enum: - - invalid_tool_input - - unavailable - - too_many_requests - - execution_time_exceeded - - output_file_too_large - type: + - auto + - low type: string + output_compression: + type: integer + output_format: enum: - - bash_code_execution_tool_result_error + - png + - webp + - jpeg + type: string + partial_images: + type: integer + quality: + enum: + - low + - medium + - high + - auto + type: string + size: + enum: + - 1024x1024 + - 1024x1536 + - 1536x1024 + - auto + type: string + type: + enum: + - image_generation + type: string required: - - error_code - type - example: - error_code: unavailable - type: bash_code_execution_tool_result_error - AnthropicBashCodeExecutionOutput: type: object + ImageGenerationStatus: + enum: + - in_progress + - completed + - generating + - failed + example: completed + type: string + IncompleteDetails: + example: + reason: max_output_tokens + nullable: true properties: - file_id: + reason: + enum: + - max_output_tokens + - content_filter type: string + type: object + IncompleteEvent: + description: Event emitted when a response is incomplete + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: incomplete + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 5 + type: response.incomplete + properties: + response: + $ref: '#/components/schemas/BaseResponsesResult' + sequence_number: + type: integer type: - type: string enum: - - bash_code_execution_output + - response.incomplete + type: string required: - - file_id - type - example: - file_id: file_01abc - type: bash_code_execution_output - AnthropicBashCodeExecutionResult: + - response + - sequence_number type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/AnthropicBashCodeExecutionOutput' - return_code: + InProgressEvent: + description: Event emitted when a response is in progress + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: in_progress + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 1 + type: response.in_progress + properties: + response: + $ref: '#/components/schemas/BaseResponsesResult' + sequence_number: type: integer - stderr: - type: string - stdout: - type: string type: - type: string enum: - - bash_code_execution_result + - response.in_progress + type: string required: - - content - - return_code - - stderr - - stdout - type - example: - content: [] - return_code: 0 - stderr: '' - stdout: Hello - type: bash_code_execution_result - AnthropicBashCodeExecutionContent: - oneOf: - - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' - - $ref: '#/components/schemas/AnthropicBashCodeExecutionResult' - discriminator: - propertyName: type - mapping: - bash_code_execution_tool_result_error: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' - bash_code_execution_result: '#/components/schemas/AnthropicBashCodeExecutionResult' - example: - type: bash_code_execution_result - content: [] - return_code: 0 - stderr: '' - stdout: Hello - AnthropicBashCodeExecutionToolResult: + - response + - sequence_number type: object + InputAudio: + description: Audio input content item + example: + input_audio: + data: SGVsbG8gV29ybGQ= + format: mp3 + type: input_audio properties: + input_audio: + properties: + data: + type: string + format: + enum: + - mp3 + - wav + type: string + required: + - data + - format + type: object type: - type: string enum: - - bash_code_execution_tool_result - content: - $ref: '#/components/schemas/AnthropicBashCodeExecutionContent' - tool_use_id: + - input_audio type: string required: - type - - content - - tool_use_id - example: - type: bash_code_execution_tool_result - content: - type: bash_code_execution_result - content: [] - return_code: 0 - stderr: '' - stdout: Hello - tool_use_id: srvtoolu_01abc - AnthropicTextEditorCodeExecutionToolResultError: + - input_audio type: object + InputFile: + description: File input content item + example: + file_id: file-abc123 + filename: document.pdf + type: input_file properties: - error_code: - type: string - enum: - - invalid_tool_input - - unavailable - - too_many_requests - - execution_time_exceeded - - file_not_found - error_message: + file_data: type: string + file_id: nullable: true - type: type: string - enum: - - text_editor_code_execution_tool_result_error - required: - - error_code - - error_message - - type - example: - error_code: unavailable - error_message: null - type: text_editor_code_execution_tool_result_error - AnthropicTextEditorCodeExecutionViewResult: - type: object - properties: - content: + file_url: type: string - file_type: + filename: type: string - enum: - - text - - image - - pdf - num_lines: - type: integer - start_line: - type: integer - total_lines: - type: integer type: - type: string enum: - - text_editor_code_execution_view_result + - input_file + type: string required: - - content - - file_type - - num_lines - - start_line - - total_lines - type - example: - content: file content - file_type: text - num_lines: 10 - start_line: 1 - total_lines: 10 - type: text_editor_code_execution_view_result - AnthropicTextEditorCodeExecutionCreateResult: type: object + InputImage: + description: Image input content item + example: + detail: auto + image_url: https://example.com/image.jpg + type: input_image properties: - is_file_update: - type: boolean - type: + detail: + enum: + - auto + - high + - low + type: string + image_url: + nullable: true type: string + type: enum: - - text_editor_code_execution_create_result + - input_image + type: string required: - - is_file_update - type - example: - is_file_update: false - type: text_editor_code_execution_create_result - AnthropicTextEditorCodeExecutionStrReplaceResult: + - detail type: object + InputMessageItem: + example: + content: + - text: Hello, how are you? + type: input_text + id: msg-abc123 + role: user + type: message properties: - lines: - type: array - nullable: true + content: items: - type: string - new_lines: - type: integer - new_start: - type: integer - old_lines: - type: integer - old_start: - type: integer - type: + oneOf: + - $ref: '#/components/schemas/InputText' + - allOf: + - $ref: '#/components/schemas/InputImage' + - properties: {} + type: object + description: Image input content item + example: + detail: auto + image_url: https://example.com/image.jpg + type: input_image + - $ref: '#/components/schemas/InputFile' + - $ref: '#/components/schemas/InputAudio' + - $ref: '#/components/schemas/InputVideo' + nullable: true + type: array + id: type: string + role: + anyOf: + - enum: + - user + type: string + - enum: + - system + type: string + - enum: + - developer + type: string + type: enum: - - text_editor_code_execution_str_replace_result + - message + type: string required: - - lines - - new_lines - - new_start - - old_lines - - old_start - - type - example: - lines: null - new_lines: null - new_start: null - old_lines: null - old_start: null - type: text_editor_code_execution_str_replace_result - AnthropicTextEditorCodeExecutionContent: - oneOf: - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' - discriminator: - propertyName: type - mapping: - text_editor_code_execution_tool_result_error: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' - text_editor_code_execution_view_result: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' - text_editor_code_execution_create_result: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' - text_editor_code_execution_str_replace_result: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' - example: - type: text_editor_code_execution_view_result - content: file content - file_type: text - num_lines: 10 - start_line: 1 - total_lines: 10 - AnthropicTextEditorCodeExecutionToolResult: + - role type: object + InputModality: + enum: + - text + - image + - file + - audio + - video + example: text + type: string + Inputs: + anyOf: + - type: string + - items: + anyOf: + - $ref: '#/components/schemas/ReasoningItem' + - $ref: '#/components/schemas/EasyInputMessage' + - $ref: '#/components/schemas/InputMessageItem' + - $ref: '#/components/schemas/FunctionCallItem' + - $ref: '#/components/schemas/FunctionCallOutputItem' + - allOf: + - $ref: '#/components/schemas/OutputMessageItem' + - properties: + content: + anyOf: + - items: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' + type: array + - type: string + - nullable: true + type: object + description: An output message item + example: + content: + - annotations: [] + text: Hello! How can I help you? + type: output_text + id: msg-123 + role: assistant + status: completed + type: message + - allOf: + - $ref: '#/components/schemas/OutputReasoningItem' + - properties: + summary: + items: + $ref: '#/components/schemas/ReasoningSummaryText' + nullable: true + type: array + type: object + description: An output item containing reasoning + example: + content: + - text: First, we analyze the problem... + type: reasoning_text + format: anthropic-claude-v1 + id: reasoning-123 + signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... + status: completed + summary: + - text: Analyzed the problem and found the optimal solution. + type: summary_text + type: reasoning + - $ref: '#/components/schemas/OutputFunctionCallItem' + - $ref: '#/components/schemas/OutputWebSearchCallItem' + - $ref: '#/components/schemas/OutputFileSearchCallItem' + - $ref: '#/components/schemas/OutputImageGenerationCallItem' + - $ref: '#/components/schemas/OutputDatetimeItem' + - $ref: '#/components/schemas/OutputWebSearchServerToolItem' + type: array + description: Input for a response request - can be a string or array of items + example: + - content: What is the weather today? + role: user + InputText: + description: Text input content item + example: + text: Hello, how can I help you? + type: input_text properties: - type: + text: type: string + type: enum: - - text_editor_code_execution_tool_result - content: - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionContent' - tool_use_id: + - input_text type: string required: - type - - content - - tool_use_id - example: - type: text_editor_code_execution_tool_result - content: - type: text_editor_code_execution_view_result - content: file content - file_type: text - num_lines: 10 - start_line: 1 - total_lines: 10 - tool_use_id: srvtoolu_01abc - AnthropicToolSearchResultError: + - text type: object + InputVideo: + description: Video input content item + example: + type: input_video + video_url: https://example.com/video.mp4 properties: - error_code: - $ref: '#/components/schemas/AnthropicServerToolErrorCode' - error_message: - type: string - nullable: true type: - type: string enum: - - tool_search_tool_result_error + - input_video + type: string + video_url: + description: A base64 data URL or remote URL that resolves to a video file + type: string required: - - error_code - - error_message - type - example: - error_code: unavailable - error_message: null - type: tool_search_tool_result_error - AnthropicToolReference: + - video_url type: object + InstructType: + description: Instruction format type + enum: + - none + - airoboros + - alpaca + - alpaca-modif + - chatml + - claude + - code-llama + - gemma + - llama2 + - llama3 + - mistral + - nemotron + - neural + - openchat + - phi3 + - rwkv + - vicuna + - zephyr + - deepseek-r1 + - deepseek-v3.1 + - qwq + - qwen3 + - null + example: chatml + nullable: true + type: string + InternalServerResponse: + description: Internal Server Error - Unexpected server error + example: + error: + code: 500 + message: Internal Server Error properties: - tool_name: - type: string - type: + error: + $ref: '#/components/schemas/InternalServerResponseErrorData' + user_id: + nullable: true type: string - enum: - - tool_reference required: - - tool_name - - type - example: - tool_name: my_tool - type: tool_reference - AnthropicToolSearchResult: + - error type: object + InternalServerResponseErrorData: + description: Error data for InternalServerResponse + example: + code: 500 + message: Internal Server Error properties: - tool_references: - type: array - items: - $ref: '#/components/schemas/AnthropicToolReference' - type: + code: + type: integer + message: type: string - enum: - - tool_search_tool_search_result + metadata: + additionalProperties: + nullable: true + nullable: true + type: object required: - - tool_references - - type - example: - tool_references: - - tool_name: my_tool - type: tool_reference - type: tool_search_tool_search_result - AnthropicToolSearchContent: - oneOf: - - $ref: '#/components/schemas/AnthropicToolSearchResultError' - - $ref: '#/components/schemas/AnthropicToolSearchResult' - discriminator: - propertyName: type - mapping: - tool_search_tool_result_error: '#/components/schemas/AnthropicToolSearchResultError' - tool_search_tool_search_result: '#/components/schemas/AnthropicToolSearchResult' - example: - type: tool_search_tool_search_result - tool_references: - - tool_name: my_tool - type: tool_reference - AnthropicToolSearchToolResult: + - code + - message type: object + KeyAssignment: + example: + assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + key_label: prod-key + key_name: Production Key properties: - type: + assigned_by: + description: User ID of who made the assignment + example: user_abc123 + nullable: true type: string - enum: - - tool_search_tool_result - content: - $ref: '#/components/schemas/AnthropicToolSearchContent' - tool_use_id: + created_at: + description: ISO 8601 timestamp of when the assignment was created + example: '2025-08-24T10:30:00Z' type: string - required: - - type - - content - - tool_use_id - example: - type: tool_search_tool_result - content: - type: tool_search_tool_search_result - tool_references: - - tool_name: my_tool - type: tool_reference - tool_use_id: srvtoolu_01abc - AnthropicContainerUpload: + guardrail_id: + description: ID of the guardrail + example: 550e8400-e29b-41d4-a716-446655440001 + format: uuid + type: string + id: + description: Unique identifier for the assignment + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + key_hash: + description: Hash of the assigned API key + example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + type: string + key_label: + description: Label of the API key + example: prod-key + type: string + key_name: + description: Name of the API key + example: Production Key + type: string + required: + - id + - key_hash + - guardrail_id + - key_name + - key_label + - assigned_by + - created_at type: object + Legacy_ChatContentVideo: + deprecated: true + description: Video input content part (legacy format - deprecated) + example: + type: input_video + video_url: + url: https://example.com/video.mp4 properties: type: - type: string enum: - - container_upload - file_id: + - input_video type: string + video_url: + $ref: '#/components/schemas/ChatContentVideoInput' required: - type - - file_id - example: - type: container_upload - file_id: file_01abc - AnthropicCompactionBlock: + - video_url type: object + Legacy_WebSearchServerTool: + description: Web search tool configuration + example: + engine: auto + filters: + allowed_domains: + - example.com + type: web_search properties: + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + filters: + $ref: '#/components/schemas/WebSearchDomainFilter' + max_results: + description: >- + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 + type: integer + search_context_size: + $ref: '#/components/schemas/SearchContextSizeEnum' type: - type: string enum: - - compaction - content: + - web_search type: string - nullable: true + user_location: + $ref: '#/components/schemas/WebSearchUserLocation' required: - type - - content - example: - type: compaction - content: Compacted summary of conversation. - ORAnthropicContentBlock: - oneOf: - - $ref: '#/components/schemas/AnthropicTextBlock' - - $ref: '#/components/schemas/AnthropicToolUseBlock' - - $ref: '#/components/schemas/AnthropicThinkingBlock' - - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' - - $ref: '#/components/schemas/AnthropicServerToolUseBlock' - - $ref: '#/components/schemas/AnthropicWebSearchToolResult' - - $ref: '#/components/schemas/AnthropicWebFetchToolResult' - - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicToolSearchToolResult' - - $ref: '#/components/schemas/AnthropicContainerUpload' - - $ref: '#/components/schemas/AnthropicCompactionBlock' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/AnthropicTextBlock' - tool_use: '#/components/schemas/AnthropicToolUseBlock' - thinking: '#/components/schemas/AnthropicThinkingBlock' - redacted_thinking: '#/components/schemas/AnthropicRedactedThinkingBlock' - server_tool_use: '#/components/schemas/AnthropicServerToolUseBlock' - web_search_tool_result: '#/components/schemas/AnthropicWebSearchToolResult' - web_fetch_tool_result: '#/components/schemas/AnthropicWebFetchToolResult' - code_execution_tool_result: '#/components/schemas/AnthropicCodeExecutionToolResult' - bash_code_execution_tool_result: '#/components/schemas/AnthropicBashCodeExecutionToolResult' - text_editor_code_execution_tool_result: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' - tool_search_tool_result: '#/components/schemas/AnthropicToolSearchToolResult' - container_upload: '#/components/schemas/AnthropicContainerUpload' - compaction: '#/components/schemas/AnthropicCompactionBlock' - example: - type: text - text: Hello, world! - citations: null - ORAnthropicStopReason: - type: string - nullable: true - enum: - - end_turn - - max_tokens - - stop_sequence - - tool_use - - pause_turn - - refusal - - compaction - - null - example: end_turn - AnthropicCacheCreation: type: object - nullable: true + ListEndpointsResponse: + description: List of available endpoints for a model + example: + architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + created: 1692901234 + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + endpoints: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_name: GPT-4 + name: 'OpenAI: GPT-4' + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: OpenAI + quantization: fp16 + status: default + supported_parameters: + - temperature + - top_p + - max_tokens + - frequency_penalty + - presence_penalty + supports_implicit_caching: true + tag: openai + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + id: openai/gpt-4 + name: GPT-4 properties: - ephemeral_5m_input_tokens: - type: integer - ephemeral_1h_input_tokens: + architecture: + allOf: + - $ref: '#/components/schemas/ModelArchitecture' + - example: + instruct_type: chatml + modality: text + tokenizer: GPT + properties: + input_modalities: + description: Supported input modalities + items: + $ref: '#/components/schemas/InputModality' + type: array + instruct_type: + $ref: '#/components/schemas/InstructType' + modality: + description: Primary modality of the model + example: text + nullable: true + type: string + output_modalities: + description: Supported output modalities + items: + $ref: '#/components/schemas/OutputModality' + type: array + tokenizer: + allOf: + - $ref: '#/components/schemas/ModelGroup' + - nullable: true + required: + - tokenizer + - instruct_type + - modality + - input_modalities + - output_modalities + created: + description: Unix timestamp of when the model was created + example: 1692901234 type: integer + description: + description: Description of the model + example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + type: string + endpoints: + description: List of available endpoints for this model + items: + $ref: '#/components/schemas/PublicEndpoint' + type: array + id: + description: Unique identifier for the model + example: openai/gpt-4 + type: string + name: + description: Display name of the model + example: GPT-4 + type: string required: - - ephemeral_5m_input_tokens - - ephemeral_1h_input_tokens + - id + - name + - created + - description + - architecture + - endpoints + type: object + ListGuardrailsResponse: example: - ephemeral_5m_input_tokens: 100 - ephemeral_1h_input_tokens: 0 - AnthropicServerToolUsage: - type: object - nullable: true + data: + - allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: Guardrail for production environment + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 100 + name: Production Guardrail + reset_interval: monthly + updated_at: '2025-08-24T15:45:00Z' + total_count: 1 properties: - web_search_requests: - type: integer - web_fetch_requests: + data: + description: List of guardrails + items: + $ref: '#/components/schemas/Guardrail' + type: array + total_count: + description: Total number of guardrails + example: 25 type: integer required: - - web_search_requests - - web_fetch_requests - example: - web_search_requests: 1 - web_fetch_requests: 0 - AnthropicSpeed: - type: string - nullable: true - enum: - - fast - - standard - - null - example: standard - AnthropicIterationCacheCreation: + - data + - total_count type: object - nullable: true - properties: - ephemeral_5m_input_tokens: - type: integer - ephemeral_1h_input_tokens: - type: integer - default: null + ListKeyAssignmentsResponse: example: - ephemeral_5m_input_tokens: 0 - ephemeral_1h_input_tokens: 0 - AnthropicBaseUsageIteration: - type: object + data: + - assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + key_label: prod-key + key_name: Production Key + total_count: 1 properties: - input_tokens: - type: integer - output_tokens: - type: integer - cache_creation_input_tokens: - type: integer - cache_read_input_tokens: + data: + description: List of key assignments + items: + $ref: '#/components/schemas/KeyAssignment' + type: array + total_count: + description: Total number of key assignments for this guardrail + example: 25 type: integer - cache_creation: - $ref: '#/components/schemas/AnthropicIterationCacheCreation' - example: - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: 0 - cache_read_input_tokens: 0 - cache_creation: null - AnthropicCompactionUsageIteration: - allOf: - - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - - type: object - properties: - type: - type: string - enum: - - compaction - required: - - type - example: - type: compaction - input_tokens: 50 - output_tokens: 25 - cache_creation_input_tokens: 0 - cache_read_input_tokens: 0 - cache_creation: null - AnthropicMessageUsageIteration: - allOf: - - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - - type: object - properties: - type: - type: string - enum: - - message - required: - - type - example: - type: message - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: 0 - cache_read_input_tokens: 0 - cache_creation: null - AnthropicUnknownUsageIteration: - allOf: - - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - - type: object - properties: - type: - type: string - required: - - type - example: - type: unknown - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: 0 - cache_read_input_tokens: 0 - cache_creation: null - AnthropicUsageIteration: - anyOf: - - $ref: '#/components/schemas/AnthropicCompactionUsageIteration' - - $ref: '#/components/schemas/AnthropicMessageUsageIteration' - - $ref: '#/components/schemas/AnthropicUnknownUsageIteration' - example: - type: message - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: 0 - cache_read_input_tokens: 0 - cache_creation: null - AnthropicServiceTier: - type: string - nullable: true - enum: - - standard - - priority - - batch - - null - example: standard - AnthropicUsage: + required: + - data + - total_count type: object + ListMemberAssignmentsResponse: + example: + data: + - assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + organization_id: org_xyz789 + user_id: user_abc123 + total_count: 1 properties: - input_tokens: - type: integer - output_tokens: - type: integer - cache_creation_input_tokens: - type: integer - cache_read_input_tokens: + data: + description: List of member assignments + items: + $ref: '#/components/schemas/MemberAssignment' + type: array + total_count: + description: Total number of member assignments + example: 10 type: integer - cache_creation: - $ref: '#/components/schemas/AnthropicCacheCreation' - inference_geo: - type: string - nullable: true - server_tool_use: - $ref: '#/components/schemas/AnthropicServerToolUsage' - service_tier: - $ref: '#/components/schemas/AnthropicServiceTier' required: - - input_tokens - - output_tokens - - cache_creation_input_tokens - - cache_read_input_tokens - - cache_creation - - inference_geo - - server_tool_use - - service_tier - example: - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: null - cache_read_input_tokens: null - cache_creation: null - inference_geo: null - server_tool_use: null - service_tier: standard - BaseMessagesResult: + - data + - total_count type: object + McpServerTool: + description: MCP (Model Context Protocol) tool configuration + example: + server_label: my-server + server_url: https://example.com/mcp + type: mcp properties: - id: - type: string - type: + allowed_tools: + anyOf: + - items: + type: string + type: array + - properties: + read_only: + type: boolean + tool_names: + items: + type: string + type: array + type: object + - nullable: true + authorization: type: string + connector_id: enum: - - message - role: - type: string - enum: - - assistant - container: - $ref: '#/components/schemas/AnthropicContainer' - content: - type: array - items: - $ref: '#/components/schemas/ORAnthropicContentBlock' - model: - type: string - stop_reason: - $ref: '#/components/schemas/ORAnthropicStopReason' - stop_sequence: + - connector_dropbox + - connector_gmail + - connector_googlecalendar + - connector_googledrive + - connector_microsoftteams + - connector_outlookcalendar + - connector_outlookemail + - connector_sharepoint type: string + headers: + additionalProperties: + type: string nullable: true - usage: - allOf: - - $ref: '#/components/schemas/AnthropicUsage' - - type: object - properties: - speed: - $ref: '#/components/schemas/AnthropicSpeed' - iterations: - type: array - items: - $ref: '#/components/schemas/AnthropicUsageIteration' - example: - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: null - cache_read_input_tokens: null - cache_creation: null - inference_geo: null - server_tool_use: null - service_tier: standard - required: - - id - - type - - role - - container - - content - - model - - stop_reason - - stop_sequence - - usage - description: Base Anthropic Messages API response before OpenRouter extensions - example: - id: msg_01XFDUDYJgAACzvnptvVoYEL - type: message - role: assistant - container: null - content: - - type: text - text: Hello! - citations: null - model: claude-sonnet-4-5-20250929 - stop_reason: end_turn - stop_sequence: null - usage: - input_tokens: 12 - output_tokens: 8 - cache_creation_input_tokens: null - cache_read_input_tokens: null - MessagesResult: - allOf: - - $ref: '#/components/schemas/BaseMessagesResult' - - type: object - properties: - usage: - allOf: - - $ref: '#/components/schemas/AnthropicUsage' - - type: object + type: object + require_approval: + anyOf: + - properties: + always: properties: - service_tier: - type: string - nullable: true - speed: - $ref: '#/components/schemas/AnthropicSpeed' - iterations: + tool_names: + items: + type: string type: array + type: object + never: + properties: + tool_names: items: - $ref: '#/components/schemas/AnthropicUsageIteration' - cost: - type: number - format: double - is_byok: - type: boolean - cost_details: - type: object - nullable: true - properties: - upstream_inference_cost: - type: number - format: double - upstream_inference_prompt_cost: - type: number - format: double - upstream_inference_completions_cost: - type: number - format: double - required: - - upstream_inference_prompt_cost - - upstream_inference_completions_cost - example: - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: null - cache_read_input_tokens: null - cache_creation: null - inference_geo: null - server_tool_use: null - service_tier: standard - provider: - $ref: '#/components/schemas/ProviderName' - description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions - example: - id: msg_01XFDUDYJgAACzvnptvVoYEL - type: message - role: assistant - container: null - content: - - type: text - text: Hello! I'm doing well, thank you for asking. - citations: null - model: claude-sonnet-4-5-20250929 - stop_reason: end_turn - stop_sequence: null - usage: - input_tokens: 12 - output_tokens: 15 - cache_creation_input_tokens: null - cache_read_input_tokens: null - cache_creation: null - inference_geo: null - server_tool_use: null - service_tier: standard - MessagesStartEvent: + type: string + type: array + type: object + type: object + - enum: + - always + type: string + - enum: + - never + type: string + - nullable: true + server_description: + type: string + server_label: + type: string + server_url: + type: string + type: + enum: + - mcp + type: string + required: + - type + - server_label type: object + MemberAssignment: + example: + assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + organization_id: org_xyz789 + user_id: user_abc123 properties: - type: + assigned_by: + description: User ID of who made the assignment + example: user_abc123 + nullable: true type: string - enum: - - message_start - message: - type: object - properties: - id: - type: string - type: - type: string - enum: - - message - role: - type: string - enum: - - assistant - container: - $ref: '#/components/schemas/AnthropicContainer' - content: - type: array - items: - $ref: '#/components/schemas/ORAnthropicContentBlock' - model: - type: string - stop_reason: - nullable: true - stop_sequence: - nullable: true - usage: - allOf: - - $ref: '#/components/schemas/AnthropicUsage' - - type: object - properties: - speed: - $ref: '#/components/schemas/AnthropicSpeed' - iterations: - type: array - items: - $ref: '#/components/schemas/AnthropicUsageIteration' - example: - input_tokens: 100 - output_tokens: 50 - cache_creation_input_tokens: null - cache_read_input_tokens: null - cache_creation: null - inference_geo: null - server_tool_use: null - service_tier: standard - provider: - type: string - enum: - - AnyScale - - Atoma - - Cent-ML - - CrofAI - - Enfer - - GoPomelo - - HuggingFace - - Hyperbolic 2 - - InoCloud - - Kluster - - Lambda - - Lepton - - Lynn 2 - - Lynn - - Mancer - - Meta - - Modal - - Nineteen - - OctoAI - - Recursal - - Reflection - - Replicate - - SambaNova 2 - - SF Compute - - Targon - - Together 2 - - Ubicloud - - 01.AI - - AkashML - - AI21 - - AionLabs - - Alibaba - - Ambient - - Amazon Bedrock - - Amazon Nova - - Anthropic - - Arcee AI - - AtlasCloud - - Avian - - Azure - - BaseTen - - BytePlus - - Black Forest Labs - - Cerebras - - Chutes - - Cirrascale - - Clarifai - - Cloudflare - - Cohere - - Crusoe - - DeepInfra - - DeepSeek - - Featherless - - Fireworks - - Friendli - - GMICloud - - Google - - Google AI Studio - - Groq - - Hyperbolic - - Inception - - Inceptron - - InferenceNet - - Ionstream - - Infermatic - - Io Net - - Inflection - - Liquid - - Mara - - Mancer 2 - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Perplexity - - Phala - - Reka - - Relace - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Together - - Upstage - - Venice - - WandB - - Xiaomi - - xAI - - Z.AI - - FakeProvider - required: - - id - - type - - role - - container - - content - - model - - stop_reason - - stop_sequence - - usage - required: - - type - - message - description: Event sent at the start of a streaming message - example: - type: message_start - message: - id: msg_01XFDUDYJgAACzvnptvVoYEL - type: message - role: assistant - content: [] - model: claude-sonnet-4-5-20250929 - stop_reason: null - stop_sequence: null - usage: - input_tokens: 12 - output_tokens: 0 - MessagesDeltaEvent: - type: object - properties: - type: + created_at: + description: ISO 8601 timestamp of when the assignment was created + example: '2025-08-24T10:30:00Z' type: string - enum: - - message_delta - delta: - type: object - properties: - container: - $ref: '#/components/schemas/AnthropicContainer' - stop_reason: - $ref: '#/components/schemas/ORAnthropicStopReason' - stop_sequence: - type: string - nullable: true - required: - - container - - stop_reason - - stop_sequence - usage: - type: object - properties: - input_tokens: - type: integer - nullable: true - output_tokens: - type: integer - cache_creation_input_tokens: - type: integer - nullable: true - cache_read_input_tokens: - type: integer - nullable: true - server_tool_use: - type: object - nullable: true - properties: - web_search_requests: - type: integer - web_fetch_requests: - type: integer - required: - - web_search_requests - - web_fetch_requests - iterations: - type: array - items: - $ref: '#/components/schemas/AnthropicUsageIteration' - required: - - input_tokens - - output_tokens - - cache_creation_input_tokens - - cache_read_input_tokens - - server_tool_use - required: - - type - - delta - - usage - description: Event sent when the message metadata changes (e.g., stop_reason) - example: - type: message_delta - delta: - stop_reason: end_turn - stop_sequence: null - usage: - output_tokens: 15 - MessagesStopEvent: - type: object - properties: - type: + guardrail_id: + description: ID of the guardrail + example: 550e8400-e29b-41d4-a716-446655440001 + format: uuid + type: string + id: + description: Unique identifier for the assignment + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + organization_id: + description: Organization ID + example: org_xyz789 + type: string + user_id: + description: Clerk user ID of the assigned member + example: user_abc123 type: string - enum: - - message_stop required: - - type - description: Event sent when the message is complete - example: - type: message_stop - MessagesContentBlockStartEvent: + - id + - user_id + - organization_id + - guardrail_id + - assigned_by + - created_at type: object + MessagesContentBlockDeltaEvent: + description: Event sent when content is added to a content block + example: + delta: + text: Hello + type: text_delta + index: 0 + type: content_block_delta properties: - type: - type: string - enum: - - content_block_start - index: - type: integer - content_block: - anyOf: - - $ref: '#/components/schemas/AnthropicTextBlock' - - $ref: '#/components/schemas/AnthropicToolUseBlock' - - $ref: '#/components/schemas/AnthropicThinkingBlock' - - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' - - $ref: '#/components/schemas/AnthropicServerToolUseBlock' - - $ref: '#/components/schemas/AnthropicWebSearchToolResult' - - $ref: '#/components/schemas/AnthropicWebFetchToolResult' - - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' - - $ref: '#/components/schemas/AnthropicToolSearchToolResult' - - $ref: '#/components/schemas/AnthropicContainerUpload' - - $ref: '#/components/schemas/AnthropicCompactionBlock' - - type: object - properties: + delta: + oneOf: + - properties: + text: + type: string type: + enum: + - text_delta + type: string + required: + - type + - text + type: object + - properties: + partial_json: type: string + type: enum: - - compaction - content: - type: string - nullable: true - required: - - type - - content - required: - - type - - index - - content_block - description: Event sent when a new content block starts - example: - type: content_block_start - index: 0 - content_block: - type: text - text: '' - MessagesContentBlockDeltaEvent: - type: object - properties: - type: - type: string - enum: - - content_block_delta - index: - type: integer - delta: - oneOf: - - type: object - properties: - type: - type: string - enum: - - text_delta - text: - type: string - required: - - type - - text - - type: object - properties: - type: - type: string - enum: - - input_json_delta - partial_json: + - input_json_delta type: string required: - type - partial_json - - type: object - properties: - type: + type: object + - properties: + thinking: type: string + type: enum: - thinking_delta - thinking: type: string required: - type - thinking - - type: object - properties: - type: + type: object + - properties: + signature: type: string + type: enum: - signature_delta - signature: type: string required: - type - signature - - type: object - properties: - type: - type: string - enum: - - citations_delta + type: object + - properties: citation: + discriminator: + mapping: + char_location: '#/components/schemas/AnthropicCitationCharLocation' + content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' + page_location: '#/components/schemas/AnthropicCitationPageLocation' + search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' + web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocation' - $ref: '#/components/schemas/AnthropicCitationPageLocation' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation' - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' - discriminator: - propertyName: type - mapping: - char_location: '#/components/schemas/AnthropicCitationCharLocation' - page_location: '#/components/schemas/AnthropicCitationPageLocation' - content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' - web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' + type: + enum: + - citations_delta + type: string required: - type - citation - - type: object - properties: - type: + type: object + - properties: + content: + nullable: true type: string + type: enum: - compaction_delta - content: type: string - nullable: true required: - type - content + type: object + index: + type: integer + type: + enum: + - content_block_delta + type: string required: - type - index - delta - description: Event sent when content is added to a content block + type: object + MessagesContentBlockStartEvent: + description: Event sent when a new content block starts example: - type: content_block_delta + content_block: + text: '' + type: text index: 0 - delta: - type: text_delta - text: Hello - MessagesContentBlockStopEvent: - type: object + type: content_block_start properties: - type: - type: string - enum: - - content_block_stop + content_block: + anyOf: + - $ref: '#/components/schemas/AnthropicTextBlock' + - $ref: '#/components/schemas/AnthropicToolUseBlock' + - $ref: '#/components/schemas/AnthropicThinkingBlock' + - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' + - $ref: '#/components/schemas/AnthropicServerToolUseBlock' + - $ref: '#/components/schemas/AnthropicWebSearchToolResult' + - $ref: '#/components/schemas/AnthropicWebFetchToolResult' + - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicToolSearchToolResult' + - $ref: '#/components/schemas/AnthropicContainerUpload' + - $ref: '#/components/schemas/AnthropicCompactionBlock' + - properties: + content: + nullable: true + type: string + type: + enum: + - compaction + type: string + required: + - type + - content + type: object index: type: integer + type: + enum: + - content_block_start + type: string required: - type - index + - content_block + type: object + MessagesContentBlockStopEvent: description: Event sent when a content block is complete example: - type: content_block_stop index: 0 - MessagesPingEvent: - type: object + type: content_block_stop properties: + index: + type: integer type: - type: string enum: - - ping + - content_block_stop + type: string required: - type - description: Keep-alive ping event + - index + type: object + MessagesDeltaEvent: + description: Event sent when the message metadata changes (e.g., stop_reason) example: - type: ping - MessagesErrorEvent: + delta: + stop_reason: end_turn + stop_sequence: null + type: message_delta + usage: + output_tokens: 15 + properties: + delta: + properties: + container: + $ref: '#/components/schemas/AnthropicContainer' + stop_reason: + $ref: '#/components/schemas/ORAnthropicStopReason' + stop_sequence: + nullable: true + type: string + required: + - container + - stop_reason + - stop_sequence + type: object + type: + enum: + - message_delta + type: string + usage: + properties: + cache_creation_input_tokens: + nullable: true + type: integer + cache_read_input_tokens: + nullable: true + type: integer + input_tokens: + nullable: true + type: integer + iterations: + items: + $ref: '#/components/schemas/AnthropicUsageIteration' + type: array + output_tokens: + type: integer + server_tool_use: + nullable: true + properties: + web_fetch_requests: + type: integer + web_search_requests: + type: integer + required: + - web_search_requests + - web_fetch_requests + type: object + required: + - input_tokens + - output_tokens + - cache_creation_input_tokens + - cache_read_input_tokens + - server_tool_use + type: object + required: + - type + - delta + - usage type: object + MessagesErrorDetail: + example: + message: Invalid request parameters + type: invalid_request_error properties: + message: + type: string type: type: string - enum: - - error + required: + - type + - message + type: object + MessagesErrorEvent: + description: Error event in the stream + example: + error: + message: Overloaded + type: overloaded_error + type: error + properties: error: - type: object properties: - type: - type: string message: type: string + type: + type: string required: - type - message + type: object + type: + enum: + - error + type: string required: - type - error - description: Error event in the stream + type: object + MessagesErrorResponse: example: - type: error error: - type: overloaded_error - message: Overloaded - MessagesStreamEvents: - oneOf: - - $ref: '#/components/schemas/MessagesStartEvent' - - $ref: '#/components/schemas/MessagesDeltaEvent' - - $ref: '#/components/schemas/MessagesStopEvent' - - $ref: '#/components/schemas/MessagesContentBlockStartEvent' - - $ref: '#/components/schemas/MessagesContentBlockDeltaEvent' - - $ref: '#/components/schemas/MessagesContentBlockStopEvent' - - $ref: '#/components/schemas/MessagesPingEvent' - - $ref: '#/components/schemas/MessagesErrorEvent' - discriminator: - propertyName: type - mapping: - message_start: '#/components/schemas/MessagesStartEvent' - message_delta: '#/components/schemas/MessagesDeltaEvent' - message_stop: '#/components/schemas/MessagesStopEvent' - content_block_start: '#/components/schemas/MessagesContentBlockStartEvent' - content_block_delta: '#/components/schemas/MessagesContentBlockDeltaEvent' - content_block_stop: '#/components/schemas/MessagesContentBlockStopEvent' - ping: '#/components/schemas/MessagesPingEvent' - error: '#/components/schemas/MessagesErrorEvent' - description: Union of all possible streaming events - example: - type: content_block_delta - index: 0 - delta: - type: text_delta - text: Hello - MessagesErrorDetail: - type: object - properties: - type: - type: string - message: - type: string - required: - - type - - message - example: - type: invalid_request_error - message: Invalid request parameters - MessagesErrorResponse: - type: object + message: Invalid request parameters + type: invalid_request_error + type: error properties: + error: + $ref: '#/components/schemas/MessagesErrorDetail' type: - type: string enum: - error - error: - $ref: '#/components/schemas/MessagesErrorDetail' + type: string required: - type - error - example: - type: error - error: - type: invalid_request_error - message: Invalid request parameters - AnthropicCitationCharLocationParam: type: object + MessagesMessageParam: + description: Anthropic message with OpenRouter extensions + example: + content: Hello, how are you? + role: user properties: - type: - type: string + content: + anyOf: + - type: string + - items: + oneOf: + - $ref: '#/components/schemas/AnthropicTextBlockParam' + - $ref: '#/components/schemas/AnthropicImageBlockParam' + - $ref: '#/components/schemas/AnthropicDocumentBlockParam' + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + id: + type: string + input: + nullable: true + name: + type: string + type: + enum: + - tool_use + type: string + required: + - type + - id + - name + type: object + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + content: + anyOf: + - type: string + - items: + anyOf: + - $ref: '#/components/schemas/AnthropicTextBlockParam' + - $ref: '#/components/schemas/AnthropicImageBlockParam' + - properties: + tool_name: + type: string + type: + enum: + - tool_reference + type: string + required: + - type + - tool_name + type: object + - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' + - $ref: '#/components/schemas/AnthropicDocumentBlockParam' + type: array + is_error: + type: boolean + tool_use_id: + type: string + type: + enum: + - tool_result + type: string + required: + - type + - tool_use_id + type: object + - properties: + signature: + type: string + thinking: + type: string + type: + enum: + - thinking + type: string + required: + - type + - thinking + - signature + type: object + - properties: + data: + type: string + type: + enum: + - redacted_thinking + type: string + required: + - type + - data + type: object + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + id: + type: string + input: + nullable: true + name: + $ref: '#/components/schemas/AnthropicServerToolName' + type: + enum: + - server_tool_use + type: string + required: + - type + - id + - name + type: object + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + content: + anyOf: + - items: + $ref: '#/components/schemas/AnthropicWebSearchResultBlockParam' + type: array + - properties: + error_code: + enum: + - invalid_tool_input + - unavailable + - max_uses_exceeded + - too_many_requests + - query_too_long + type: string + type: + enum: + - web_search_tool_result_error + type: string + required: + - type + - error_code + type: object + tool_use_id: + type: string + type: + enum: + - web_search_tool_result + type: string + required: + - type + - tool_use_id + - content + type: object + - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + content: + nullable: true + type: string + type: + enum: + - compaction + type: string + required: + - type + - content + type: object + type: array + role: enum: - - char_location - cited_text: - type: string - document_index: - type: integer - document_title: + - user + - assistant type: string - nullable: true - start_char_index: - type: integer - end_char_index: - type: integer required: - - type - - cited_text - - document_index - - document_title - - start_char_index - - end_char_index - example: - type: char_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_char_index: 0 - end_char_index: 18 - AnthropicCitationPageLocationParam: + - role + - content type: object + MessagesOutputConfig: + description: Configuration for controlling output behavior. Supports the effort parameter and structured output format. + example: + effort: medium properties: - type: - type: string + 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`, or `max`. enum: - - page_location - cited_text: - type: string - document_index: - type: integer - document_title: + - low + - medium + - high + - max + - null + example: medium + nullable: true type: string + format: + description: >- + A schema to specify Claude's output format in responses. See [structured + outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs). nullable: true - start_page_number: - type: integer - end_page_number: - type: integer - required: - - type - - cited_text - - document_index - - document_title - - start_page_number - - end_page_number - example: - type: page_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_page_number: 1 - end_page_number: 2 - AnthropicCitationContentBlockLocationParam: + properties: + schema: + additionalProperties: + nullable: true + type: object + type: + enum: + - json_schema + type: string + required: + - type + - schema + type: object type: object + MessagesPingEvent: + description: Keep-alive ping event + example: + type: ping properties: type: - type: string enum: - - content_block_location - cited_text: - type: string - document_index: - type: integer - document_title: + - ping type: string - nullable: true - start_block_index: - type: integer - end_block_index: - type: integer required: - type - - cited_text - - document_index - - document_title - - start_block_index - - end_block_index - example: - type: content_block_location - cited_text: Example cited text - document_index: 0 - document_title: null - start_block_index: 0 - end_block_index: 1 - AnthropicCacheControlTtl: - type: string - enum: - - 5m - - 1h - example: 5m - AnthropicCacheControlDirective: type: object - properties: - type: - type: string - enum: - - ephemeral - ttl: - $ref: '#/components/schemas/AnthropicCacheControlTtl' - required: - - type + MessagesRequest: + description: Request schema for Anthropic Messages API endpoint example: - type: ephemeral - AnthropicTextBlockParam: - type: object + max_tokens: 1024 + messages: + - content: Hello, how are you? + role: user + model: anthropic/claude-4.5-sonnet-20250929 + temperature: 0.7 properties: - type: - type: string - enum: - - text - text: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + context_management: + nullable: true + properties: + edits: + items: + oneOf: + - properties: + clear_at_least: + $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast' + clear_tool_inputs: + anyOf: + - type: boolean + - items: + type: string + type: array + - nullable: true + exclude_tools: + items: + type: string + nullable: true + type: array + keep: + $ref: '#/components/schemas/AnthropicToolUsesKeep' + trigger: + discriminator: + mapping: + input_tokens: '#/components/schemas/AnthropicInputTokensTrigger' + tool_uses: '#/components/schemas/AnthropicToolUsesTrigger' + propertyName: type + oneOf: + - $ref: '#/components/schemas/AnthropicInputTokensTrigger' + - $ref: '#/components/schemas/AnthropicToolUsesTrigger' + type: + enum: + - clear_tool_uses_20250919 + type: string + required: + - type + type: object + - properties: + keep: + anyOf: + - $ref: '#/components/schemas/AnthropicThinkingTurns' + - properties: + type: + enum: + - all + type: string + required: + - type + type: object + - enum: + - all + type: string + type: + enum: + - clear_thinking_20251015 + type: string + required: + - type + type: object + - properties: + instructions: + nullable: true + type: string + pause_after_compaction: + type: boolean + trigger: + allOf: + - $ref: '#/components/schemas/AnthropicInputTokensTrigger' + - nullable: true + properties: {} + type: object + example: + type: input_tokens + value: 100000 + type: + enum: + - compact_20260112 + type: string + required: + - type + type: object + type: array + type: object + max_tokens: + type: integer + messages: + items: + $ref: '#/components/schemas/MessagesMessageParam' + nullable: true + type: array + metadata: + properties: + user_id: + nullable: true + type: string + type: object + model: type: string - citations: + models: + items: + type: string type: array - nullable: true + output_config: + $ref: '#/components/schemas/MessagesOutputConfig' + plugins: + description: Plugins you want to enable for this request, including their settings. items: - oneOf: - - $ref: '#/components/schemas/AnthropicCitationCharLocationParam' - - $ref: '#/components/schemas/AnthropicCitationPageLocationParam' - - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam' - - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' discriminator: - propertyName: type mapping: - char_location: '#/components/schemas/AnthropicCitationCharLocationParam' - page_location: '#/components/schemas/AnthropicCitationPageLocationParam' - content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam' - web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - text - example: - type: text - text: Hello, world! - AnthropicWebSearchToolUserLocation: - type: object - nullable: true - properties: - type: - type: string + auto-router: '#/components/schemas/AutoRouterPlugin' + context-compression: '#/components/schemas/ContextCompressionPlugin' + file-parser: '#/components/schemas/FileParserPlugin' + moderation: '#/components/schemas/ModerationPlugin' + response-healing: '#/components/schemas/ResponseHealingPlugin' + web: '#/components/schemas/WebSearchPlugin' + propertyName: id + oneOf: + - $ref: '#/components/schemas/AutoRouterPlugin' + - $ref: '#/components/schemas/ModerationPlugin' + - $ref: '#/components/schemas/WebSearchPlugin' + - $ref: '#/components/schemas/FileParserPlugin' + - $ref: '#/components/schemas/ResponseHealingPlugin' + - $ref: '#/components/schemas/ContextCompressionPlugin' + type: array + provider: + $ref: '#/components/schemas/ProviderPreferences' + route: + $ref: '#/components/schemas/DeprecatedRoute' + service_tier: enum: - - approximate - city: + - auto + - standard_only type: string - nullable: true - country: - type: string - nullable: true - region: - type: string - nullable: true - timezone: - type: string - nullable: true - required: - - type - example: - type: approximate - city: San Francisco - country: US - region: California - timezone: America/Los_Angeles - SearchQualityLevel: - type: string - enum: - - low - - medium - - high - description: >- - How much context to retrieve per result. Defaults to medium (15000 chars). Only applies when using the Exa - engine; ignored with native provider search. - example: medium - WebSearchUserLocationServerTool: - type: object - properties: - type: - type: string - enum: - - approximate - city: - type: string - region: - type: string - country: - type: string - timezone: - type: string - description: Approximate user location for location-biased results. - example: - type: approximate - city: San Francisco - region: California - country: US - timezone: America/Los_Angeles - WebSearchConfig: - type: object - properties: - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: - type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 - max_total_results: - type: integer + session_id: description: >- - Maximum total number of search results across all search calls in a single request. Once this limit is - reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic - loops. - example: 20 - search_context_size: - $ref: '#/components/schemas/SearchQualityLevel' - user_location: - $ref: '#/components/schemas/WebSearchUserLocationServerTool' - allowed_domains: - type: array + A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for + observability. If provided in both the request body and the x-session-id header, the body value takes + precedence. Maximum of 256 characters. + maxLength: 256 + type: string + speed: + allOf: + - $ref: '#/components/schemas/AnthropicSpeed' + - description: >- + Controls output generation speed. When set to `fast`, uses a higher-speed inference configuration at + premium pricing. Defaults to `standard` when omitted. + example: fast + stop_sequences: items: type: string - description: >- - Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, - OpenAI, xAI). Not supported with Firecrawl or Perplexity. - excluded_domains: type: array - items: - type: string - description: >- - Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported - with Firecrawl, OpenAI (silently ignored), or Perplexity. - example: - max_results: 5 - search_context_size: medium - OpenRouterWebSearchServerTool: - type: object - properties: - type: - type: string - enum: - - openrouter:web_search - parameters: - $ref: '#/components/schemas/WebSearchConfig' - required: - - type - description: 'OpenRouter built-in server tool: searches the web for current information' - example: - type: openrouter:web_search - parameters: - max_results: 5 - MessagesOutputConfig: - type: object - properties: - effort: - type: string - nullable: true - enum: - - low - - medium - - high - - max - - null - 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`, or `max`. - example: medium - format: - type: object - nullable: true - properties: - type: - type: string - enum: - - json_schema - schema: + stream: + type: boolean + system: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/AnthropicTextBlockParam' + type: array + temperature: + format: double + type: number + thinking: + oneOf: + - properties: + budget_tokens: + type: integer + type: + enum: + - enabled + type: string + required: + - type + - budget_tokens type: object - additionalProperties: - nullable: true - required: - - type - - schema - 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). - description: Configuration for controlling output behavior. Supports the effort parameter and structured output format. - example: - effort: medium - AnthropicImageMimeType: - type: string - enum: - - image/jpeg - - image/png - - image/gif - - image/webp - example: image/jpeg - AnthropicBase64ImageSource: - type: object - properties: - type: - type: string - enum: - - base64 - media_type: - $ref: '#/components/schemas/AnthropicImageMimeType' - data: - type: string - required: - - type - - media_type - - data - example: - type: base64 - media_type: image/jpeg - data: /9j/4AAQ... - AnthropicUrlImageSource: - type: object - properties: - type: - type: string - enum: - - url - url: - type: string - required: - - type - - url - example: - type: url - url: https://example.com/image.jpg - AnthropicImageBlockParam: - type: object - properties: - type: - type: string - enum: - - image - source: + - properties: + type: + enum: + - disabled + type: string + required: + - type + type: object + - properties: + type: + enum: + - adaptive + type: string + required: + - type + type: object + tool_choice: oneOf: - - $ref: '#/components/schemas/AnthropicBase64ImageSource' - - $ref: '#/components/schemas/AnthropicUrlImageSource' - discriminator: - propertyName: type - mapping: - base64: '#/components/schemas/AnthropicBase64ImageSource' - url: '#/components/schemas/AnthropicUrlImageSource' - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - source - example: - type: image - source: - type: base64 - media_type: image/jpeg - data: /9j/4AAQ... - AnthropicUrlPdfSource: - type: object - properties: - type: - type: string - enum: - - url - url: - type: string - required: - - type - - url - example: - type: url - url: https://example.com/document.pdf - AnthropicDocumentBlockParam: - type: object - properties: - type: - type: string - enum: - - document - source: - oneOf: - - $ref: '#/components/schemas/AnthropicBase64PdfSource' - - $ref: '#/components/schemas/AnthropicPlainTextSource' - - type: object - properties: + - properties: + disable_parallel_tool_use: + type: boolean type: + enum: + - auto type: string + required: + - type + type: object + - properties: + disable_parallel_tool_use: + type: boolean + type: enum: - - content - content: - anyOf: - - type: string - - type: array - items: - oneOf: - - $ref: '#/components/schemas/AnthropicTextBlockParam' - - $ref: '#/components/schemas/AnthropicImageBlockParam' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/AnthropicTextBlockParam' - image: '#/components/schemas/AnthropicImageBlockParam' + - any + type: string required: - type - - content - - $ref: '#/components/schemas/AnthropicUrlPdfSource' - citations: - type: object - nullable: true - properties: - enabled: - type: boolean - context: - type: string - nullable: true - title: - type: string - nullable: true - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - source - example: - type: document - source: - type: text - media_type: text/plain - data: Hello, world! - AnthropicSearchResultBlockParam: - type: object - properties: - type: - type: string - enum: - - search_result - source: - type: string - title: - type: string - content: - type: array + type: object + - properties: + type: + enum: + - none + type: string + required: + - type + type: object + - properties: + disable_parallel_tool_use: + type: boolean + name: + type: string + type: + enum: + - tool + type: string + required: + - type + - name + type: object + tools: items: - $ref: '#/components/schemas/AnthropicTextBlockParam' - citations: - type: object - properties: - enabled: - type: boolean - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - source - - title - - content - example: - type: search_result - source: example_source - title: Example Result - content: - - type: text - text: Result content - AnthropicWebSearchResultBlockParam: - type: object - properties: - type: - type: string - enum: - - web_search_result - encrypted_content: - type: string - title: - type: string - url: - type: string - page_age: - type: string - nullable: true - required: - - type - - encrypted_content - - title - - url - example: - type: web_search_result - encrypted_content: enc_content_0 - title: Example Page - url: https://example.com - MessagesMessageParam: - type: object - properties: - role: - type: string - enum: - - user - - assistant - content: - anyOf: - - type: string - - type: array - items: - oneOf: - - $ref: '#/components/schemas/AnthropicTextBlockParam' - - $ref: '#/components/schemas/AnthropicImageBlockParam' - - $ref: '#/components/schemas/AnthropicDocumentBlockParam' - - type: object + anyOf: + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + description: + type: string + input_schema: + additionalProperties: + nullable: true properties: - type: - type: string - enum: - - tool_use - id: - type: string - name: - type: string - input: + properties: nullable: true - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - id - - name - - type: object - properties: - type: - type: string - enum: - - tool_result - tool_use_id: - type: string - content: - anyOf: - - type: string - - type: array - items: - anyOf: - - $ref: '#/components/schemas/AnthropicTextBlockParam' - - $ref: '#/components/schemas/AnthropicImageBlockParam' - - type: object - properties: - type: - type: string - enum: - - tool_reference - tool_name: - type: string - required: - - type - - tool_name - - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - - $ref: '#/components/schemas/AnthropicDocumentBlockParam' - is_error: - type: boolean - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - tool_use_id - - type: object - properties: - type: - type: string - enum: - - thinking - thinking: - type: string - signature: - type: string - required: - - type - - thinking - - signature - - type: object - properties: + required: + items: + type: string + nullable: true + type: array type: + default: object type: string - enum: - - redacted_thinking - data: - type: string - required: - - type - - data - - type: object - properties: - type: - type: string - enum: - - server_tool_use - id: - type: string - name: - $ref: '#/components/schemas/AnthropicServerToolName' - input: - nullable: true - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - id - - name - - type: object - properties: - type: - type: string - enum: - - web_search_tool_result - tool_use_id: - type: string - content: - anyOf: - - type: array - items: - $ref: '#/components/schemas/AnthropicWebSearchResultBlockParam' - - type: object - properties: - type: - type: string - enum: - - web_search_tool_result_error - error_code: - type: string - enum: - - invalid_tool_input - - unavailable - - max_uses_exceeded - - too_many_requests - - query_too_long - required: - - type - - error_code - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - tool_use_id - - content - - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - - type: object - properties: - type: - type: string - enum: - - compaction - content: - type: string - nullable: true - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - content - required: - - role - - content - description: Anthropic message with OpenRouter extensions - example: - role: user - content: Hello, how are you? - AnthropicInputTokensClearAtLeast: - type: object - nullable: true - properties: - type: - type: string - enum: - - input_tokens - value: - type: integer - required: - - type - - value - example: - type: input_tokens - value: 50000 - AnthropicToolUsesKeep: - type: object - properties: - type: - type: string - enum: - - tool_uses - value: - type: integer - required: - - type - - value - example: - type: tool_uses - value: 5 - AnthropicInputTokensTrigger: - type: object - properties: - type: - type: string - enum: - - input_tokens - value: - type: integer - required: - - type - - value - example: - type: input_tokens - value: 100000 - AnthropicToolUsesTrigger: - type: object - properties: - type: - type: string - enum: - - tool_uses - value: - type: integer - required: - - type - - value - example: - type: tool_uses - value: 10 - AnthropicThinkingTurns: - type: object - properties: - type: - type: string - enum: - - thinking_turns - value: - type: integer - required: - - type - - value - example: - type: thinking_turns - value: 3 - MessagesRequest: - type: object - properties: - model: - type: string - max_tokens: - type: integer - system: - anyOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/AnthropicTextBlockParam' - metadata: - type: object - properties: - user_id: - type: string - nullable: true - stop_sequences: - type: array - items: - type: string - temperature: - type: number - format: double - top_p: - type: number - format: double - top_k: - type: integer - tools: - type: array - items: - anyOf: - - type: object - properties: + type: object name: type: string - description: - type: string - input_schema: - type: object - properties: - type: - type: string - default: object - properties: - nullable: true - required: - type: array - nullable: true - items: - type: string - additionalProperties: - nullable: true type: - type: string enum: - custom - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' + type: string required: - name - input_schema - - type: object - properties: - type: + type: object + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + name: + enum: + - bash type: string + type: enum: - bash_20250124 - name: type: string - enum: - - bash - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' required: - type - name - - type: object - properties: - type: + type: object + - properties: + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' + name: + enum: + - str_replace_editor type: string + type: enum: - text_editor_20250124 - name: type: string - enum: - - str_replace_editor - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' required: - type - name - - type: object - properties: - type: - type: string - enum: - - web_search_20250305 - name: - type: string - enum: - - web_search + type: object + - properties: allowed_domains: - type: array - nullable: true items: type: string - blocked_domains: - type: array nullable: true + type: array + blocked_domains: items: type: string - max_uses: - type: integer - user_location: - $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' + nullable: true + type: array cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' - required: - - type - - name - - type: object - properties: - type: - type: string - enum: - - web_search_20260209 + max_uses: + type: integer name: - type: string enum: - web_search + type: string + type: + enum: + - web_search_20250305 + type: string + user_location: + $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' + required: + - type + - name + type: object + - properties: allowed_callers: - type: array items: - type: string enum: - direct - code_execution_20250825 - code_execution_20260120 - allowed_domains: + type: string type: array - nullable: true + allowed_domains: items: type: string - blocked_domains: - type: array nullable: true + type: array + blocked_domains: items: type: string + nullable: true + type: array + cache_control: + $ref: '#/components/schemas/AnthropicCacheControlDirective' max_uses: type: integer + name: + enum: + - web_search + type: string + type: + enum: + - web_search_20260209 + type: string user_location: $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' required: - type - name + type: object - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - tool_choice: - oneOf: - - type: object - properties: - type: - type: string - enum: - - auto - disable_parallel_tool_use: - type: boolean - required: - - type - - type: object - properties: - type: - type: string - enum: - - any - disable_parallel_tool_use: - type: boolean - required: - - type - - type: object - properties: - type: - type: string - enum: - - none - required: - - type - - type: object - properties: - type: - type: string - enum: - - tool - name: - type: string - disable_parallel_tool_use: - type: boolean - required: - - type - - name - thinking: - oneOf: - - type: object - properties: - type: - type: string - enum: - - enabled - budget_tokens: - type: integer - required: - - type - - budget_tokens - - type: object - properties: - type: - type: string - enum: - - disabled - required: - - type - - type: object - properties: - type: - type: string - enum: - - adaptive - required: - - type - service_tier: - type: string - enum: - - auto - - standard_only - output_config: - $ref: '#/components/schemas/MessagesOutputConfig' - cache_control: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - messages: - type: array - nullable: true - items: - $ref: '#/components/schemas/MessagesMessageParam' - stream: - type: boolean - context_management: - type: object - nullable: true - properties: - edits: - type: array - items: - oneOf: - - type: object - properties: - type: - type: string - enum: - - clear_tool_uses_20250919 - clear_at_least: - $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast' - clear_tool_inputs: - anyOf: - - type: boolean - - type: array - items: - type: string - - nullable: true - exclude_tools: - type: array - nullable: true - items: - type: string - keep: - $ref: '#/components/schemas/AnthropicToolUsesKeep' - trigger: - oneOf: - - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - - $ref: '#/components/schemas/AnthropicToolUsesTrigger' - discriminator: - propertyName: type - mapping: - input_tokens: '#/components/schemas/AnthropicInputTokensTrigger' - tool_uses: '#/components/schemas/AnthropicToolUsesTrigger' - required: - - type - - type: object - properties: - type: - type: string - enum: - - clear_thinking_20251015 - keep: - anyOf: - - $ref: '#/components/schemas/AnthropicThinkingTurns' - - type: object - properties: - type: - type: string - enum: - - all - required: - - type - - type: string - enum: - - all - required: - - type - - type: object - properties: - type: - type: string - enum: - - compact_20260112 - instructions: - type: string - nullable: true - pause_after_compaction: - type: boolean - trigger: - allOf: - - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - - type: object - nullable: true - properties: {} - example: - type: input_tokens - value: 100000 - required: - - type - provider: - $ref: '#/components/schemas/ProviderPreferences' - plugins: type: array - items: - oneOf: - - $ref: '#/components/schemas/AutoRouterPlugin' - - $ref: '#/components/schemas/ModerationPlugin' - - $ref: '#/components/schemas/WebSearchPlugin' - - $ref: '#/components/schemas/FileParserPlugin' - - $ref: '#/components/schemas/ResponseHealingPlugin' - - $ref: '#/components/schemas/ContextCompressionPlugin' - discriminator: - propertyName: id - mapping: - auto-router: '#/components/schemas/AutoRouterPlugin' - moderation: '#/components/schemas/ModerationPlugin' - web: '#/components/schemas/WebSearchPlugin' - file-parser: '#/components/schemas/FileParserPlugin' - response-healing: '#/components/schemas/ResponseHealingPlugin' - context-compression: '#/components/schemas/ContextCompressionPlugin' - description: Plugins you want to enable for this request, including their settings. - route: - $ref: '#/components/schemas/DeprecatedRoute' + top_k: + type: integer + top_p: + format: double + type: number + trace: + $ref: '#/components/schemas/TraceConfig' user: - type: string - maxLength: 256 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. - session_id: - type: string maxLength: 256 - description: >- - A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for - observability. If provided in both the request body and the x-session-id header, the body value takes - precedence. Maximum of 256 characters. - trace: - $ref: '#/components/schemas/TraceConfig' - models: - type: array - items: - type: string - speed: - allOf: - - $ref: '#/components/schemas/AnthropicSpeed' - - 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. + type: string required: - model - messages - description: Request schema for Anthropic Messages API endpoint - example: - model: anthropic/claude-4.5-sonnet-20250929 - max_tokens: 1024 - messages: - - role: user - content: Hello, how are you? - temperature: 0.7 - ActivityItem: - type: object - properties: - date: - type: string - description: Date of the activity (YYYY-MM-DD format) - example: '2025-08-24' - model: - type: string - description: Model slug (e.g., "openai/gpt-4.1") - example: openai/gpt-4.1 - model_permaslug: - type: string - description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14") - example: openai/gpt-4.1-2025-04-14 - endpoint_id: - type: string - description: Unique identifier for the endpoint - example: 550e8400-e29b-41d4-a716-446655440000 - provider_name: - type: string - description: Name of the provider serving this endpoint - example: OpenAI - usage: - type: number - format: double - description: Total cost in USD (OpenRouter credits spent) - example: 0.015 - byok_usage_inference: - type: number - format: double - description: BYOK inference cost in USD (external credits spent) - example: 0.012 - requests: - type: integer - description: Number of requests made - example: 5 - prompt_tokens: - type: integer - description: Total prompt tokens used - example: 50 - completion_tokens: - type: integer - description: Total completion tokens generated - example: 125 - reasoning_tokens: - type: integer - description: Total reasoning tokens used - example: 25 - required: - - date - - model - - model_permaslug - - endpoint_id - - provider_name - - usage - - byok_usage_inference - - requests - - prompt_tokens - - completion_tokens - - reasoning_tokens - example: - date: '2025-08-24' - model: openai/gpt-4.1 - model_permaslug: openai/gpt-4.1-2025-04-14 - endpoint_id: 550e8400-e29b-41d4-a716-446655440000 - provider_name: OpenAI - usage: 0.015 - byok_usage_inference: 0.012 - requests: 5 - prompt_tokens: 50 - completion_tokens: 125 - reasoning_tokens: 25 - ActivityResponse: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ActivityItem' - description: List of activity items - required: - - data - example: - data: - - date: '2025-08-24' - model: openai/gpt-4.1 - model_permaslug: openai/gpt-4.1-2025-04-14 - endpoint_id: 550e8400-e29b-41d4-a716-446655440000 - provider_name: OpenAI - usage: 0.015 - byok_usage_inference: 0.012 - requests: 5 - prompt_tokens: 50 - completion_tokens: 125 - reasoning_tokens: 25 - ForbiddenResponseErrorData: - type: object - properties: - code: - type: integer - message: - type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true - required: - - code - - message - description: Error data for ForbiddenResponse - example: - code: 403 - message: Only management keys can perform this operation - ForbiddenResponse: type: object - properties: - error: - $ref: '#/components/schemas/ForbiddenResponseErrorData' - user_id: - type: string - nullable: true - required: - - error - description: Forbidden - Authentication successful but insufficient permissions - example: - error: - code: 403 - message: Only management keys can perform this operation - ChatFinishReasonEnum: - type: string - nullable: true - enum: - - tool_calls - - stop - - length - - content_filter - - error - - null - example: stop - ChatContentCacheControl: + MessagesResult: allOf: - - $ref: '#/components/schemas/AnthropicCacheControlDirective' - - type: object - properties: {} + - $ref: '#/components/schemas/BaseMessagesResult' + - properties: + provider: + $ref: '#/components/schemas/ProviderName' + usage: + allOf: + - $ref: '#/components/schemas/AnthropicUsage' + - properties: + cost: + format: double + type: number + cost_details: + nullable: true + properties: + upstream_inference_completions_cost: + format: double + type: number + upstream_inference_cost: + format: double + type: number + upstream_inference_prompt_cost: + format: double + type: number + required: + - upstream_inference_prompt_cost + - upstream_inference_completions_cost + type: object + is_byok: + type: boolean + iterations: + items: + $ref: '#/components/schemas/AnthropicUsageIteration' + type: array + service_tier: + nullable: true + type: string + speed: + $ref: '#/components/schemas/AnthropicSpeed' + type: object + example: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null + input_tokens: 100 + output_tokens: 50 + server_tool_use: null + service_tier: standard + type: object + description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions example: - type: ephemeral - ttl: 5m - description: Cache control for the content part - ChatContentText: - type: object - properties: - type: - type: string - enum: - - text - text: - type: string - cache_control: - $ref: '#/components/schemas/ChatContentCacheControl' - required: - - type - - text - description: Text content part + container: null + content: + - citations: null + text: Hello! I'm doing well, thank you for asking. + type: text + id: msg_01XFDUDYJgAACzvnptvVoYEL + model: claude-sonnet-4-5-20250929 + role: assistant + stop_reason: end_turn + stop_sequence: null + type: message + usage: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null + input_tokens: 12 + output_tokens: 15 + server_tool_use: null + service_tier: standard + MessagesStartEvent: + description: Event sent at the start of a streaming message example: - type: text - text: Hello, world! - ChatContentImage: - type: object + message: + content: [] + id: msg_01XFDUDYJgAACzvnptvVoYEL + model: claude-sonnet-4-5-20250929 + role: assistant + stop_reason: null + stop_sequence: null + type: message + usage: + input_tokens: 12 + output_tokens: 0 + type: message_start properties: - type: - type: string - enum: - - image_url - image_url: - type: object + message: properties: - url: + container: + $ref: '#/components/schemas/AnthropicContainer' + content: + items: + $ref: '#/components/schemas/ORAnthropicContentBlock' + type: array + id: type: string - description: 'URL of the image (data: URLs supported)' - detail: + model: type: string + provider: enum: - - auto - - low - - high - description: Image detail level for vision models - required: - - url - required: - - type - - image_url - description: Image content part for vision models - example: - type: image_url - image_url: - url: https://example.com/image.jpg - detail: auto - ChatContentAudio: - type: object - properties: - type: - type: string - enum: - - input_audio - input_audio: - type: object - properties: - data: + - AnyScale + - Atoma + - Cent-ML + - CrofAI + - Enfer + - GoPomelo + - HuggingFace + - Hyperbolic 2 + - InoCloud + - Kluster + - Lambda + - Lepton + - Lynn 2 + - Lynn + - Mancer + - Meta + - Modal + - Nineteen + - OctoAI + - Recursal + - Reflection + - Replicate + - SambaNova 2 + - SF Compute + - Targon + - Together 2 + - Ubicloud + - 01.AI + - AkashML + - AI21 + - AionLabs + - Alibaba + - Ambient + - Amazon Bedrock + - Amazon Nova + - Anthropic + - Arcee AI + - AtlasCloud + - Avian + - Azure + - BaseTen + - BytePlus + - Black Forest Labs + - Cerebras + - Chutes + - Cirrascale + - Clarifai + - Cloudflare + - Cohere + - Crusoe + - DeepInfra + - DeepSeek + - Featherless + - Fireworks + - Friendli + - GMICloud + - Google + - Google AI Studio + - Groq + - Hyperbolic + - Inception + - Inceptron + - InferenceNet + - Ionstream + - Infermatic + - Io Net + - Inflection + - Liquid + - Mara + - Mancer 2 + - Minimax + - ModelRun + - Mistral + - Modular + - Moonshot AI + - Morph + - NCompass + - Nebius + - NextBit + - Novita + - Nvidia + - OpenAI + - OpenInference + - Parasail + - Perplexity + - Phala + - Reka + - Relace + - SambaNova + - Seed + - SiliconFlow + - Sourceful + - StepFun + - Stealth + - StreamLake + - Switchpoint + - Together + - Upstage + - Venice + - WandB + - Xiaomi + - xAI + - Z.AI + - FakeProvider type: string - description: Base64 encoded audio data - format: + role: + enum: + - assistant type: string - description: >- - Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by - provider. + stop_reason: + nullable: true + stop_sequence: + nullable: true + type: + enum: + - message + type: string + usage: + allOf: + - $ref: '#/components/schemas/AnthropicUsage' + - properties: + iterations: + items: + $ref: '#/components/schemas/AnthropicUsageIteration' + type: array + speed: + $ref: '#/components/schemas/AnthropicSpeed' + type: object + example: + cache_creation: null + cache_creation_input_tokens: null + cache_read_input_tokens: null + inference_geo: null + input_tokens: 100 + output_tokens: 50 + server_tool_use: null + service_tier: standard required: - - data - - format - required: - - type - - input_audio - description: Audio input content part. Supported audio formats vary by provider. - example: - type: input_audio - input_audio: - data: SGVsbG8gV29ybGQ= - format: wav - Legacy_ChatContentVideo: - type: object - properties: + - id + - type + - role + - container + - content + - model + - stop_reason + - stop_sequence + - usage + type: object type: - type: string enum: - - input_video - video_url: - $ref: '#/components/schemas/ChatContentVideoInput' + - message_start + type: string required: - type - - video_url - description: Video input content part (legacy format - deprecated) - deprecated: true - example: - type: input_video - video_url: - url: https://example.com/video.mp4 - ChatContentVideoInput: + - message type: object - properties: - url: - type: string - description: 'URL of the video (data: URLs supported)' - required: - - url - description: Video input object + MessagesStopEvent: + description: Event sent when the message is complete example: - url: https://example.com/video.mp4 - ChatContentVideo: - type: object + type: message_stop properties: type: - type: string enum: - - video_url - video_url: - $ref: '#/components/schemas/ChatContentVideoInput' + - message_stop + type: string required: - type - - video_url - description: Video input content part - example: - type: video_url - video_url: - url: https://example.com/video.mp4 - ChatContentFile: type: object - properties: - type: - type: string - enum: - - file - file: - type: object - properties: - file_data: - type: string - description: File content as base64 data URL or URL - file_id: - type: string - description: File ID for previously uploaded files - filename: - type: string - description: Original filename - required: - - type - - file - description: File content part for document processing - example: - type: file - file: - file_data: https://example.com/document.pdf - filename: document.pdf - ChatContentItems: - oneOf: - - $ref: '#/components/schemas/ChatContentText' - - $ref: '#/components/schemas/ChatContentImage' - - $ref: '#/components/schemas/ChatContentAudio' - - $ref: '#/components/schemas/Legacy_ChatContentVideo' - - $ref: '#/components/schemas/ChatContentVideo' - - $ref: '#/components/schemas/ChatContentFile' + MessagesStreamEvents: + description: Union of all possible streaming events discriminator: - propertyName: type mapping: - text: '#/components/schemas/ChatContentText' - image_url: '#/components/schemas/ChatContentImage' - input_audio: '#/components/schemas/ChatContentAudio' - input_video: '#/components/schemas/Legacy_ChatContentVideo' - video_url: '#/components/schemas/ChatContentVideo' - file: '#/components/schemas/ChatContentFile' - description: Content part for chat completion messages + content_block_delta: '#/components/schemas/MessagesContentBlockDeltaEvent' + content_block_start: '#/components/schemas/MessagesContentBlockStartEvent' + content_block_stop: '#/components/schemas/MessagesContentBlockStopEvent' + error: '#/components/schemas/MessagesErrorEvent' + message_delta: '#/components/schemas/MessagesDeltaEvent' + message_start: '#/components/schemas/MessagesStartEvent' + message_stop: '#/components/schemas/MessagesStopEvent' + ping: '#/components/schemas/MessagesPingEvent' + propertyName: type example: - type: text - text: Hello, world! - ChatToolCall: - type: object - properties: - id: - type: string - description: Tool call identifier - type: - type: string - enum: - - function - function: - type: object - properties: - name: - type: string - description: Function name to call - arguments: - type: string - description: Function arguments as JSON string - required: - - name - - arguments - required: - - id - - type - - function - description: Tool call made by the assistant + delta: + text: Hello + type: text_delta + index: 0 + type: content_block_delta + oneOf: + - $ref: '#/components/schemas/MessagesStartEvent' + - $ref: '#/components/schemas/MessagesDeltaEvent' + - $ref: '#/components/schemas/MessagesStopEvent' + - $ref: '#/components/schemas/MessagesContentBlockStartEvent' + - $ref: '#/components/schemas/MessagesContentBlockDeltaEvent' + - $ref: '#/components/schemas/MessagesContentBlockStopEvent' + - $ref: '#/components/schemas/MessagesPingEvent' + - $ref: '#/components/schemas/MessagesErrorEvent' + Model: + description: Information about an AI model available on OpenRouter example: - id: call_abc123 - type: function - function: - name: get_current_weather - arguments: '{"location": "Boston, MA"}' - ReasoningDetailSummary: - type: object + architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + canonical_slug: openai/gpt-4 + context_length: 8192 + created: 1692901234 + default_parameters: null + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + expiration_date: null + id: openai/gpt-4 + knowledge_cutoff: null + links: + details: /api/v1/models/openai/gpt-5.4/endpoints + name: GPT-4 + per_request_limits: null + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + supported_parameters: + - temperature + - top_p + - max_tokens + top_provider: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 properties: - type: - type: string - enum: - - reasoning.summary - summary: - type: string - id: + architecture: + $ref: '#/components/schemas/ModelArchitecture' + canonical_slug: + description: Canonical slug for the model + example: openai/gpt-4 type: string - nullable: true - format: - $ref: '#/components/schemas/ReasoningFormat' - index: + context_length: + description: Maximum context length in tokens + example: 8192 type: integer - required: - - type - - summary - description: Reasoning detail summary schema - example: - type: reasoning.summary - summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... - ReasoningDetailEncrypted: - type: object - properties: - type: - type: string - enum: - - reasoning.encrypted - data: - type: string - id: - type: string - nullable: true - format: - $ref: '#/components/schemas/ReasoningFormat' - index: + created: + description: Unix timestamp of when the model was created + example: 1692901234 type: integer - required: - - type - - data - description: Reasoning detail encrypted schema - example: - type: reasoning.encrypted - data: encrypted data - ReasoningDetailText: - type: object - properties: - type: - type: string - enum: - - reasoning.text - text: + default_parameters: + $ref: '#/components/schemas/DefaultParameters' + description: + description: Description of the model + example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. type: string + expiration_date: + description: The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration. + example: '2025-06-01' nullable: true - signature: type: string + hugging_face_id: + description: Hugging Face model identifier, if applicable + example: microsoft/DialoGPT-medium nullable: true + type: string id: + description: Unique identifier for the model + example: openai/gpt-4 type: string + knowledge_cutoff: + description: The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown. + example: '2024-10-01' nullable: true - format: - $ref: '#/components/schemas/ReasoningFormat' - index: - type: integer + type: string + links: + $ref: '#/components/schemas/ModelLinks' + name: + description: Display name of the model + example: GPT-4 + type: string + per_request_limits: + $ref: '#/components/schemas/PerRequestLimits' + pricing: + $ref: '#/components/schemas/PublicPricing' + supported_parameters: + description: List of supported parameters for this model + items: + $ref: '#/components/schemas/Parameter' + type: array + top_provider: + $ref: '#/components/schemas/TopProviderInfo' required: - - type - description: Reasoning detail text schema - example: - type: reasoning.text - text: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... - signature: signature - ReasoningDetailUnion: - oneOf: - - $ref: '#/components/schemas/ReasoningDetailSummary' - - $ref: '#/components/schemas/ReasoningDetailEncrypted' - - $ref: '#/components/schemas/ReasoningDetailText' - discriminator: - propertyName: type - mapping: - reasoning.summary: '#/components/schemas/ReasoningDetailSummary' - reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted' - reasoning.text: '#/components/schemas/ReasoningDetailText' - description: Reasoning detail union schema + - id + - canonical_slug + - name + - created + - pricing + - context_length + - architecture + - top_provider + - per_request_limits + - supported_parameters + - default_parameters + - links + type: object + ModelArchitecture: + description: Model architecture information example: - type: reasoning.summary - summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... - ChatReasoningDetails: - type: array - items: - $ref: '#/components/schemas/ReasoningDetailUnion' - description: Reasoning details for extended thinking models - example: - - type: thinking - thinking: Let me work through this step by step... - ChatAssistantImages: - type: array - items: - type: object - properties: - image_url: - type: object - properties: - url: - type: string - description: URL or base64-encoded data of the generated image - required: - - url - required: - - image_url - description: Generated images from image generation models - example: - - image_url: - url: data:image/png;base64,iVBORw0KGgo... - ChatAudioOutput: - type: object - properties: - id: - type: string - description: Audio output identifier - expires_at: - type: integer - description: Audio expiration timestamp - data: - type: string - description: Base64 encoded audio data - transcript: - type: string - description: Audio transcript - description: Audio output data or reference - example: - id: audio_abc123 - expires_at: 1677652400 - data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f - transcript: Hello! How can I help you today? - ChatAssistantMessage: - type: object + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT properties: - role: - type: string - enum: - - assistant - content: - anyOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/ChatContentItems' - - nullable: true - description: Assistant message content - name: - type: string - description: Optional name for the assistant - tool_calls: - type: array + input_modalities: + description: Supported input modalities items: - $ref: '#/components/schemas/ChatToolCall' - description: Tool calls made by the assistant - refusal: - type: string + $ref: '#/components/schemas/InputModality' + type: array + instruct_type: + description: Instruction format type + enum: + - none + - airoboros + - alpaca + - alpaca-modif + - chatml + - claude + - code-llama + - gemma + - llama2 + - llama3 + - mistral + - nemotron + - neural + - openchat + - phi3 + - rwkv + - vicuna + - zephyr + - deepseek-r1 + - deepseek-v3.1 + - qwq + - qwen3 + - null + example: chatml nullable: true - description: Refusal message if content was refused - reasoning: type: string + modality: + description: Primary modality of the model + example: text->text nullable: true - description: Reasoning output - reasoning_details: - $ref: '#/components/schemas/ChatReasoningDetails' - images: - $ref: '#/components/schemas/ChatAssistantImages' - audio: - $ref: '#/components/schemas/ChatAudioOutput' - required: - - role - description: Assistant message for requests and responses - example: - role: assistant - content: The capital of France is Paris. - ChatTokenLogprob: - type: object - properties: - token: type: string - description: The token - logprob: - type: number - format: double - description: Log probability of the token - bytes: - type: array - nullable: true + output_modalities: + description: Supported output modalities items: - type: integer - description: UTF-8 bytes of the token - top_logprobs: + $ref: '#/components/schemas/OutputModality' type: array - items: - type: object - properties: - token: - type: string - logprob: - type: number - format: double - bytes: - type: array - nullable: true - items: - type: integer - required: - - token - - logprob - - bytes - description: Top alternative tokens with probabilities + tokenizer: + $ref: '#/components/schemas/ModelGroup' required: - - token - - logprob - - bytes - - top_logprobs - description: Token log probability information - example: - token: ' Hello' - logprob: -0.612345 - bytes: null - top_logprobs: - - token: ' Hello' - logprob: -0.612345 - bytes: null - ChatTokenLogprobs: + - modality + - input_modalities + - output_modalities type: object - nullable: true - properties: - content: - type: array - nullable: true - items: - $ref: '#/components/schemas/ChatTokenLogprob' - description: Log probabilities for content tokens - refusal: - type: array - nullable: true - items: - $ref: '#/components/schemas/ChatTokenLogprob' - description: Log probabilities for refusal tokens - required: - - content - description: Log probabilities for the completion + ModelGroup: + description: Tokenizer type used by the model + enum: + - Router + - Media + - Other + - GPT + - Claude + - Gemini + - Gemma + - Grok + - Cohere + - Nova + - Qwen + - Yi + - DeepSeek + - Mistral + - Llama2 + - Llama3 + - Llama4 + - PaLM + - RWKV + - Qwen3 + example: GPT + type: string + ModelLinks: + description: Related API endpoints and resources for this model. example: - content: - - token: ' Hello' - logprob: -0.612345 - bytes: null - top_logprobs: [] - refusal: null - ChatChoice: - type: object + details: /api/v1/models/openai/gpt-5.4/endpoints properties: - finish_reason: - $ref: '#/components/schemas/ChatFinishReasonEnum' - index: - type: integer - description: Choice index - example: 0 - message: - $ref: '#/components/schemas/ChatAssistantMessage' - logprobs: - $ref: '#/components/schemas/ChatTokenLogprobs' + details: + description: URL for the model details/endpoints API + example: /api/v1/models/openai/gpt-5.4/endpoints + type: string required: - - finish_reason - - index - - message - description: Chat completion choice + - details + type: object + ModelName: + description: Model to use for completion + example: openai/gpt-4 + type: string + ModelsCountResponse: + description: Model count data example: - finish_reason: stop - index: 0 - message: - role: assistant - content: The capital of France is Paris. - logprobs: null - ChatUsage: - type: object + data: + count: 150 properties: - completion_tokens: - type: integer - description: Number of tokens in the completion - prompt_tokens: - type: integer - description: Number of tokens in the prompt - total_tokens: - type: integer - description: Total number of tokens - completion_tokens_details: - type: object - nullable: true + data: + description: Model count data + example: + count: 150 properties: - reasoning_tokens: - type: integer - description: Tokens used for reasoning - audio_tokens: - type: integer - description: Tokens used for audio output - accepted_prediction_tokens: - type: integer - description: Accepted prediction tokens - rejected_prediction_tokens: + count: + description: Total number of available models + example: 150 type: integer - description: Rejected prediction tokens - description: Detailed completion token usage - prompt_tokens_details: + required: + - count type: object - nullable: true - properties: - cached_tokens: - type: integer - description: Cached prompt tokens - cache_write_tokens: - type: integer - description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing. - audio_tokens: - type: integer - description: Audio input tokens - video_tokens: - type: integer - description: Video input tokens - description: Detailed prompt token usage required: - - completion_tokens - - prompt_tokens - - total_tokens - description: Token usage statistics + - data + type: object + ModelsListResponse: + description: List of available models example: - completion_tokens: 15 - prompt_tokens: 10 - total_tokens: 25 - completion_tokens_details: - reasoning_tokens: 5 - prompt_tokens_details: - cached_tokens: 2 - ChatResult: + data: + - architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + canonical_slug: openai/gpt-4 + context_length: 8192 + created: 1692901234 + default_parameters: null + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + expiration_date: null + id: openai/gpt-4 + knowledge_cutoff: null + links: + details: /api/v1/models/openai/gpt-5.4/endpoints + name: GPT-4 + per_request_limits: null + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + supported_parameters: + - temperature + - top_p + - max_tokens + - frequency_penalty + - presence_penalty + top_provider: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 + properties: + data: + $ref: '#/components/schemas/ModelsListResponseData' + required: + - data type: object + ModelsListResponseData: + description: List of available models + example: + - architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + canonical_slug: openai/gpt-4 + context_length: 8192 + created: 1692901234 + default_parameters: null + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + expiration_date: null + id: openai/gpt-4 + knowledge_cutoff: null + links: + details: /api/v1/models/openai/gpt-5.4/endpoints + name: GPT-4 + per_request_limits: null + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + supported_parameters: + - temperature + - top_p + - max_tokens + top_provider: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 + items: + $ref: '#/components/schemas/Model' + type: array + ModerationPlugin: + example: + id: moderation properties: id: - type: string - description: Unique completion identifier - example: chatcmpl-123 - choices: - type: array - items: - $ref: '#/components/schemas/ChatChoice' - description: List of completion choices - created: - type: integer - description: Unix timestamp of creation - example: 1677652288 - model: - type: string - description: Model used for completion - example: openai/gpt-4 - object: - type: string enum: - - chat.completion - system_fingerprint: - type: string - nullable: true - description: System fingerprint - example: fp_44709d6fcb - service_tier: + - moderation type: string - nullable: true - description: The service tier used by the upstream provider for this request - example: default - usage: - $ref: '#/components/schemas/ChatUsage' required: - id - - choices - - created - - model - - object - - system_fingerprint - description: Chat completion response + type: object + NotFoundResponse: + description: Not Found - Resource does not exist example: - id: chatcmpl-123 - object: chat.completion - created: 1677652288 - model: openai/gpt-4 - choices: - - index: 0 - message: - role: assistant - content: The capital of France is Paris. - finish_reason: stop - usage: - prompt_tokens: 10 - completion_tokens: 15 - total_tokens: 25 - ChatStreamToolCall: + error: + code: 404 + message: Resource not found + properties: + error: + $ref: '#/components/schemas/NotFoundResponseErrorData' + user_id: + nullable: true + type: string + required: + - error type: object + NotFoundResponseErrorData: + description: Error data for NotFoundResponse + example: + code: 404 + message: Resource not found properties: - index: + code: type: integer - description: Tool call index in the array - example: 0 - id: - type: string - description: Tool call identifier - example: call_abc123 - type: + message: type: string - enum: - - function - description: Tool call type - example: function - function: + metadata: + additionalProperties: + nullable: true + nullable: true type: object - properties: - name: - type: string - description: Function name - example: get_weather - arguments: - type: string - description: Function arguments as JSON string - example: '{"location": "..."}' - description: Function call details required: - - index - description: Tool call delta for streaming responses - example: - index: 0 - id: call_abc123 - type: function - function: - name: get_weather - arguments: '{"location": "..."}' - ChatStreamReasoningDetails: - type: array - items: - $ref: '#/components/schemas/ReasoningDetailUnion' - description: Reasoning details for extended thinking models - example: - - type: text - text: Let me think about this... - ChatStreamDelta: + - code + - message type: object + OpenAIResponseFunctionToolCall: + example: + arguments: '{"location":"San Francisco"}' + call_id: call-abc123 + id: fc-abc123 + name: get_weather + status: completed + type: function_call properties: - role: - type: string - enum: - - assistant - description: The role of the message author - example: assistant - content: - type: string - nullable: true - description: Message content delta - example: Hello - reasoning: + arguments: type: string - nullable: true - description: Reasoning content delta - example: I need to - refusal: + call_id: type: string - nullable: true - description: Refusal message delta - example: null - tool_calls: - type: array - items: - $ref: '#/components/schemas/ChatStreamToolCall' - description: Tool calls delta - reasoning_details: - $ref: '#/components/schemas/ChatStreamReasoningDetails' - audio: - allOf: - - $ref: '#/components/schemas/ChatAudioOutput' - - description: Audio output data - description: Delta changes in streaming response - example: - role: assistant - content: Hello - ChatStreamChoice: - type: object - properties: - delta: - $ref: '#/components/schemas/ChatStreamDelta' - finish_reason: - $ref: '#/components/schemas/ChatFinishReasonEnum' - index: - type: integer - description: Choice index - example: 0 - logprobs: - $ref: '#/components/schemas/ChatTokenLogprobs' - required: - - delta - - finish_reason - - index - description: Streaming completion choice chunk - example: - index: 0 - delta: - role: assistant - content: Hello - finish_reason: null - ChatStreamChunk: - type: object - properties: id: type: string - description: Unique chunk identifier - example: chatcmpl-123 - choices: - type: array - items: - $ref: '#/components/schemas/ChatStreamChoice' - description: List of streaming chunk choices - created: - type: integer - description: Unix timestamp of creation - example: 1677652288 - model: - type: string - description: Model used for completion - example: openai/gpt-4 - object: + name: type: string + status: + $ref: '#/components/schemas/ToolCallStatus' + type: enum: - - chat.completion.chunk - system_fingerprint: - type: string - description: System fingerprint - example: fp_44709d6fcb - service_tier: + - function_call type: string - nullable: true - description: The service tier used by the upstream provider for this request - example: default - error: - type: object - properties: - message: - type: string - description: Error message - example: Rate limit exceeded - code: - type: integer - format: int32 - description: Error code - example: 429 - required: - - message - - code - description: Error information - example: - message: Rate limit exceeded - code: 429 - usage: - $ref: '#/components/schemas/ChatUsage' required: - - id - - choices - - created - - model - - object - description: Streaming chat completion chunk - x-speakeasy-entity: ChatStreamChunk - example: - id: chatcmpl-123 - object: chat.completion.chunk - created: 1677652288 - model: openai/gpt-4 - choices: - - index: 0 - delta: - role: assistant - content: Hello - finish_reason: null - ChatSystemMessage: + - type + - call_id + - name + - arguments type: object + OpenAIResponseFunctionToolCallOutput: + example: + call_id: call-abc123 + output: '{"temperature":72,"conditions":"sunny"}' + type: function_call_output properties: - role: + call_id: type: string - enum: - - system - content: + id: + nullable: true + type: string + output: anyOf: - type: string - - type: array - items: - $ref: '#/components/schemas/ChatContentText' - description: System message content - example: You are a helpful assistant. - name: + - items: + discriminator: + mapping: + input_file: '#/components/schemas/InputFile' + input_image: '#/components/schemas/InputImage' + input_text: '#/components/schemas/InputText' + propertyName: type + oneOf: + - $ref: '#/components/schemas/InputText' + - $ref: '#/components/schemas/InputImage' + - $ref: '#/components/schemas/InputFile' + type: array + status: + allOf: + - $ref: '#/components/schemas/ToolCallStatus' + - nullable: true + type: + enum: + - function_call_output type: string - description: Optional name for the system message - example: Assistant Config required: - - role - - content - description: System message for setting behavior - example: - role: system - content: You are a helpful assistant. - name: Assistant Config - ChatUserMessage: + - type + - call_id + - output type: object + OpenAIResponseInputMessageItem: + example: + content: + - text: Hello, how are you? + type: input_text + id: msg-abc123 + role: user + type: message properties: - role: - type: string - enum: - - user content: + items: + discriminator: + mapping: + input_audio: '#/components/schemas/InputAudio' + input_file: '#/components/schemas/InputFile' + input_image: '#/components/schemas/InputImage' + input_text: '#/components/schemas/InputText' + propertyName: type + oneOf: + - $ref: '#/components/schemas/InputText' + - $ref: '#/components/schemas/InputImage' + - $ref: '#/components/schemas/InputFile' + - $ref: '#/components/schemas/InputAudio' + type: array + id: + type: string + role: anyOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/ChatContentItems' - description: User message content - example: What is the capital of France? - name: + - enum: + - user + type: string + - enum: + - system + type: string + - enum: + - developer + type: string + type: + enum: + - message type: string - description: Optional name for the user - example: User required: + - id - role - content - description: User message - example: - role: user - content: What is the capital of France? - ChatDeveloperMessage: type: object + OpenAIResponsesAnnotation: + anyOf: + - $ref: '#/components/schemas/FileCitation' + - $ref: '#/components/schemas/URLCitation' + - $ref: '#/components/schemas/FilePath' + example: + file_id: file-abc123 + filename: research_paper.pdf + index: 0 + type: file_citation + OpenAIResponsesImageGenCallCompleted: + example: + item_id: ig_abc123 + output_index: 0 + sequence_number: 4 + type: response.image_generation_call.completed properties: - role: + item_id: type: string + output_index: + type: integer + sequence_number: + type: integer + type: enum: - - developer - content: - anyOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/ChatContentText' - description: Developer message content - example: This is a message from the developer. - name: + - response.image_generation_call.completed type: string - description: Optional name for the developer message - example: Developer required: - - role - - content - description: Developer message - example: - role: developer - content: This is a message from the developer. - ChatToolMessage: + - type + - item_id + - output_index + - sequence_number type: object + OpenAIResponsesImageGenCallGenerating: + example: + item_id: ig_abc123 + output_index: 0 + sequence_number: 2 + type: response.image_generation_call.generating properties: - role: + item_id: type: string + output_index: + type: integer + sequence_number: + type: integer + type: enum: - - tool - content: - anyOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/ChatContentItems' - description: Tool response content - example: The weather in San Francisco is 72°F and sunny. - tool_call_id: + - response.image_generation_call.generating type: string - description: ID of the assistant message tool call this message responds to - example: call_abc123 required: - - role - - content - - tool_call_id - description: Tool response message - example: - role: tool - content: The weather in San Francisco is 72°F and sunny. - tool_call_id: call_abc123 - ChatMessages: - oneOf: - - $ref: '#/components/schemas/ChatSystemMessage' - - $ref: '#/components/schemas/ChatUserMessage' - - $ref: '#/components/schemas/ChatDeveloperMessage' - - $ref: '#/components/schemas/ChatAssistantMessage' - - $ref: '#/components/schemas/ChatToolMessage' - discriminator: - propertyName: role - mapping: - system: '#/components/schemas/ChatSystemMessage' - user: '#/components/schemas/ChatUserMessage' - developer: '#/components/schemas/ChatDeveloperMessage' - assistant: '#/components/schemas/ChatAssistantMessage' - tool: '#/components/schemas/ChatToolMessage' - description: Chat completion message with role-based discrimination - example: - role: user - content: What is the capital of France? - ModelName: - type: string - description: Model to use for completion - example: openai/gpt-4 - ChatModelNames: - type: array - items: - allOf: - - $ref: '#/components/schemas/ModelName' - - description: Available OpenRouter chat completion models - description: Models to use for completion - example: - - openai/gpt-4 - - openai/gpt-4o - ChatReasoningSummaryVerbosityEnum: - type: string - nullable: true - enum: - - auto - - concise - - detailed - - null - example: concise - ChatFormatTextConfig: + - type + - item_id + - output_index + - sequence_number type: object + OpenAIResponsesImageGenCallInProgress: + example: + item_id: ig_abc123 + output_index: 0 + sequence_number: 1 + type: response.image_generation_call.in_progress properties: - type: + item_id: type: string + output_index: + type: integer + sequence_number: + type: integer + type: enum: - - text + - response.image_generation_call.in_progress + type: string required: - type - description: Default text response format - example: - type: text - ChatJsonSchemaConfig: + - item_id + - output_index + - sequence_number type: object + OpenAIResponsesImageGenCallPartialImage: + example: + item_id: ig_abc123 + output_index: 0 + partial_image_b64: iVBORw0KGgo... + partial_image_index: 0 + sequence_number: 3 + type: response.image_generation_call.partial_image properties: - name: + item_id: type: string - maxLength: 64 - description: Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) - example: math_response - description: + output_index: + type: integer + partial_image_b64: type: string - description: Schema description for the model - example: A mathematical response - schema: - type: object - additionalProperties: - nullable: true - description: JSON Schema object - example: - type: object - properties: - answer: - type: number - required: - - answer - strict: - type: boolean - nullable: true - description: Enable strict schema adherence - example: false - required: - - name - description: JSON Schema configuration object - example: - name: math_response - description: A mathematical response - schema: - type: object - properties: - answer: - type: number - required: - - answer - strict: true - ChatFormatJsonSchemaConfig: - type: object - properties: + partial_image_index: + type: integer + sequence_number: + type: integer type: - type: string enum: - - json_schema - json_schema: - $ref: '#/components/schemas/ChatJsonSchemaConfig' + - response.image_generation_call.partial_image + type: string required: - type - - json_schema - description: JSON Schema response format for structured outputs - example: - type: json_schema - json_schema: - name: math_response - schema: - type: object - properties: - answer: - type: number - required: - - answer - ChatFormatGrammarConfig: + - item_id + - output_index + - sequence_number + - partial_image_b64 + - partial_image_index type: object + OpenAIResponsesRefusalContent: + example: + refusal: I'm sorry, I cannot assist with that request + type: refusal properties: - type: + refusal: type: string + type: enum: - - grammar - grammar: + - refusal type: string - description: Custom grammar for text generation - example: root ::= "yes" | "no" required: - type - - grammar - description: Custom grammar response format - example: - type: grammar - grammar: root ::= "yes" | "no" - ChatFormatPythonConfig: + - refusal type: object - properties: - type: - type: string - enum: - - python + OpenAIResponsesResponseStatus: + enum: + - completed + - incomplete + - in_progress + - failed + - cancelled + - queued + example: completed + type: string + OpenAIResponsesSearchCompleted: + example: + item_id: ws_abc123 + output_index: 0 + sequence_number: 5 + type: response.web_search_call.completed + properties: + item_id: + type: string + output_index: + type: integer + sequence_number: + type: integer + type: + enum: + - response.web_search_call.completed + type: string required: - type - description: Python code response format - example: - type: python - ChatStreamOptions: + - item_id + - output_index + - sequence_number type: object + OpenAIResponsesToolChoice: + anyOf: + - enum: + - auto + type: string + - enum: + - none + type: string + - enum: + - required + type: string + - properties: + name: + type: string + type: + enum: + - function + type: string + required: + - type + - name + type: object + - properties: + type: + anyOf: + - enum: + - web_search_preview_2025_03_11 + type: string + - enum: + - web_search_preview + type: string + required: + - type + type: object + - $ref: '#/components/schemas/ToolChoiceAllowed' + example: auto + OpenAIResponsesTruncation: + enum: + - auto + - disabled + - null + example: auto nullable: true - properties: - include_usage: - type: boolean - description: 'Deprecated: This field has no effect. Full usage details are always included.' - example: true - deprecated: true - description: Streaming configuration options + type: string + OpenAIResponsesUsage: example: - include_usage: true - ChatNamedToolChoice: - type: object + input_tokens: 100 + input_tokens_details: + cached_tokens: 0 + output_tokens: 50 + output_tokens_details: + reasoning_tokens: 0 + total_tokens: 150 properties: - type: - type: string - enum: - - function - function: + input_tokens: + type: integer + input_tokens_details: + properties: + cached_tokens: + type: integer + required: + - cached_tokens type: object + output_tokens: + type: integer + output_tokens_details: properties: - name: - type: string - description: Function name to call - example: get_weather + reasoning_tokens: + type: integer required: - - name + - reasoning_tokens + type: object + total_tokens: + type: integer required: - - type - - function - description: Named tool choice for specific function + - input_tokens + - input_tokens_details + - output_tokens + - output_tokens_details + - total_tokens + type: object + OpenAIResponsesWebSearchCallInProgress: example: - type: function - function: - name: get_weather - ChatToolChoice: - anyOf: - - type: string - enum: - - none - - type: string - enum: - - auto - - type: string + item_id: ws_abc123 + output_index: 0 + sequence_number: 1 + type: response.web_search_call.in_progress + properties: + item_id: + type: string + output_index: + type: integer + sequence_number: + type: integer + type: enum: - - required - - $ref: '#/components/schemas/ChatNamedToolChoice' - description: Tool choice configuration - example: auto - ChatWebSearchShorthand: + - response.web_search_call.in_progress + type: string + required: + - type + - item_id + - output_index + - sequence_number type: object + OpenAIResponsesWebSearchCallSearching: + example: + item_id: ws_abc123 + output_index: 0 + sequence_number: 2 + type: response.web_search_call.searching properties: - type: + item_id: type: string - enum: - - web_search - - web_search_preview - - web_search_preview_2025_03_11 - - web_search_2025_08_26 - engine: - $ref: '#/components/schemas/WebSearchEngineEnum' - max_results: + output_index: type: integer - description: >- - Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and - Parallel engines; ignored with native provider search. - example: 5 - max_total_results: + sequence_number: type: integer - description: >- - Maximum total number of search results across all search calls in a single request. Once this limit is - reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic - loops. - example: 20 - search_context_size: - $ref: '#/components/schemas/SearchQualityLevel' - user_location: - $ref: '#/components/schemas/WebSearchUserLocationServerTool' - allowed_domains: - type: array - items: - type: string - description: >- - Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, - OpenAI, xAI). Not supported with Firecrawl or Perplexity. - excluded_domains: - type: array - items: - type: string - description: >- - Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported - with Firecrawl, OpenAI (silently ignored), or Perplexity. - parameters: - $ref: '#/components/schemas/WebSearchConfig' + type: + enum: + - response.web_search_call.searching + type: string required: - type - description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search. + - item_id + - output_index + - sequence_number + type: object + OpenResponsesCreatedEvent: + allOf: + - $ref: '#/components/schemas/CreatedEvent' + - properties: + response: + $ref: '#/components/schemas/OpenResponsesResult' + type: object + description: Event emitted when a response is created example: - type: web_search_preview - ChatFunctionTool: - anyOf: - - type: object - properties: - type: - type: string - enum: - - function - function: - type: object - properties: - name: - type: string - maxLength: 64 - description: Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) - example: get_weather - description: - type: string - description: Function description for the model - example: Get the current weather for a location - parameters: - type: object - additionalProperties: - nullable: true - description: Function parameters as JSON Schema object - example: - type: object - properties: - location: - type: string - description: City name - required: - - location - strict: - type: boolean - nullable: true - description: Enable strict schema adherence - example: false - required: - - name - description: Function definition for tool calling - example: - name: get_weather - description: Get the current weather for a location - parameters: - type: object - properties: - location: - type: string - description: City name - required: - - location - cache_control: - $ref: '#/components/schemas/ChatContentCacheControl' - required: - - type - - function - - $ref: '#/components/schemas/DatetimeServerTool' - - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - - $ref: '#/components/schemas/ChatWebSearchShorthand' - description: Tool definition for function calling (regular function or OpenRouter built-in server tool) + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: in_progress + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 0 + type: response.created + OpenResponsesInProgressEvent: + allOf: + - $ref: '#/components/schemas/InProgressEvent' + - properties: + response: + $ref: '#/components/schemas/OpenResponsesResult' + type: object + description: Event emitted when a response is in progress example: - type: function - function: - name: get_weather - description: Get the current weather for a location - parameters: - type: object - properties: - location: - type: string - description: City name - unit: - type: string - enum: - - celsius - - fahrenheit - required: - - location - ChatDebugOptions: - type: object - properties: - echo_upstream_body: - type: boolean - 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 - description: Debug options for inspecting request transformations (streaming only) + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: in_progress + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 1 + type: response.in_progress + OpenResponsesLogProbs: + description: Log probability information for a token example: - echo_upstream_body: true - ChatRequest: - type: object + logprob: -0.1 + token: world + top_logprobs: + - logprob: -0.5 + token: hello properties: - provider: - $ref: '#/components/schemas/ProviderPreferences' - plugins: - type: array + bytes: items: - oneOf: - - $ref: '#/components/schemas/AutoRouterPlugin' - - $ref: '#/components/schemas/ModerationPlugin' - - $ref: '#/components/schemas/WebSearchPlugin' - - $ref: '#/components/schemas/FileParserPlugin' - - $ref: '#/components/schemas/ResponseHealingPlugin' - - $ref: '#/components/schemas/ContextCompressionPlugin' - discriminator: - propertyName: id - mapping: - auto-router: '#/components/schemas/AutoRouterPlugin' - moderation: '#/components/schemas/ModerationPlugin' - web: '#/components/schemas/WebSearchPlugin' - file-parser: '#/components/schemas/FileParserPlugin' - response-healing: '#/components/schemas/ResponseHealingPlugin' - context-compression: '#/components/schemas/ContextCompressionPlugin' - description: Plugins you want to enable for this request, including their settings. - route: - $ref: '#/components/schemas/DeprecatedRoute' - user: - type: string - description: Unique user identifier - example: user-123 - session_id: - type: string - maxLength: 256 - description: >- - A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for - observability. If provided in both the request body and the x-session-id header, the body value takes - precedence. Maximum of 256 characters. - trace: - $ref: '#/components/schemas/TraceConfig' - messages: + type: integer type: array - items: - $ref: '#/components/schemas/ChatMessages' - minItems: 1 - description: List of messages for the conversation - example: - - role: user - content: Hello! - model: - $ref: '#/components/schemas/ModelName' - models: - $ref: '#/components/schemas/ChatModelNames' - frequency_penalty: - type: number + logprob: format: double - description: Frequency penalty (-2.0 to 2.0) - example: 0 - logit_bias: - type: object - nullable: true - additionalProperties: - type: number - format: double - description: Token logit bias adjustments - example: - '50256': -100 - logprobs: - type: boolean - nullable: true - description: Return log probabilities - example: false - top_logprobs: - type: integer - description: Number of top log probabilities to return (0-20) - example: 5 - max_completion_tokens: - type: integer - description: Maximum tokens in completion - example: 100 - max_tokens: - type: integer - description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.' - example: 100 - metadata: - type: object - additionalProperties: - type: string - description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) - example: - user_id: user-123 - session_id: session-456 - presence_penalty: type: number - format: double - description: Presence penalty (-2.0 to 2.0) - example: 0 - reasoning: - type: object - properties: - effort: - type: string + token: + type: string + top_logprobs: + items: + $ref: '#/components/schemas/OpenResponsesTopLogprobs' + type: array + required: + - logprob + - token + type: object + OpenResponsesResult: + allOf: + - $ref: '#/components/schemas/BaseResponsesResult' + - properties: + output: + items: + $ref: '#/components/schemas/OutputItems' + type: array + service_tier: nullable: true - enum: - - xhigh - - high - - medium - - low - - minimal - - none - - null - description: Constrains effort on reasoning for reasoning models - example: medium - summary: - $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum' - description: Configuration options for reasoning models - example: - effort: medium - summary: concise - response_format: - oneOf: - - $ref: '#/components/schemas/ChatFormatTextConfig' - - $ref: '#/components/schemas/FormatJsonObjectConfig' - - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig' - - $ref: '#/components/schemas/ChatFormatGrammarConfig' - - $ref: '#/components/schemas/ChatFormatPythonConfig' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/ChatFormatTextConfig' - json_object: '#/components/schemas/FormatJsonObjectConfig' - json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig' - grammar: '#/components/schemas/ChatFormatGrammarConfig' - python: '#/components/schemas/ChatFormatPythonConfig' - description: Response format configuration - example: - type: json_object - seed: - type: integer - description: Random seed for deterministic outputs - example: 42 - stop: - anyOf: - - type: string - - type: array - items: - type: string - maxItems: 4 - - nullable: true - description: Stop sequences (up to 4) - example: - - |+ - - stream: - type: boolean - default: false - description: Enable streaming response - example: false - stream_options: - $ref: '#/components/schemas/ChatStreamOptions' - temperature: - type: number - format: double - description: Sampling temperature (0-2) - example: 0.7 - parallel_tool_calls: - type: boolean - nullable: true - 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 - tool_choice: - $ref: '#/components/schemas/ChatToolChoice' - tools: - type: array - items: - $ref: '#/components/schemas/ChatFunctionTool' - description: Available tools for function calling - example: - - type: function - function: - name: get_weather - description: Get weather - top_p: - type: number - format: double - description: Nucleus sampling parameter (0-1) - example: 1 - debug: - $ref: '#/components/schemas/ChatDebugOptions' - image_config: + type: string + usage: + $ref: '#/components/schemas/Usage' type: object - additionalProperties: - anyOf: - - type: string - - type: number - format: double - - type: array - items: - nullable: true - 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' - modalities: - type: array - items: - type: string - enum: - - text - - image - - audio - description: Output modalities for the response. Supported values are "text", "image", and "audio". - example: - - text - - image - cache_control: - allOf: - - $ref: '#/components/schemas/AnthropicCacheControlDirective' - - description: >- - Enable automatic prompt caching. When set, the system automatically applies cache breakpoints to the - last cacheable block in the request. Currently supported for Anthropic Claude models. - service_tier: - type: string - nullable: true - enum: - - auto - - default - - flex - - priority - - scale - - null - description: The service tier to use for processing this request. - example: auto - required: - - messages - description: Chat completion request parameters + description: Complete non-streaming response from the Responses API example: - messages: - - role: system - content: You are a helpful assistant. - - role: user - content: What is the capital of France? - model: openai/gpt-4 - temperature: 0.7 - max_tokens: 150 - GoneResponseErrorData: - type: object + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: + - content: + - annotations: [] + text: Hello! How can I help you today? + type: output_text + id: msg-abc123 + role: assistant + status: completed + type: message + parallel_tool_calls: true + status: completed + temperature: null + tool_choice: auto + tools: [] + top_p: null + usage: + input_tokens: 10 + input_tokens_details: + cached_tokens: 0 + output_tokens: 25 + output_tokens_details: + reasoning_tokens: 0 + total_tokens: 35 + OpenResponsesTopLogprobs: + description: Alternative token with its log probability + example: + logprob: -0.5 + token: hello properties: - code: - type: integer - message: + bytes: + items: + type: integer + type: array + logprob: + format: double + type: number + token: type: string - metadata: - type: object - nullable: true - additionalProperties: - nullable: true - required: - - code - - message - 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. - GoneResponse: type: object + OpenRouterWebSearchServerTool: + description: 'OpenRouter built-in server tool: searches the web for current information' + example: + parameters: + max_results: 5 + type: openrouter:web_search properties: - error: - $ref: '#/components/schemas/GoneResponseErrorData' - user_id: + parameters: + $ref: '#/components/schemas/WebSearchConfig' + type: + enum: + - openrouter:web_search type: string - nullable: true required: - - error - 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. - ProviderResponse: + - type type: object + ORAnthropicContentBlock: + discriminator: + mapping: + bash_code_execution_tool_result: '#/components/schemas/AnthropicBashCodeExecutionToolResult' + code_execution_tool_result: '#/components/schemas/AnthropicCodeExecutionToolResult' + compaction: '#/components/schemas/AnthropicCompactionBlock' + container_upload: '#/components/schemas/AnthropicContainerUpload' + redacted_thinking: '#/components/schemas/AnthropicRedactedThinkingBlock' + server_tool_use: '#/components/schemas/AnthropicServerToolUseBlock' + text: '#/components/schemas/AnthropicTextBlock' + text_editor_code_execution_tool_result: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' + thinking: '#/components/schemas/AnthropicThinkingBlock' + tool_search_tool_result: '#/components/schemas/AnthropicToolSearchToolResult' + tool_use: '#/components/schemas/AnthropicToolUseBlock' + web_fetch_tool_result: '#/components/schemas/AnthropicWebFetchToolResult' + web_search_tool_result: '#/components/schemas/AnthropicWebSearchToolResult' + propertyName: type + example: + citations: null + text: Hello, world! + type: text + oneOf: + - $ref: '#/components/schemas/AnthropicTextBlock' + - $ref: '#/components/schemas/AnthropicToolUseBlock' + - $ref: '#/components/schemas/AnthropicThinkingBlock' + - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' + - $ref: '#/components/schemas/AnthropicServerToolUseBlock' + - $ref: '#/components/schemas/AnthropicWebSearchToolResult' + - $ref: '#/components/schemas/AnthropicWebFetchToolResult' + - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' + - $ref: '#/components/schemas/AnthropicToolSearchToolResult' + - $ref: '#/components/schemas/AnthropicContainerUpload' + - $ref: '#/components/schemas/AnthropicCompactionBlock' + ORAnthropicStopReason: + enum: + - end_turn + - max_tokens + - stop_sequence + - tool_use + - pause_turn + - refusal + - compaction + - null + example: end_turn + nullable: true + type: string + OutputDatetimeItem: + description: An openrouter:datetime server tool output item + example: + datetime: '2026-03-12T14:30:00.000Z' + id: dt_tmp_abc123 + status: completed + timezone: UTC + type: openrouter:datetime properties: - id: + datetime: + description: ISO 8601 datetime string type: string - description: Upstream provider response identifier - example: chatcmpl-abc123 - endpoint_id: + id: type: string - description: Internal endpoint identifier - example: ep_abc123 - model_permaslug: - type: string - description: Canonical model slug - example: openai/gpt-4 - provider_name: + status: + $ref: '#/components/schemas/ToolCallStatus' + timezone: + description: IANA timezone name type: string + type: enum: - - AnyScale - - Atoma - - Cent-ML - - CrofAI - - Enfer - - GoPomelo - - HuggingFace - - Hyperbolic 2 - - InoCloud - - Kluster - - Lambda - - Lepton - - Lynn 2 - - Lynn - - Mancer - - Meta - - Modal - - Nineteen - - OctoAI - - Recursal - - Reflection - - Replicate - - SambaNova 2 - - SF Compute - - Targon - - Together 2 - - Ubicloud - - 01.AI - - AkashML - - AI21 - - AionLabs - - Alibaba - - Ambient - - Amazon Bedrock - - Amazon Nova - - Anthropic - - Arcee AI - - AtlasCloud - - Avian - - Azure - - BaseTen - - BytePlus - - Black Forest Labs - - Cerebras - - Chutes - - Cirrascale - - Clarifai - - Cloudflare - - Cohere - - Crusoe - - DeepInfra - - DeepSeek - - Featherless - - Fireworks - - Friendli - - GMICloud - - Google - - Google AI Studio - - Groq - - Hyperbolic - - Inception - - Inceptron - - InferenceNet - - Ionstream - - Infermatic - - Io Net - - Inflection - - Liquid - - Mara - - Mancer 2 - - Minimax - - ModelRun - - Mistral - - Modular - - Moonshot AI - - Morph - - NCompass - - Nebius - - NextBit - - Novita - - Nvidia - - OpenAI - - OpenInference - - Parasail - - Perplexity - - Phala - - Reka - - Relace - - SambaNova - - Seed - - SiliconFlow - - Sourceful - - StepFun - - Stealth - - StreamLake - - Switchpoint - - Together - - Upstage - - Venice - - WandB - - Xiaomi - - xAI - - Z.AI - - FakeProvider - description: Name of the provider - example: OpenAI - status: - type: number - nullable: true - description: HTTP status code from the provider - example: 200 - latency: - type: number - description: Response latency in milliseconds - example: 1200 - is_byok: - type: boolean - description: Whether the request used a bring-your-own-key - example: false + - openrouter:datetime + type: string required: - status - description: Details of a provider response for a generation attempt - example: - id: chatcmpl-abc123 - endpoint_id: ep_abc123 - model_permaslug: openai/gpt-4 - provider_name: OpenAI - status: 200 - latency: 1200 - is_byok: false - ModelsCountResponse: + - type + - datetime + - timezone type: object - properties: - data: + OutputFileSearchCallItem: + allOf: + - $ref: '#/components/schemas/OutputItemFileSearchCall' + - properties: {} type: object - properties: - count: - type: integer - description: Total number of available models - example: 150 - required: - - count - description: Model count data - example: - count: 150 - required: - - data - description: Model count data example: - data: - count: 150 - PublicPricing: + id: fs-abc123 + queries: + - search term + results: [] + status: completed + type: file_search_call + OutputFunctionCallItem: + allOf: + - $ref: '#/components/schemas/OutputItemFunctionCall' + - properties: {} + type: object + example: + arguments: '{"location":"San Francisco"}' + call_id: call-abc123 + id: fc-abc123 + name: get_weather + status: completed + type: function_call + OutputImageGenerationCallItem: + allOf: + - $ref: '#/components/schemas/OutputItemImageGenerationCall' + - properties: {} + type: object + example: + id: img-abc123 + result: null + status: completed + type: image_generation_call + OutputItemAddedEvent: + description: Event emitted when a new output item is added to the response + example: + item: + content: [] + id: item-1 + role: assistant + status: in_progress + type: message + output_index: 0 + sequence_number: 2 + type: response.output_item.added + properties: + item: + discriminator: + mapping: + file_search_call: '#/components/schemas/OutputItemFileSearchCall' + function_call: '#/components/schemas/OutputItemFunctionCall' + image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' + message: '#/components/schemas/OutputMessage' + reasoning: '#/components/schemas/OutputItemReasoning' + web_search_call: '#/components/schemas/OutputItemWebSearchCall' + propertyName: type + oneOf: + - $ref: '#/components/schemas/OutputMessage' + - $ref: '#/components/schemas/OutputItemReasoning' + - $ref: '#/components/schemas/OutputItemFunctionCall' + - $ref: '#/components/schemas/OutputItemWebSearchCall' + - $ref: '#/components/schemas/OutputItemFileSearchCall' + - $ref: '#/components/schemas/OutputItemImageGenerationCall' + output_index: + type: integer + sequence_number: + type: integer + type: + enum: + - response.output_item.added + type: string + required: + - type + - output_index + - item + - sequence_number type: object + OutputItemDoneEvent: + description: Event emitted when an output item is complete + example: + item: + content: + - annotations: [] + text: Hello! How can I help you? + type: output_text + id: item-1 + role: assistant + status: completed + type: message + output_index: 0 + sequence_number: 8 + type: response.output_item.done properties: - prompt: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - completion: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - request: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image_token: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image_output: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - audio: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - audio_output: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_audio_cache: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - web_search: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - internal_reasoning: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_cache_read: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_cache_write: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - discount: - type: number + item: + discriminator: + mapping: + file_search_call: '#/components/schemas/OutputItemFileSearchCall' + function_call: '#/components/schemas/OutputItemFunctionCall' + image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' + message: '#/components/schemas/OutputMessage' + reasoning: '#/components/schemas/OutputItemReasoning' + web_search_call: '#/components/schemas/OutputItemWebSearchCall' + propertyName: type + oneOf: + - $ref: '#/components/schemas/OutputMessage' + - $ref: '#/components/schemas/OutputItemReasoning' + - $ref: '#/components/schemas/OutputItemFunctionCall' + - $ref: '#/components/schemas/OutputItemWebSearchCall' + - $ref: '#/components/schemas/OutputItemFileSearchCall' + - $ref: '#/components/schemas/OutputItemImageGenerationCall' + output_index: + type: integer + sequence_number: + type: integer + type: + enum: + - response.output_item.done + type: string required: - - prompt - - completion - description: Pricing information for the model - example: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - ModelGroup: - type: string - enum: - - Router - - Media - - Other - - GPT - - Claude - - Gemini - - Gemma - - Grok - - Cohere - - Nova - - Qwen - - Yi - - DeepSeek - - Mistral - - Llama2 - - Llama3 - - Llama4 - - PaLM - - RWKV - - Qwen3 - example: GPT - description: Tokenizer type used by the model - InputModality: - type: string - enum: - - text - - image - - file - - audio - - video - example: text - OutputModality: - type: string - enum: - - text - - image - - embeddings - - audio - - video - - rerank - example: text - ModelArchitecture: + - type + - output_index + - item + - sequence_number type: object + OutputItemFileSearchCall: + example: + id: filesearch-abc123 + queries: + - machine learning algorithms + - neural networks + status: completed + type: file_search_call properties: - tokenizer: - $ref: '#/components/schemas/ModelGroup' - instruct_type: - type: string - nullable: true - enum: - - none - - airoboros - - alpaca - - alpaca-modif - - chatml - - claude - - code-llama - - gemma - - llama2 - - llama3 - - mistral - - nemotron - - neural - - openchat - - phi3 - - rwkv - - vicuna - - zephyr - - deepseek-r1 - - deepseek-v3.1 - - qwq - - qwen3 - - null - example: chatml - description: Instruction format type - modality: + id: type: string - nullable: true - description: Primary modality of the model - example: text->text - input_modalities: - type: array + queries: items: - $ref: '#/components/schemas/InputModality' - description: Supported input modalities - output_modalities: + type: string type: array - items: - $ref: '#/components/schemas/OutputModality' - description: Supported output modalities + status: + $ref: '#/components/schemas/WebSearchStatus' + type: + enum: + - file_search_call + type: string required: - - modality - - input_modalities - - output_modalities - description: Model architecture information - example: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - TopProviderInfo: + - type + - id + - queries + - status type: object + OutputItemFunctionCall: + example: + arguments: '{"location":"San Francisco","unit":"celsius"}' + call_id: call-abc123 + id: call-abc123 + name: get_weather + type: function_call properties: - context_length: - type: integer - description: Context length from the top provider - example: 8192 - max_completion_tokens: - type: integer - description: Maximum completion tokens from the top provider - example: 4096 - is_moderated: - type: boolean - description: Whether the top provider moderates content - example: true + arguments: + type: string + call_id: + type: string + id: + type: string + name: + type: string + status: + anyOf: + - enum: + - completed + type: string + - enum: + - incomplete + type: string + - enum: + - in_progress + type: string + type: + enum: + - function_call + type: string required: - - is_moderated - description: Information about the top provider for this model - example: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - PerRequestLimits: + - type + - name + - arguments + - call_id type: object - nullable: true - properties: - prompt_tokens: - type: number - example: 1000 - description: Maximum prompt tokens per request - completion_tokens: - type: number - example: 1000 - description: Maximum completion tokens per request - required: - - prompt_tokens - - completion_tokens - description: Per-request token limits + OutputItemImageGenerationCall: example: - prompt_tokens: 1000 - completion_tokens: 1000 - Parameter: - type: string - enum: - - temperature - - top_p - - top_k - - min_p - - top_a - - frequency_penalty - - presence_penalty - - repetition_penalty - - max_tokens - - max_completion_tokens - - logit_bias - - logprobs - - top_logprobs - - seed - - response_format - - structured_outputs - - stop - - tools - - tool_choice - - parallel_tool_calls - - include_reasoning - - reasoning - - reasoning_effort - - web_search_options - - verbosity - example: temperature - DefaultParameters: - type: object - nullable: true + id: imagegen-abc123 + result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== + status: completed + type: image_generation_call properties: - temperature: - type: number - format: double - top_p: - type: number - format: double - top_k: - type: integer + id: + type: string + result: + default: null nullable: true - minimum: 0 - frequency_penalty: - type: number - format: double - presence_penalty: - type: number - format: double - repetition_penalty: - type: number - format: double - additionalProperties: false - description: Default parameters for this model - example: - temperature: 0.7 - top_p: 0.9 - top_k: 0 - frequency_penalty: 0 - presence_penalty: 0 - repetition_penalty: 1 - ModelLinks: - type: object - properties: - details: type: string - description: URL for the model details/endpoints API - example: /api/v1/models/openai/gpt-5.4/endpoints + status: + $ref: '#/components/schemas/ImageGenerationStatus' + type: + enum: + - image_generation_call + type: string required: - - details - description: Related API endpoints and resources for this model. - example: - details: /api/v1/models/openai/gpt-5.4/endpoints - Model: + - type + - id + - status type: object + OutputItemReasoning: + example: + id: reasoning-abc123 + summary: + - text: Analyzed the problem using first principles + type: summary_text + type: reasoning properties: - id: - type: string - description: Unique identifier for the model - example: openai/gpt-4 - canonical_slug: - type: string - description: Canonical slug for the model - example: openai/gpt-4 - hugging_face_id: - type: string + content: + items: + $ref: '#/components/schemas/ReasoningTextContent' + type: array + encrypted_content: nullable: true - description: Hugging Face model identifier, if applicable - example: microsoft/DialoGPT-medium - name: type: string - description: Display name of the model - example: GPT-4 - created: - type: integer - description: Unix timestamp of when the model was created - example: 1692901234 - description: + id: type: string - description: Description of the model - example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - $ref: '#/components/schemas/PublicPricing' - context_length: - type: integer - description: Maximum context length in tokens - example: 8192 - architecture: - $ref: '#/components/schemas/ModelArchitecture' - top_provider: - $ref: '#/components/schemas/TopProviderInfo' - per_request_limits: - $ref: '#/components/schemas/PerRequestLimits' - supported_parameters: - type: array + status: + anyOf: + - enum: + - completed + type: string + - enum: + - incomplete + type: string + - enum: + - in_progress + type: string + summary: items: - $ref: '#/components/schemas/Parameter' - description: List of supported parameters for this model - default_parameters: - $ref: '#/components/schemas/DefaultParameters' - knowledge_cutoff: - type: string - nullable: true - 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' - expiration_date: + $ref: '#/components/schemas/ReasoningSummaryText' + type: array + type: + enum: + - reasoning type: string - nullable: true - 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' - links: - $ref: '#/components/schemas/ModelLinks' required: + - type - id - - canonical_slug - - name - - created - - pricing - - context_length - - architecture - - top_provider - - per_request_limits - - supported_parameters - - default_parameters - - links - description: Information about an AI model available on OpenRouter - example: - id: openai/gpt-4 - canonical_slug: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - top_provider: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - per_request_limits: null - supported_parameters: - - temperature - - top_p - - max_tokens - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/gpt-5.4/endpoints - ModelsListResponseData: - type: array - items: - $ref: '#/components/schemas/Model' - description: List of available models + - summary + type: object + OutputItems: + description: An output item from the response + discriminator: + mapping: + file_search_call: '#/components/schemas/OutputFileSearchCallItem' + function_call: '#/components/schemas/OutputFunctionCallItem' + image_generation_call: '#/components/schemas/OutputImageGenerationCallItem' + message: '#/components/schemas/OutputMessageItem' + openrouter:datetime: '#/components/schemas/OutputDatetimeItem' + openrouter:web_search: '#/components/schemas/OutputWebSearchServerToolItem' + reasoning: '#/components/schemas/OutputReasoningItem' + web_search_call: '#/components/schemas/OutputWebSearchCallItem' + propertyName: type example: - - id: openai/gpt-4 - canonical_slug: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - top_provider: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - per_request_limits: null - supported_parameters: - - temperature - - top_p - - max_tokens - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/gpt-5.4/endpoints - ModelsListResponse: - type: object - properties: - data: - $ref: '#/components/schemas/ModelsListResponseData' - required: - - data - description: List of available models + content: + - text: Hello! How can I help you today? + type: output_text + id: msg-abc123 + role: assistant + status: completed + type: message + oneOf: + - $ref: '#/components/schemas/OutputMessageItem' + - $ref: '#/components/schemas/OutputReasoningItem' + - $ref: '#/components/schemas/OutputFunctionCallItem' + - $ref: '#/components/schemas/OutputWebSearchCallItem' + - $ref: '#/components/schemas/OutputFileSearchCallItem' + - $ref: '#/components/schemas/OutputImageGenerationCallItem' + - $ref: '#/components/schemas/OutputDatetimeItem' + - $ref: '#/components/schemas/OutputWebSearchServerToolItem' + OutputItemWebSearchCall: example: - data: - - id: openai/gpt-4 - canonical_slug: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - top_provider: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - per_request_limits: null - supported_parameters: - - temperature - - top_p - - max_tokens - - frequency_penalty - - presence_penalty - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/gpt-5.4/endpoints - InstructType: - type: string - nullable: true - enum: - - none - - airoboros - - alpaca - - alpaca-modif - - chatml - - claude - - code-llama - - gemma - - llama2 - - llama3 - - mistral - - nemotron - - neural - - openchat - - phi3 - - rwkv - - vicuna - - zephyr - - deepseek-r1 - - deepseek-v3.1 - - qwq - - qwen3 - - null - example: chatml - description: Instruction format type - EndpointStatus: - type: integer - enum: - - 0 - - -1 - - -2 - - -3 - - -5 - - -10 - example: 0 - PercentileStats: - type: object - nullable: true + action: + query: OpenAI API + type: search + id: search-abc123 + status: completed + type: web_search_call properties: - p50: - type: number - format: double - description: Median (50th percentile) - example: 25.5 - p75: - type: number - format: double - description: 75th percentile - example: 35.2 - p90: - type: number - format: double - description: 90th percentile - example: 48.7 - p99: - type: number - format: double - description: 99th percentile - example: 85.3 + action: + oneOf: + - properties: + queries: + items: + type: string + type: array + query: + type: string + sources: + items: + $ref: '#/components/schemas/WebSearchSource' + type: array + type: + enum: + - search + type: string + required: + - type + - query + type: object + - properties: + type: + enum: + - open_page + type: string + url: + nullable: true + type: string + required: + - type + type: object + - properties: + pattern: + type: string + type: + enum: + - find_in_page + type: string + url: + type: string + required: + - type + - pattern + - url + type: object + id: + type: string + status: + $ref: '#/components/schemas/WebSearchStatus' + type: + enum: + - web_search_call + type: string required: - - p50 - - p75 - - p90 - - p99 - example: - p50: 25.5 - p75: 35.2 - p90: 48.7 - p99: 85.3 - 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. - PublicEndpoint: + - type + - id + - action + - status type: object + OutputMessage: + example: + content: + - text: Hello! How can I help you today? + type: output_text + id: msg-abc123 + role: assistant + status: completed + type: message properties: - name: - type: string - model_id: + content: + items: + anyOf: + - $ref: '#/components/schemas/ResponseOutputText' + - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' + type: array + id: type: string - description: The unique identifier for the model (permaslug) - example: openai/gpt-4 - model_name: + phase: + anyOf: + - enum: + - commentary + type: string + - enum: + - final_answer + type: string + - nullable: true + description: >- + The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` + for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve + and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + role: + enum: + - assistant type: string - context_length: - type: integer - pricing: - type: object - properties: - prompt: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - completion: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - request: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image_token: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - image_output: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - audio: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - audio_output: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_audio_cache: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - web_search: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - internal_reasoning: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_cache_read: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - input_cache_write: - allOf: - - $ref: '#/components/schemas/BigNumberUnion' - - description: A number or string value representing a large number - discount: - type: number - required: - - prompt - - completion - provider_name: - $ref: '#/components/schemas/ProviderName' - tag: - type: string - quantization: - allOf: - - $ref: '#/components/schemas/Quantization' - - nullable: true - max_completion_tokens: - type: integer - max_prompt_tokens: - type: integer - supported_parameters: - type: array - items: - $ref: '#/components/schemas/Parameter' status: - $ref: '#/components/schemas/EndpointStatus' - uptime_last_30m: - type: number - format: double - uptime_last_5m: - type: number - format: double - 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. - uptime_last_1d: - type: number - format: double - 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. - supports_implicit_caching: - type: boolean - latency_last_30m: - $ref: '#/components/schemas/PercentileStats' - 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. + anyOf: + - enum: + - completed + type: string + - enum: + - incomplete + type: string + - enum: + - in_progress + type: string + type: + enum: + - message + type: string 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 - description: Information about a specific model endpoint - example: - name: 'OpenAI: GPT-4' - model_id: openai/gpt-4 - model_name: GPT-4 - context_length: 8192 - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - provider_name: OpenAI - tag: openai - quantization: fp16 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - supported_parameters: - - temperature - - top_p - - max_tokens - status: 0 - uptime_last_30m: 99.5 - uptime_last_5m: 100 - uptime_last_1d: 99.8 - supports_implicit_caching: true - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - ListEndpointsResponse: + - id + - role + - type + - content type: object + OutputMessageItem: + allOf: + - $ref: '#/components/schemas/OutputMessage' + - properties: {} + type: object + description: An output message item + example: + content: + - annotations: [] + text: Hello! How can I help you? + type: output_text + id: msg-123 + role: assistant + status: completed + type: message + OutputModality: + enum: + - text + - image + - embeddings + - audio + - video + - rerank + example: text + type: string + OutputModalityEnum: + enum: + - text + - image + example: text + type: string + OutputReasoningItem: + allOf: + - $ref: '#/components/schemas/OutputItemReasoning' + - properties: + content: + items: + $ref: '#/components/schemas/ReasoningTextContent' + nullable: true + type: array + format: + $ref: '#/components/schemas/ReasoningFormat' + signature: + description: A signature for the reasoning content, used for verification + example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... + nullable: true + type: string + type: object + description: An output item containing reasoning + example: + content: + - text: First, we analyze the problem... + type: reasoning_text + format: anthropic-claude-v1 + id: reasoning-123 + signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... + status: completed + summary: + - text: Analyzed the problem and found the optimal solution. + type: summary_text + type: reasoning + OutputWebSearchCallItem: + allOf: + - $ref: '#/components/schemas/OutputItemWebSearchCall' + - properties: {} + type: object + example: + id: ws-abc123 + status: completed + type: web_search_call + OutputWebSearchServerToolItem: + description: An openrouter:web_search server tool output item + example: + id: ws_tmp_abc123 + status: completed + type: openrouter:web_search properties: id: type: string - description: Unique identifier for the model - example: openai/gpt-4 - name: - type: string - description: Display name of the model - example: GPT-4 - created: - type: integer - description: Unix timestamp of when the model was created - example: 1692901234 - description: + status: + $ref: '#/components/schemas/ToolCallStatus' + type: + enum: + - openrouter:web_search type: string - description: Description of the model - example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - architecture: - allOf: - - $ref: '#/components/schemas/ModelArchitecture' - - properties: - tokenizer: - allOf: - - $ref: '#/components/schemas/ModelGroup' - - nullable: true - instruct_type: - $ref: '#/components/schemas/InstructType' - modality: - type: string - nullable: true - description: Primary modality of the model - example: text - input_modalities: - type: array - items: - $ref: '#/components/schemas/InputModality' - description: Supported input modalities - output_modalities: - type: array - items: - $ref: '#/components/schemas/OutputModality' - description: Supported output modalities - required: - - tokenizer - - instruct_type - - modality - - input_modalities - - output_modalities - example: - tokenizer: GPT - instruct_type: chatml - modality: text - endpoints: - type: array - items: - $ref: '#/components/schemas/PublicEndpoint' - description: List of available endpoints for this model required: - - id - - name - - created - - description - - architecture - - endpoints - description: List of available endpoints for a model - example: - id: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - endpoints: - - name: 'OpenAI: GPT-4' - model_name: GPT-4 - context_length: 8192 - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - provider_name: OpenAI - tag: openai - quantization: fp16 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - supported_parameters: - - temperature - - top_p - - max_tokens - - frequency_penalty - - presence_penalty - status: default - uptime_last_30m: 99.5 - uptime_last_5m: 100 - uptime_last_1d: 99.8 - supports_implicit_caching: true - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - GuardrailInterval: - type: string - nullable: true - enum: - - daily - - weekly - - monthly - - null - description: Interval at which the limit resets (daily, weekly, monthly) - example: monthly - Guardrail: + - status + - type type: object + Parameter: + enum: + - temperature + - top_p + - top_k + - min_p + - top_a + - frequency_penalty + - presence_penalty + - repetition_penalty + - max_tokens + - max_completion_tokens + - logit_bias + - logprobs + - top_logprobs + - seed + - response_format + - structured_outputs + - stop + - tools + - tool_choice + - parallel_tool_calls + - include_reasoning + - reasoning + - reasoning_effort + - web_search_options + - verbosity + example: temperature + type: string + PayloadTooLargeResponse: + description: Payload Too Large - Request payload exceeds size limits + example: + error: + code: 413 + message: Request payload too large properties: - id: - type: string - format: uuid - description: Unique identifier for the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - name: - type: string - description: Name of the guardrail - example: Production Guardrail - description: - type: string - nullable: true - description: Description of the guardrail - example: Guardrail for production environment - limit_usd: - type: number - format: double - description: Spending limit in USD - example: 100 - reset_interval: - $ref: '#/components/schemas/GuardrailInterval' - allowed_providers: - type: array - nullable: true - items: - type: string - description: List of allowed provider IDs - example: - - openai - - anthropic - - google - ignored_providers: - type: array - nullable: true - items: - type: string - description: List of provider IDs to exclude from routing - example: - - azure - allowed_models: - type: array - nullable: true - items: - type: string - 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 - enforce_zdr: - type: boolean + error: + $ref: '#/components/schemas/PayloadTooLargeResponseErrorData' + user_id: nullable: true - description: Whether to enforce zero data retention - example: false - created_at: - type: string - description: ISO 8601 timestamp of when the guardrail was created - example: '2025-08-24T10:30:00Z' - updated_at: type: string - nullable: true - description: ISO 8601 timestamp of when the guardrail was last updated - example: '2025-08-24T15:45:00Z' required: - - id - - name - - created_at - example: - id: 550e8400-e29b-41d4-a716-446655440000 - name: Production Guardrail - description: Guardrail for production environment - limit_usd: 100 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - ListGuardrailsResponse: + - error type: object + PayloadTooLargeResponseErrorData: + description: Error data for PayloadTooLargeResponse + example: + code: 413 + message: Request payload too large properties: - data: - type: array - items: - $ref: '#/components/schemas/Guardrail' - description: List of guardrails - total_count: + code: type: integer - description: Total number of guardrails - example: 25 + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object required: - - data - - total_count + - code + - message + type: object + PaymentRequiredResponse: + description: Payment Required - Insufficient credits or quota to complete request example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - name: Production Guardrail - description: Guardrail for production environment - limit_usd: 100 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - total_count: 1 - CreateGuardrailResponse: - type: object + error: + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits properties: - data: - allOf: - - $ref: '#/components/schemas/Guardrail' - - description: The created guardrail + error: + $ref: '#/components/schemas/PaymentRequiredResponseErrorData' + user_id: + nullable: true + type: string required: - - data - example: - data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: My New Guardrail - description: A guardrail for limiting API usage - limit_usd: 50 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: null - CreateGuardrailRequest: + - error type: object + PaymentRequiredResponseErrorData: + description: Error data for PaymentRequiredResponse + example: + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits properties: - name: - type: string - minLength: 1 - maxLength: 200 - description: Name for the new guardrail - example: My New Guardrail - description: + code: + type: integer + message: type: string + metadata: + additionalProperties: + nullable: true nullable: true - maxLength: 1000 - description: Description of the guardrail - example: A guardrail for limiting API usage - limit_usd: - type: number - format: double - description: Spending limit in USD - example: 50 - reset_interval: - $ref: '#/components/schemas/GuardrailInterval' - allowed_providers: - type: array - nullable: true - items: - type: string - minItems: 1 - description: List of allowed provider IDs - example: - - openai - - anthropic - - deepseek - ignored_providers: - type: array - nullable: true - items: - type: string - minItems: 1 - description: List of provider IDs to exclude from routing - example: - - azure - allowed_models: - type: array - nullable: true - items: - type: string - minItems: 1 - 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 - enforce_zdr: - type: boolean - nullable: true - description: Whether to enforce zero data retention - example: false + type: object required: - - name - example: - name: My New Guardrail - description: A guardrail for limiting API usage - limit_usd: 50 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - deepseek - ignored_providers: null - allowed_models: null - enforce_zdr: false - GetGuardrailResponse: + - code + - message type: object - properties: - data: - allOf: - - $ref: '#/components/schemas/Guardrail' - - description: The guardrail - required: - - data + PDFParserEngine: + anyOf: + - enum: + - mistral-ocr + - native + - cloudflare-ai + type: string + - enum: + - pdf-text + type: string + description: >- + The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to + "cloudflare-ai". + example: cloudflare-ai + PDFParserOptions: + description: Options for PDF parsing. example: - data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: Production Guardrail - description: Guardrail for production environment - limit_usd: 100 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - UpdateGuardrailResponse: - type: object + engine: cloudflare-ai properties: - data: - allOf: - - $ref: '#/components/schemas/Guardrail' - - description: The updated guardrail - required: - - data + engine: + $ref: '#/components/schemas/PDFParserEngine' + type: object + PercentileLatencyCutoffs: + description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred. example: - data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: Updated Guardrail Name - description: Updated description - limit_usd: 75 - reset_interval: weekly - allowed_providers: - - openai - ignored_providers: null - allowed_models: null - enforce_zdr: true - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T16:00:00Z' - UpdateGuardrailRequest: + p50: 5 + p90: 10 + properties: + p50: + description: Maximum p50 latency (seconds) + format: double + type: number + p75: + description: Maximum p75 latency (seconds) + format: double + type: number + p90: + description: Maximum p90 latency (seconds) + format: double + type: number + p99: + description: Maximum p99 latency (seconds) + format: double + type: number type: object + PercentileStats: + description: >- + Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible + when authenticated with an API key or cookie; returns null for unauthenticated requests. + example: + p50: 25.5 + p75: 35.2 + p90: 48.7 + p99: 85.3 + nullable: true properties: - name: - type: string - minLength: 1 - maxLength: 200 - description: New name for the guardrail - example: Updated Guardrail Name - description: - type: string - nullable: true - maxLength: 1000 - description: New description for the guardrail - example: Updated description - limit_usd: + p50: + description: Median (50th percentile) + example: 25.5 + format: double type: number + p75: + description: 75th percentile + example: 35.2 format: double - description: New spending limit in USD - example: 75 - reset_interval: - $ref: '#/components/schemas/GuardrailInterval' - allowed_providers: - type: array - nullable: true - items: - type: string - minItems: 1 - description: New list of allowed provider IDs - example: - - openai - - anthropic - - deepseek - ignored_providers: - type: array - nullable: true - items: - type: string - minItems: 1 - description: List of provider IDs to exclude from routing - example: - - azure - allowed_models: - type: array - nullable: true - items: - type: string - minItems: 1 - description: Array of model identifiers (slug or canonical_slug accepted) - example: - - openai/gpt-5.2 - enforce_zdr: - type: boolean - nullable: true - description: Whether to enforce zero data retention - example: true + type: number + p90: + description: 90th percentile + example: 48.7 + format: double + type: number + p99: + description: 99th percentile + example: 85.3 + format: double + type: number + required: + - p50 + - p75 + - p90 + - p99 + type: object + PercentileThroughputCutoffs: + description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred. example: - name: Updated Guardrail Name - description: Updated description - limit_usd: 75 - reset_interval: weekly - DeleteGuardrailResponse: + p50: 100 + p90: 50 + properties: + p50: + description: Minimum p50 throughput (tokens/sec) + format: double + type: number + p75: + description: Minimum p75 throughput (tokens/sec) + format: double + type: number + p90: + description: Minimum p90 throughput (tokens/sec) + format: double + type: number + p99: + description: Minimum p99 throughput (tokens/sec) + format: double + type: number type: object + PerRequestLimits: + description: Per-request token limits + example: + completion_tokens: 1000 + prompt_tokens: 1000 + nullable: true properties: - deleted: - type: boolean - const: true - description: Confirmation that the guardrail was deleted - example: true + completion_tokens: + description: Maximum completion tokens per request + example: 1000 + type: number + prompt_tokens: + description: Maximum prompt tokens per request + example: 1000 + type: number required: - - deleted - example: - deleted: true - KeyAssignment: + - prompt_tokens + - completion_tokens type: object + PreferredMaxLatency: + anyOf: + - format: double + type: number + - $ref: '#/components/schemas/PercentileLatencyCutoffs' + - nullable: true + description: >- + Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific + cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using + fallback models, this may cause a fallback model to be used instead of the primary model if it meets the + threshold. + example: 5 + PreferredMinThroughput: + anyOf: + - format: double + type: number + - $ref: '#/components/schemas/PercentileThroughputCutoffs' + - nullable: true + description: >- + Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with + percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in + routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if + it meets the threshold. + example: 100 + Preview_20250311_WebSearchServerTool: + description: Web search preview tool configuration (2025-03-11 version) + example: + type: web_search_preview_2025_03_11 properties: - id: - type: string - format: uuid - description: Unique identifier for the assignment - example: 550e8400-e29b-41d4-a716-446655440000 - key_hash: - type: string - description: Hash of the assigned API key - example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - guardrail_id: - type: string - format: uuid - description: ID of the guardrail - example: 550e8400-e29b-41d4-a716-446655440001 - key_name: - type: string - description: Name of the API key - example: Production Key - key_label: - type: string - description: Label of the API key - example: prod-key - assigned_by: - type: string - nullable: true - description: User ID of who made the assignment - example: user_abc123 - created_at: + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + filters: + $ref: '#/components/schemas/WebSearchDomainFilter' + max_results: + description: >- + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 + type: integer + search_context_size: + $ref: '#/components/schemas/SearchContextSizeEnum' + type: + enum: + - web_search_preview_2025_03_11 type: string - description: ISO 8601 timestamp of when the assignment was created - example: '2025-08-24T10:30:00Z' + user_location: + $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - - id - - key_hash - - guardrail_id - - key_name - - key_label - - assigned_by - - created_at - example: - id: 550e8400-e29b-41d4-a716-446655440000 - key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - key_name: Production Key - key_label: prod-key - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - ListKeyAssignmentsResponse: + - type type: object + Preview_WebSearchServerTool: + description: Web search preview tool configuration + example: + type: web_search_preview properties: - data: - type: array - items: - $ref: '#/components/schemas/KeyAssignment' - description: List of key assignments - total_count: + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + filters: + $ref: '#/components/schemas/WebSearchDomainFilter' + max_results: + description: >- + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 type: integer - description: Total number of key assignments for this guardrail - example: 25 + search_context_size: + $ref: '#/components/schemas/SearchContextSizeEnum' + type: + enum: + - web_search_preview + type: string + user_location: + $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - - data - - total_count - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - key_name: Production Key - key_label: prod-key - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - total_count: 1 - MemberAssignment: + - type type: object + Preview_WebSearchUserLocation: + example: + city: San Francisco + country: USA + region: California + timezone: America/Los_Angeles + type: approximate + nullable: true properties: - id: - type: string - format: uuid - description: Unique identifier for the assignment - example: 550e8400-e29b-41d4-a716-446655440000 - user_id: - type: string - description: Clerk user ID of the assigned member - example: user_abc123 - organization_id: + city: + nullable: true type: string - description: Organization ID - example: org_xyz789 - guardrail_id: + country: + nullable: true type: string - format: uuid - description: ID of the guardrail - example: 550e8400-e29b-41d4-a716-446655440001 - assigned_by: + region: + nullable: true type: string + timezone: nullable: true - description: User ID of who made the assignment - example: user_abc123 - created_at: type: string - description: ISO 8601 timestamp of when the assignment was created - example: '2025-08-24T10:30:00Z' - required: - - id - - user_id - - organization_id - - guardrail_id - - assigned_by - - created_at - example: - id: 550e8400-e29b-41d4-a716-446655440000 - user_id: user_abc123 - organization_id: org_xyz789 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - ListMemberAssignmentsResponse: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/MemberAssignment' - description: List of member assignments - total_count: - type: integer - description: Total number of member assignments - example: 10 - required: - - data - - total_count - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - user_id: user_abc123 - organization_id: org_xyz789 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - total_count: 1 - BulkAssignKeysResponse: - type: object - properties: - assigned_count: - type: integer - description: Number of keys successfully assigned - example: 3 - required: - - assigned_count - example: - assigned_count: 3 - BulkAssignKeysRequest: - type: object - properties: - key_hashes: - type: array - items: - type: string - minLength: 1 - minItems: 1 - description: Array of API key hashes to assign to the guardrail - example: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - required: - - key_hashes - example: - key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - BulkAssignMembersResponse: - type: object - properties: - assigned_count: - type: integer - description: Number of members successfully assigned - example: 2 - required: - - assigned_count - example: - assigned_count: 2 - BulkAssignMembersRequest: - type: object - properties: - member_user_ids: - type: array - items: - type: string - minLength: 1 - minItems: 1 - description: Array of member user IDs to assign to the guardrail - example: - - user_abc123 - - user_def456 - required: - - member_user_ids - example: - member_user_ids: - - user_abc123 - - user_def456 - BulkUnassignKeysResponse: - type: object - properties: - unassigned_count: - type: integer - description: Number of keys successfully unassigned - example: 3 + type: + enum: + - approximate + type: string required: - - unassigned_count - example: - unassigned_count: 3 - BulkUnassignKeysRequest: + - type type: object - properties: - key_hashes: - type: array - items: - type: string - minLength: 1 - minItems: 1 - description: Array of API key hashes to unassign from the guardrail - example: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - required: - - key_hashes + ProviderName: + enum: + - AkashML + - AI21 + - AionLabs + - Alibaba + - Ambient + - Amazon Bedrock + - Amazon Nova + - Anthropic + - Arcee AI + - AtlasCloud + - Avian + - Azure + - BaseTen + - BytePlus + - Black Forest Labs + - Cerebras + - Chutes + - Cirrascale + - Clarifai + - Cloudflare + - Cohere + - Crusoe + - DeepInfra + - DeepSeek + - Featherless + - Fireworks + - Friendli + - GMICloud + - Google + - Google AI Studio + - Groq + - Hyperbolic + - Inception + - Inceptron + - InferenceNet + - Ionstream + - Infermatic + - Io Net + - Inflection + - Liquid + - Mara + - Mancer 2 + - Minimax + - ModelRun + - Mistral + - Modular + - Moonshot AI + - Morph + - NCompass + - Nebius + - NextBit + - Novita + - Nvidia + - OpenAI + - OpenInference + - Parasail + - Perplexity + - Phala + - Reka + - Relace + - SambaNova + - Seed + - SiliconFlow + - Sourceful + - StepFun + - Stealth + - StreamLake + - Switchpoint + - Together + - Upstage + - Venice + - WandB + - Xiaomi + - xAI + - Z.AI + - FakeProvider + example: OpenAI + type: string + ProviderOverloadedResponse: + description: Provider Overloaded - Provider is temporarily overloaded example: - key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - BulkUnassignMembersResponse: - type: object + error: + code: 529 + message: Provider returned error properties: - unassigned_count: - type: integer - description: Number of members successfully unassigned - example: 2 + error: + $ref: '#/components/schemas/ProviderOverloadedResponseErrorData' + user_id: + nullable: true + type: string required: - - unassigned_count - example: - unassigned_count: 2 - BulkUnassignMembersRequest: + - error type: object - properties: - member_user_ids: - type: array - items: - type: string - minLength: 1 - minItems: 1 - description: Array of member user IDs to unassign from the guardrail - example: - - user_abc123 - - user_def456 - required: - - member_user_ids + ProviderOverloadedResponseErrorData: + description: Error data for ProviderOverloadedResponse example: - member_user_ids: - - user_abc123 - - user_def456 - ConflictResponseErrorData: - type: object + code: 529 + message: Provider returned error properties: code: type: integer message: type: string metadata: - type: object - nullable: true additionalProperties: nullable: true + nullable: true + type: object required: - code - message - description: Error data for ConflictResponse - example: - code: 409 - message: Resource conflict. Please try again later. - ConflictResponse: type: object - properties: - error: - $ref: '#/components/schemas/ConflictResponseErrorData' - user_id: + ProviderPreferences: + additionalProperties: false + description: When multiple model providers are available, optionally indicate your routing preference. + example: + allow_fallbacks: true + nullable: true + properties: + allow_fallbacks: + description: > + Whether to allow backup providers to serve requests + + - true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the + next best provider. + + - false: use only the primary/custom provider, and return the upstream error if it's unavailable. + nullable: true + type: boolean + data_collection: + description: >- + Data collection setting. If no available model provider meets the requirement, your request will return an + error. + + - allow: (default) allow providers which store user data non-transiently and may train on it + + + - deny: use only providers which do not collect user data. + enum: + - deny + - allow + - null + example: allow + nullable: true type: string + enforce_distillable_text: + description: >- + Whether to restrict routing to only models that allow text distillation. When true, only models where the + author has allowed distillation will be used. + example: true nullable: true - required: - - error - description: Conflict - Resource conflict or concurrent modification + type: boolean + ignore: + description: >- + List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider + settings for this request. + example: + - openai + - anthropic + items: + anyOf: + - $ref: '#/components/schemas/ProviderName' + - type: string + nullable: true + type: array + max_price: + description: >- + The object specifying the maximum price you want to pay for this request. USD price per million tokens, for + prompt and completion. + properties: + audio: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: Price per audio unit + completion: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: Price per million completion tokens + image: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: Price per image + prompt: + $ref: '#/components/schemas/BigNumberUnion' + request: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: Price per request + type: object + only: + description: >- + List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider + settings for this request. + example: + - openai + - anthropic + items: + anyOf: + - $ref: '#/components/schemas/ProviderName' + - type: string + nullable: true + type: array + order: + description: >- + An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this + list that supports your requested model, and fall back to the next if it is unavailable. If no providers are + available, the request will fail with an error message. + example: + - openai + - anthropic + items: + anyOf: + - $ref: '#/components/schemas/ProviderName' + - type: string + nullable: true + type: array + preferred_max_latency: + $ref: '#/components/schemas/PreferredMaxLatency' + preferred_min_throughput: + $ref: '#/components/schemas/PreferredMinThroughput' + quantizations: + description: A list of quantization levels to filter the provider by. + items: + $ref: '#/components/schemas/Quantization' + nullable: true + type: array + require_parameters: + description: >- + Whether to filter providers to only those that support the parameters you've provided. If this setting is + omitted or set to false, then providers will receive only the parameters they support, and ignore the rest. + nullable: true + type: boolean + sort: + anyOf: + - $ref: '#/components/schemas/ProviderSort' + - $ref: '#/components/schemas/ProviderSortConfig' + - nullable: true + description: >- + The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is + performed. + example: price + zdr: + description: >- + Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do + not retain prompts will be used. + example: true + nullable: true + type: boolean + type: object + ProviderResponse: + description: Details of a provider response for a generation attempt example: - error: - code: 409 - message: Resource conflict. Please try again later. - parameters: {} - securitySchemes: - apiKey: - type: http - scheme: bearer - description: API key as bearer token in Authorization header - bearer: - type: http - scheme: bearer - description: API key as bearer token in Authorization header -paths: - /responses: - post: - x-speakeasy-name-override: send - x-speakeasy-stream-request-field: stream - tags: - - beta.responses - summary: Create a response - description: Creates a streaming or non-streaming response using OpenResponses API format - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ResponsesRequest' - example: - model: openai/gpt-4o - input: Tell me a joke - required: true - responses: - '200': - description: Successful response - content: - application/json: - schema: - $ref: '#/components/schemas/OpenResponsesResult' - example: - id: resp_abc123 - object: response - created_at: 1700000000 - status: completed - output: - - type: message - role: assistant - content: - - type: output_text - text: Why did the chicken cross the road? To get to the other side! - model: openai/gpt-4o - usage: - prompt_tokens: 10 - completion_tokens: 20 - total_tokens: 30 - text/event-stream: - schema: - type: object - properties: - data: - $ref: '#/components/schemas/StreamEvents' - required: - - data - x-speakeasy-sse-sentinel: '[DONE]' - example: - data: - type: response.output_text.delta - delta: Hello - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '402': - description: Payment Required - Insufficient credits or quota to complete request - content: - application/json: - schema: - $ref: '#/components/schemas/PaymentRequiredResponse' - example: - error: - code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '408': - description: Request Timeout - Operation exceeded time limit - content: - application/json: - schema: - $ref: '#/components/schemas/RequestTimeoutResponse' - example: - error: - code: 408 - message: Operation timed out. Please try again later. - '413': - description: Payload Too Large - Request payload exceeds size limits - content: - application/json: - schema: - $ref: '#/components/schemas/PayloadTooLargeResponse' - example: - error: - code: 413 - message: Request payload too large - '422': - description: Unprocessable Entity - Semantic validation failure - content: - application/json: - schema: - $ref: '#/components/schemas/UnprocessableEntityResponse' - example: - error: - code: 422 - message: Invalid argument - '429': - description: Too Many Requests - Rate limit exceeded - content: - application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' - example: - error: - code: 429 - message: Rate limit exceeded - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - '502': - description: Bad Gateway - Provider/upstream API failure - content: - application/json: - schema: - $ref: '#/components/schemas/BadGatewayResponse' - example: - error: - code: 502 - message: Provider returned error - '503': - description: Service Unavailable - Service temporarily unavailable - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceUnavailableResponse' - example: - error: - code: 503 - message: Service temporarily unavailable - '524': - description: Infrastructure Timeout - Provider request timed out at edge network - content: - application/json: - schema: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - example: - error: - code: 524 - message: Request timed out. Please try again later. - '529': - description: Provider Overloaded - Provider is temporarily overloaded - content: - application/json: - schema: - $ref: '#/components/schemas/ProviderOverloadedResponse' - example: - error: - code: 529 - message: Provider returned error - operationId: createResponses - /messages: - post: - x-speakeasy-ignore: true - x-speakeasy-name-override: create - x-speakeasy-stream-request-field: stream - tags: - - Anthropic Messages - summary: Create a message - description: >- - Creates a message using the Anthropic Messages API format. Supports text, images, PDFs, tools, and extended - thinking. - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesRequest' - example: - model: anthropic/claude-sonnet-4 - max_tokens: 1024 - messages: - - role: user - content: Hello, how are you? - required: true - responses: - '200': - description: Successful response - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesResult' - example: - id: msg_abc123 - type: message - role: assistant - content: - - type: text - text: I'm doing well, thank you for asking! How can I help you today? - model: anthropic/claude-sonnet-4 - stop_reason: end_turn - usage: - input_tokens: 12 - output_tokens: 18 - text/event-stream: - schema: - type: object - properties: - event: - type: string - data: - $ref: '#/components/schemas/MessagesStreamEvents' - required: - - event - - data - x-speakeasy-sse-sentinel: '[DONE]' - example: - event: content_block_delta - data: - type: content_block_delta - index: 0 - delta: - type: text_delta - text: Hello - '400': - description: Invalid request error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: invalid_request_error - message: 'Invalid request: messages is required' - '401': - description: Authentication error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: authentication_error - message: Invalid API key - '403': - description: Permission denied error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: permission_error - message: Permission denied - '404': - description: Not found error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: not_found_error - message: Model not found - '429': - description: Rate limit error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: rate_limit_error - message: Rate limit exceeded - '500': - description: API error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: api_error - message: Internal server error - '503': - description: Overloaded error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: overloaded_error - message: Service temporarily overloaded - '529': - description: Overloaded error - content: - application/json: - schema: - $ref: '#/components/schemas/MessagesErrorResponse' - example: - type: error - error: - type: overloaded_error - message: Provider is temporarily overloaded - operationId: createMessages - /activity: - get: - tags: - - Analytics - operationId: getUserActivity - summary: Get user activity grouped by endpoint - description: >- - Returns user activity data grouped by endpoint for the last 30 (completed) UTC days. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - parameters: - - schema: - type: string - description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). - example: '2025-08-24' - required: false - description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). - name: date - in: query - - schema: - type: string - description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). - example: abc123def456... - required: false - description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). - name: api_key_hash - in: query - - schema: - type: string - description: Filter by org member user ID. Only applicable for organization accounts. - example: user_abc123 - required: false - description: Filter by org member user ID. Only applicable for organization accounts. - name: user_id - in: query - responses: - '200': - description: Returns user activity data grouped by endpoint - content: - application/json: - schema: - $ref: '#/components/schemas/ActivityResponse' - example: - data: - - date: '2025-08-24' - model: openai/gpt-4.1 - model_permaslug: openai/gpt-4.1-2025-04-14 - endpoint_id: 550e8400-e29b-41d4-a716-446655440000 - provider_name: OpenAI - usage: 0.015 - byok_usage_inference: 0.012 - requests: 5 - prompt_tokens: 50 - completion_tokens: 125 - reasoning_tokens: 25 - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '403': - description: Forbidden - Authentication successful but insufficient permissions - content: - application/json: - schema: - $ref: '#/components/schemas/ForbiddenResponse' - example: - error: - code: 403 - message: Only management keys can perform this operation - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /chat/completions: - post: - x-speakeasy-group: chat - x-speakeasy-name-override: send - x-speakeasy-stream-request-field: stream - tags: - - Chat - summary: Create a chat completion - operationId: sendChatCompletionRequest - description: >- - Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming - modes. - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ChatRequest' - example: - model: openai/gpt-4 - messages: - - role: system - content: You are a helpful assistant. - - role: user - content: What is the capital of France? - temperature: 0.7 - max_tokens: 150 - required: true - responses: - '200': - description: Successful chat completion response - content: - application/json: - schema: - $ref: '#/components/schemas/ChatResult' - example: - id: chatcmpl-123 - object: chat.completion - created: 1677652288 - model: openai/gpt-4 - choices: - - index: 0 - message: - role: assistant - content: The capital of France is Paris. - finish_reason: stop - usage: - prompt_tokens: 25 - completion_tokens: 10 - total_tokens: 35 - text/event-stream: - schema: - type: object - properties: - data: - $ref: '#/components/schemas/ChatStreamChunk' - required: - - data - x-speakeasy-sse-sentinel: '[DONE]' - example: - data: - id: chatcmpl-123 - object: chat.completion.chunk - created: 1677652288 - model: openai/gpt-4 - choices: - - index: 0 - delta: - role: assistant - content: Hello - finish_reason: null - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '402': - description: Payment Required - Insufficient credits or quota to complete request - content: - application/json: - schema: - $ref: '#/components/schemas/PaymentRequiredResponse' - example: - error: - code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '408': - description: Request Timeout - Operation exceeded time limit - content: - application/json: - schema: - $ref: '#/components/schemas/RequestTimeoutResponse' - example: - error: - code: 408 - message: Operation timed out. Please try again later. - '413': - description: Payload Too Large - Request payload exceeds size limits - content: - application/json: - schema: - $ref: '#/components/schemas/PayloadTooLargeResponse' - example: - error: - code: 413 - message: Request payload too large - '422': - description: Unprocessable Entity - Semantic validation failure - content: - application/json: - schema: - $ref: '#/components/schemas/UnprocessableEntityResponse' - example: - error: - code: 422 - message: Invalid argument - '429': - description: Too Many Requests - Rate limit exceeded - content: - application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' - example: - error: - code: 429 - message: Rate limit exceeded - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - '502': - description: Bad Gateway - Provider/upstream API failure - content: - application/json: - schema: - $ref: '#/components/schemas/BadGatewayResponse' - example: - error: - code: 502 - message: Provider returned error - '503': - description: Service Unavailable - Service temporarily unavailable - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceUnavailableResponse' - example: - error: - code: 503 - message: Service temporarily unavailable - '524': - description: Infrastructure Timeout - Provider request timed out at edge network - content: - application/json: - schema: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - example: - error: - code: 524 - message: Request timed out. Please try again later. - '529': - description: Provider Overloaded - Provider is temporarily overloaded - content: - application/json: - schema: - $ref: '#/components/schemas/ProviderOverloadedResponse' - example: - error: - code: 529 - message: Provider returned error - /credits: - get: - x-speakeasy-name-override: getCredits - tags: - - Credits - summary: Get remaining credits - operationId: getCredits - description: >- - Get total credits purchased and used for the authenticated user. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - responses: - '200': - description: Returns the total credits purchased and used - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - total_credits: - type: number - format: double - description: Total credits purchased - example: 100.5 - total_usage: - type: number - format: double - description: Total credits used - example: 25.75 - required: - - total_credits - - total_usage - example: - total_credits: 100.5 - total_usage: 25.75 - required: - - data - description: Total credits purchased and used - example: - data: - total_credits: 100.5 - total_usage: 25.75 - example: - data: - total_credits: 100.5 - total_usage: 25.75 - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '403': - description: Forbidden - Authentication successful but insufficient permissions - content: - application/json: - schema: - $ref: '#/components/schemas/ForbiddenResponse' - example: - error: - code: 403 - message: Only management keys can perform this operation - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /credits/coinbase: - post: - security: [] - x-speakeasy-name-override: createCoinbaseCharge - x-speakeasy-ignore: true - x-fern-ignore: true - deprecated: true - tags: - - Credits - summary: Deprecated Coinbase Commerce charge endpoint - 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. - responses: - '200': - description: This endpoint is deprecated and will never return a 200 response. - '410': - description: Gone - Endpoint has been permanently removed or deprecated - content: - application/json: - schema: - $ref: '#/components/schemas/GoneResponse' - 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. - /generation: - get: - tags: - - Generations - summary: Get request & usage metadata for a generation - parameters: - - schema: - type: string - minLength: 1 - description: The generation ID - example: gen-1234567890 - required: true - description: The generation ID - name: id - in: query - responses: - '200': - description: Returns the request metadata for this generation - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - id: - type: string - description: Unique identifier for the generation - example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG - upstream_id: - type: string - nullable: true - description: Upstream provider's identifier for this generation - example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 - total_cost: - type: number - format: double - description: Total cost of the generation in USD - example: 0.0015 - cache_discount: - type: number - format: double - description: Discount applied due to caching - example: 0.0002 - upstream_inference_cost: - type: number - format: double - description: Cost charged by the upstream provider - example: 0.0012 - created_at: - type: string - description: ISO 8601 timestamp of when the generation was created - example: '2024-07-15T23:33:19.433273+00:00' - model: - type: string - description: Model used for the generation - example: sao10k/l3-stheno-8b - app_id: - type: integer - description: ID of the app that made the request - example: 12345 - streamed: - type: boolean - nullable: true - description: Whether the response was streamed - example: true - cancelled: - type: boolean - nullable: true - description: Whether the generation was cancelled - example: false - provider_name: - type: string - nullable: true - description: Name of the provider that served the request - example: Infermatic - latency: - type: number - format: double - description: Total latency in milliseconds - example: 1250 - moderation_latency: - type: number - format: double - description: Moderation latency in milliseconds - example: 50 - generation_time: - type: number - format: double - description: Time taken for generation in milliseconds - example: 1200 - finish_reason: - type: string - nullable: true - description: Reason the generation finished - example: stop - tokens_prompt: - type: integer - description: Number of tokens in the prompt - example: 10 - tokens_completion: - type: integer - description: Number of tokens in the completion - example: 25 - native_tokens_prompt: - type: integer - description: Native prompt tokens as reported by provider - example: 10 - native_tokens_completion: - type: integer - description: Native completion tokens as reported by provider - example: 25 - native_tokens_completion_images: - type: integer - description: Native completion image tokens as reported by provider - example: 0 - native_tokens_reasoning: - type: integer - description: Native reasoning tokens as reported by provider - example: 5 - native_tokens_cached: - type: integer - description: Native cached tokens as reported by provider - example: 3 - num_media_prompt: - type: integer - description: Number of media items in the prompt - example: 1 - num_input_audio_prompt: - type: integer - description: Number of audio inputs in the prompt - example: 0 - num_media_completion: - type: integer - description: Number of media items in the completion - example: 0 - num_search_results: - type: integer - description: Number of search results included - example: 5 - origin: - type: string - description: Origin URL of the request - example: https://openrouter.ai/ - usage: - type: number - format: double - description: Usage amount in USD - example: 0.0015 - is_byok: - type: boolean - description: Whether this used bring-your-own-key - example: false - native_finish_reason: - type: string - nullable: true - description: Native finish reason as reported by provider - example: stop - external_user: - type: string - nullable: true - description: External user identifier - example: user-123 - api_type: - type: string - nullable: true - enum: - - completions - - embeddings - - rerank - - video - - null - description: Type of API used for the generation - router: - type: string - nullable: true - description: Router used for the request (e.g., openrouter/auto) - example: openrouter/auto - provider_responses: - type: array - nullable: true - items: - $ref: '#/components/schemas/ProviderResponse' - description: List of provider responses for this generation, including fallback attempts - user_agent: - type: string - nullable: true - description: User-Agent header from the request - http_referer: - type: string - nullable: true - description: Referer header from the request - request_id: - type: string - nullable: true - description: Unique identifier grouping all generations from a single API request - example: req-1727282430-aBcDeFgHiJkLmNoPqRsT - session_id: - type: string - nullable: true - description: Session identifier grouping multiple generations in the same session - required: - - id - - upstream_id - - total_cost - - cache_discount - - upstream_inference_cost - - created_at - - model - - app_id - - streamed - - cancelled - - provider_name - - latency - - moderation_latency - - generation_time - - finish_reason - - tokens_prompt - - tokens_completion - - native_tokens_prompt - - native_tokens_completion - - native_tokens_completion_images - - native_tokens_reasoning - - native_tokens_cached - - num_media_prompt - - num_input_audio_prompt - - num_media_completion - - num_search_results - - origin - - usage - - is_byok - - native_finish_reason - - external_user - - api_type - - router - - provider_responses - - user_agent - - http_referer - description: Generation data - required: - - data - description: Generation response - example: - data: - id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG - upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 - total_cost: 0.0015 - cache_discount: 0.0002 - upstream_inference_cost: 0.0012 - created_at: '2024-07-15T23:33:19.433273+00:00' - model: sao10k/l3-stheno-8b - app_id: 12345 - streamed: true - cancelled: false - provider_name: Infermatic - latency: 1250 - moderation_latency: 50 - generation_time: 1200 - finish_reason: stop - tokens_prompt: 10 - tokens_completion: 25 - native_tokens_prompt: 10 - native_tokens_completion: 25 - native_tokens_completion_images: 0 - native_tokens_reasoning: 5 - native_tokens_cached: 3 - num_media_prompt: 1 - num_input_audio_prompt: 0 - num_media_completion: 0 - num_search_results: 5 - origin: https://openrouter.ai/ - usage: 0.0015 - is_byok: false - native_finish_reason: stop - external_user: user-123 - api_type: null - router: null - provider_responses: null - user_agent: null - http_referer: null - request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '402': - description: Payment Required - Insufficient credits or quota to complete request - content: - application/json: - schema: - $ref: '#/components/schemas/PaymentRequiredResponse' - example: - error: - code: 402 - message: Insufficient credits. Add more using https://openrouter.ai/credits - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '429': - description: Too Many Requests - Rate limit exceeded - content: - application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' - example: - error: - code: 429 - message: Rate limit exceeded - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - '502': - description: Bad Gateway - Provider/upstream API failure - content: - application/json: - schema: - $ref: '#/components/schemas/BadGatewayResponse' - example: - error: - code: 502 - message: Provider returned error - '524': - description: Infrastructure Timeout - Provider request timed out at edge network - content: - application/json: - schema: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' - example: - error: - code: 524 - message: Request timed out. Please try again later. - '529': - description: Provider Overloaded - Provider is temporarily overloaded - content: - application/json: - schema: - $ref: '#/components/schemas/ProviderOverloadedResponse' - example: - error: - code: 529 - message: Provider returned error - operationId: getGeneration - /models/count: - get: - tags: - - Models - x-speakeasy-name-override: count - summary: Get total count of available models - parameters: - - schema: - 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 - required: false - 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". - name: output_modalities - in: query - responses: - '200': - description: Returns the total count of available models - content: - application/json: - schema: - $ref: '#/components/schemas/ModelsCountResponse' - example: - data: - count: 150 - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - operationId: listModelsCount - /models: - get: - tags: - - Models - x-speakeasy-name-override: list - summary: List all models and their properties - parameters: - - schema: - type: string - enum: - - programming - - roleplay - - marketing - - marketing/seo - - technology - - science - - translation - - legal - - finance - - health - - trivia - - academia - description: Filter models by use case category - example: programming - required: false - description: Filter models by use case category - name: category - in: query - - schema: - type: string - description: Filter models by supported parameter (comma-separated) - example: temperature - required: false - description: Filter models by supported parameter (comma-separated) - name: supported_parameters - in: query - - schema: - 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 - required: false - 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". - name: output_modalities - in: query - - schema: - type: string - description: Return results as RSS feed - example: 'true' - required: false - description: Return results as RSS feed - name: use_rss - in: query - - schema: - type: string - description: Use chat links in RSS feed items - example: 'true' - required: false - description: Use chat links in RSS feed items - name: use_rss_chat_links - in: query - responses: - '200': - description: Returns a list of models or RSS feed - content: - application/json: - schema: - $ref: '#/components/schemas/ModelsListResponse' - example: - data: - - id: openai/gpt-4 - canonical_slug: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - top_provider: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - per_request_limits: null - supported_parameters: - - temperature - - top_p - - max_tokens - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/gpt-5.4/endpoints - application/rss+xml: - schema: - type: string - example: >- - OpenRouter - Models - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - operationId: getModels - /models/user: - get: - tags: - - Models - x-speakeasy-name-override: listForUser - 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). - summary: List models filtered by user provider preferences, privacy settings, and guardrails - security: - - bearer: [] - responses: - '200': - description: Returns a list of models filtered by user provider preferences - content: - application/json: - schema: - $ref: '#/components/schemas/ModelsListResponse' - example: - data: - - id: openai/gpt-4 - canonical_slug: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - top_provider: - context_length: 8192 - max_completion_tokens: 4096 - is_moderated: true - per_request_limits: null - supported_parameters: - - temperature - - top_p - - max_tokens - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/gpt-5.4/endpoints - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - operationId: listModelsUser - /models/{author}/{slug}/endpoints: - get: - tags: - - Endpoints - operationId: listEndpoints - x-speakeasy-name-override: list - summary: List all endpoints for a model - parameters: - - schema: - type: string - description: The author/organization of the model - example: openai - required: true - description: The author/organization of the model - name: author - in: path - - schema: - type: string - description: The model slug - example: gpt-4 - required: true - description: The model slug - name: slug - in: path - responses: - '200': - description: Returns a list of endpoints - content: - application/json: - schema: - type: object - properties: - data: - $ref: '#/components/schemas/ListEndpointsResponse' - required: - - data - example: - data: - id: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - endpoints: - - name: 'OpenAI: GPT-4' - model_id: openai/gpt-4 - model_name: GPT-4 - context_length: 8192 - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - provider_name: OpenAI - tag: openai - quantization: fp16 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - supported_parameters: - - temperature - - top_p - - max_tokens - status: default - uptime_last_30m: 99.5 - uptime_last_5m: 100 - uptime_last_1d: 99.8 - supports_implicit_caching: true - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - example: - data: - id: openai/gpt-4 - name: GPT-4 - created: 1692901234 - description: GPT-4 is a large multimodal model. - architecture: - tokenizer: GPT - instruct_type: chatml - modality: text->text - input_modalities: - - text - output_modalities: - - text - endpoints: [] - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /endpoints/zdr: - get: - tags: - - Endpoints - x-speakeasy-name-override: listZdrEndpoints - summary: Preview the impact of ZDR on the available endpoints - responses: - '200': - description: Returns a list of endpoints - content: - application/json: - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/PublicEndpoint' - required: - - data - example: - data: - - name: 'OpenAI: GPT-4' - model_id: openai/gpt-4 - model_name: GPT-4 - context_length: 8192 - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - provider_name: OpenAI - tag: openai - quantization: fp16 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - supported_parameters: - - temperature - - top_p - - max_tokens - status: default - uptime_last_30m: 99.5 - uptime_last_5m: 100 - uptime_last_1d: 99.8 - supports_implicit_caching: true - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - example: - data: - - name: 'OpenAI: GPT-4' - model_id: openai/gpt-4 - model_name: GPT-4 - context_length: 8192 - pricing: - prompt: '0.00003' - completion: '0.00006' - request: '0' - image: '0' - provider_name: OpenAI - tag: openai - quantization: fp16 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - supported_parameters: - - temperature - - top_p - - max_tokens - status: default - uptime_last_30m: 99.5 - uptime_last_5m: 100 - uptime_last_1d: 99.8 - supports_implicit_caching: true - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - operationId: listEndpointsZdr - /providers: - get: - tags: - - Providers - x-speakeasy-name-override: list - summary: List all providers - operationId: listProviders - responses: - '200': - description: Returns a list of providers - content: - application/json: - schema: - type: object - properties: - data: - type: array - items: - type: object - properties: - name: - type: string - description: Display name of the provider - example: OpenAI - slug: - type: string - description: URL-friendly identifier for the provider - example: openai - privacy_policy_url: - type: string - nullable: true - description: URL to the provider's privacy policy - example: https://openai.com/privacy - terms_of_service_url: - type: string - nullable: true - description: URL to the provider's terms of service - example: https://openai.com/terms - status_page_url: - type: string - nullable: true - description: URL to the provider's status page - example: https://status.openai.com - headquarters: - type: string - nullable: true - enum: - - AD - - AE - - AF - - AG - - AI - - AL - - AM - - AO - - AQ - - AR - - AS - - AT - - AU - - AW - - AX - - AZ - - BA - - BB - - BD - - BE - - BF - - BG - - BH - - BI - - BJ - - BL - - BM - - BN - - BO - - BQ - - BR - - BS - - BT - - BV - - BW - - BY - - BZ - - CA - - CC - - CD - - CF - - CG - - CH - - CI - - CK - - CL - - CM - - CN - - CO - - CR - - CU - - CV - - CW - - CX - - CY - - CZ - - DE - - DJ - - DK - - DM - - DO - - DZ - - EC - - EE - - EG - - EH - - ER - - ES - - ET - - FI - - FJ - - FK - - FM - - FO - - FR - - GA - - GB - - GD - - GE - - GF - - GG - - GH - - GI - - GL - - GM - - GN - - GP - - GQ - - GR - - GS - - GT - - GU - - GW - - GY - - HK - - HM - - HN - - HR - - HT - - HU - - ID - - IE - - IL - - IM - - IN - - IO - - IQ - - IR - - IS - - IT - - JE - - JM - - JO - - JP - - KE - - KG - - KH - - KI - - KM - - KN - - KP - - KR - - KW - - KY - - KZ - - LA - - LB - - LC - - LI - - LK - - LR - - LS - - LT - - LU - - LV - - LY - - MA - - MC - - MD - - ME - - MF - - MG - - MH - - MK - - ML - - MM - - MN - - MO - - MP - - MQ - - MR - - MS - - MT - - MU - - MV - - MW - - MX - - MY - - MZ - - NA - - NC - - NE - - NF - - NG - - NI - - NL - - 'NO' - - NP - - NR - - NU - - NZ - - OM - - PA - - PE - - PF - - PG - - PH - - PK - - PL - - PM - - PN - - PR - - PS - - PT - - PW - - PY - - QA - - RE - - RO - - RS - - RU - - RW - - SA - - SB - - SC - - SD - - SE - - SG - - SH - - SI - - SJ - - SK - - SL - - SM - - SN - - SO - - SR - - SS - - ST - - SV - - SX - - SY - - SZ - - TC - - TD - - TF - - TG - - TH - - TJ - - TK - - TL - - TM - - TN - - TO - - TR - - TT - - TV - - TW - - TZ - - UA - - UG - - UM - - US - - UY - - UZ - - VA - - VC - - VE - - VG - - VI - - VN - - VU - - WF - - WS - - YE - - YT - - ZA - - ZM - - ZW - - null - description: ISO 3166-1 Alpha-2 country code of the provider headquarters - example: US - datacenters: - type: array - nullable: true - items: - type: string - enum: - - AD - - AE - - AF - - AG - - AI - - AL - - AM - - AO - - AQ - - AR - - AS - - AT - - AU - - AW - - AX - - AZ - - BA - - BB - - BD - - BE - - BF - - BG - - BH - - BI - - BJ - - BL - - BM - - BN - - BO - - BQ - - BR - - BS - - BT - - BV - - BW - - BY - - BZ - - CA - - CC - - CD - - CF - - CG - - CH - - CI - - CK - - CL - - CM - - CN - - CO - - CR - - CU - - CV - - CW - - CX - - CY - - CZ - - DE - - DJ - - DK - - DM - - DO - - DZ - - EC - - EE - - EG - - EH - - ER - - ES - - ET - - FI - - FJ - - FK - - FM - - FO - - FR - - GA - - GB - - GD - - GE - - GF - - GG - - GH - - GI - - GL - - GM - - GN - - GP - - GQ - - GR - - GS - - GT - - GU - - GW - - GY - - HK - - HM - - HN - - HR - - HT - - HU - - ID - - IE - - IL - - IM - - IN - - IO - - IQ - - IR - - IS - - IT - - JE - - JM - - JO - - JP - - KE - - KG - - KH - - KI - - KM - - KN - - KP - - KR - - KW - - KY - - KZ - - LA - - LB - - LC - - LI - - LK - - LR - - LS - - LT - - LU - - LV - - LY - - MA - - MC - - MD - - ME - - MF - - MG - - MH - - MK - - ML - - MM - - MN - - MO - - MP - - MQ - - MR - - MS - - MT - - MU - - MV - - MW - - MX - - MY - - MZ - - NA - - NC - - NE - - NF - - NG - - NI - - NL - - 'NO' - - NP - - NR - - NU - - NZ - - OM - - PA - - PE - - PF - - PG - - PH - - PK - - PL - - PM - - PN - - PR - - PS - - PT - - PW - - PY - - QA - - RE - - RO - - RS - - RU - - RW - - SA - - SB - - SC - - SD - - SE - - SG - - SH - - SI - - SJ - - SK - - SL - - SM - - SN - - SO - - SR - - SS - - ST - - SV - - SX - - SY - - SZ - - TC - - TD - - TF - - TG - - TH - - TJ - - TK - - TL - - TM - - TN - - TO - - TR - - TT - - TV - - TW - - TZ - - UA - - UG - - UM - - US - - UY - - UZ - - VA - - VC - - VE - - VG - - VI - - VN - - VU - - WF - - WS - - YE - - YT - - ZA - - ZM - - ZW - description: ISO 3166-1 Alpha-2 country codes of the provider datacenter locations + endpoint_id: ep_abc123 + id: chatcmpl-abc123 + is_byok: false + latency: 1200 + model_permaslug: openai/gpt-4 + provider_name: OpenAI + status: 200 + properties: + endpoint_id: + description: Internal endpoint identifier + example: ep_abc123 + type: string + id: + description: Upstream provider response identifier + example: chatcmpl-abc123 + type: string + is_byok: + description: Whether the request used a bring-your-own-key + example: false + type: boolean + latency: + description: Response latency in milliseconds + example: 1200 + type: number + model_permaslug: + description: Canonical model slug + example: openai/gpt-4 + type: string + provider_name: + description: Name of the provider + enum: + - AnyScale + - Atoma + - Cent-ML + - CrofAI + - Enfer + - GoPomelo + - HuggingFace + - Hyperbolic 2 + - InoCloud + - Kluster + - Lambda + - Lepton + - Lynn 2 + - Lynn + - Mancer + - Meta + - Modal + - Nineteen + - OctoAI + - Recursal + - Reflection + - Replicate + - SambaNova 2 + - SF Compute + - Targon + - Together 2 + - Ubicloud + - 01.AI + - AkashML + - AI21 + - AionLabs + - Alibaba + - Ambient + - Amazon Bedrock + - Amazon Nova + - Anthropic + - Arcee AI + - AtlasCloud + - Avian + - Azure + - BaseTen + - BytePlus + - Black Forest Labs + - Cerebras + - Chutes + - Cirrascale + - Clarifai + - Cloudflare + - Cohere + - Crusoe + - DeepInfra + - DeepSeek + - Featherless + - Fireworks + - Friendli + - GMICloud + - Google + - Google AI Studio + - Groq + - Hyperbolic + - Inception + - Inceptron + - InferenceNet + - Ionstream + - Infermatic + - Io Net + - Inflection + - Liquid + - Mara + - Mancer 2 + - Minimax + - ModelRun + - Mistral + - Modular + - Moonshot AI + - Morph + - NCompass + - Nebius + - NextBit + - Novita + - Nvidia + - OpenAI + - OpenInference + - Parasail + - Perplexity + - Phala + - Reka + - Relace + - SambaNova + - Seed + - SiliconFlow + - Sourceful + - StepFun + - Stealth + - StreamLake + - Switchpoint + - Together + - Upstage + - Venice + - WandB + - Xiaomi + - xAI + - Z.AI + - FakeProvider + example: OpenAI + type: string + status: + description: HTTP status code from the provider + example: 200 + nullable: true + type: number + required: + - status + type: object + ProviderSort: + description: The provider sorting strategy (price, throughput, latency) + enum: + - price + - throughput + - latency + - exacto + example: price + type: string + ProviderSortConfig: + description: The provider sorting strategy (price, throughput, latency) + example: + by: price + partition: model + properties: + by: + description: The provider sorting strategy (price, throughput, latency) + enum: + - price + - throughput + - latency + - exacto + - null + example: price + nullable: true + type: string + partition: + description: >- + Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback + models remain fallbacks), "none" sorts all endpoints together regardless of model. + enum: + - model + - none + - null + example: model + nullable: true + type: string + type: object + PublicEndpoint: + description: Information about a specific model endpoint + example: + context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: openai/gpt-4 + model_name: GPT-4 + name: 'OpenAI: GPT-4' + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: OpenAI + quantization: fp16 + status: 0 + supported_parameters: + - temperature + - top_p + - max_tokens + supports_implicit_caching: true + tag: openai + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + properties: + context_length: + type: integer + latency_last_30m: + $ref: '#/components/schemas/PercentileStats' + max_completion_tokens: + type: integer + max_prompt_tokens: + type: integer + model_id: + description: The unique identifier for the model (permaslug) + example: openai/gpt-4 + type: string + model_name: + type: string + name: + type: string + pricing: + properties: + audio: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + audio_output: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + completion: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + discount: + type: number + image: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + image_output: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + image_token: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_audio_cache: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_cache_read: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_cache_write: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + internal_reasoning: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + prompt: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + request: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + web_search: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + required: + - prompt + - completion + type: object + provider_name: + $ref: '#/components/schemas/ProviderName' + quantization: + allOf: + - $ref: '#/components/schemas/Quantization' + - nullable: true + status: + $ref: '#/components/schemas/EndpointStatus' + supported_parameters: + items: + $ref: '#/components/schemas/Parameter' + type: array + supports_implicit_caching: + type: boolean + tag: + type: string + throughput_last_30m: + allOf: + - $ref: '#/components/schemas/PercentileStats' + - description: >- + Throughput percentiles in tokens per second over the last 30 minutes. Throughput measures output token + generation speed. Only visible when authenticated with an API key or cookie; returns null for + unauthenticated requests. + uptime_last_1d: + description: >- + Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * + 100. Rate-limited requests are excluded. Returns null if insufficient data. + format: double + type: number + uptime_last_30m: + format: double + type: number + uptime_last_5m: + description: >- + Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) + * 100. Rate-limited requests are excluded. Returns null if insufficient data. + format: double + type: number + required: + - name + - model_id + - model_name + - context_length + - pricing + - provider_name + - tag + - quantization + - max_completion_tokens + - max_prompt_tokens + - supported_parameters + - uptime_last_30m + - uptime_last_5m + - uptime_last_1d + - supports_implicit_caching + - latency_last_30m + - throughput_last_30m + type: object + PublicPricing: + description: Pricing information for the model + example: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + properties: + audio: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + audio_output: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + completion: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + discount: + type: number + image: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + image_output: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + image_token: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_audio_cache: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_cache_read: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + input_cache_write: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + internal_reasoning: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + prompt: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + request: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + web_search: + allOf: + - $ref: '#/components/schemas/BigNumberUnion' + - description: A number or string value representing a large number + required: + - prompt + - completion + type: object + Quantization: + enum: + - int4 + - int8 + - fp4 + - fp6 + - fp8 + - fp16 + - bf16 + - fp32 + - unknown + example: fp16 + type: string + ReasoningConfig: + allOf: + - $ref: '#/components/schemas/BaseReasoningConfig' + - nullable: true + properties: + enabled: + nullable: true + type: boolean + max_tokens: + type: integer + type: object + description: Configuration for reasoning mode in the response + example: + enabled: true + summary: auto + ReasoningDeltaEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningDeltaEvent' + - properties: {} + type: object + description: Event emitted when reasoning text delta is streamed + example: + content_index: 0 + delta: First, we need + item_id: item-1 + output_index: 0 + sequence_number: 4 + type: response.reasoning_text.delta + ReasoningDetailEncrypted: + description: Reasoning detail encrypted schema + example: + data: encrypted data + type: reasoning.encrypted + properties: + data: + type: string + format: + $ref: '#/components/schemas/ReasoningFormat' + id: + nullable: true + type: string + index: + type: integer + type: + enum: + - reasoning.encrypted + type: string + required: + - type + - data + type: object + ReasoningDetailSummary: + description: Reasoning detail summary schema + example: + summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... + type: reasoning.summary + properties: + format: + $ref: '#/components/schemas/ReasoningFormat' + id: + nullable: true + type: string + index: + type: integer + summary: + type: string + type: + enum: + - reasoning.summary + type: string + required: + - type + - summary + type: object + ReasoningDetailText: + description: Reasoning detail text schema + example: + signature: signature + text: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... + type: reasoning.text + properties: + format: + $ref: '#/components/schemas/ReasoningFormat' + id: + nullable: true + type: string + index: + type: integer + signature: + nullable: true + type: string + text: + nullable: true + type: string + type: + enum: + - reasoning.text + type: string + required: + - type + type: object + ReasoningDetailUnion: + description: Reasoning detail union schema + discriminator: + mapping: + reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted' + reasoning.summary: '#/components/schemas/ReasoningDetailSummary' + reasoning.text: '#/components/schemas/ReasoningDetailText' + propertyName: type + example: + summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... + type: reasoning.summary + oneOf: + - $ref: '#/components/schemas/ReasoningDetailSummary' + - $ref: '#/components/schemas/ReasoningDetailEncrypted' + - $ref: '#/components/schemas/ReasoningDetailText' + ReasoningDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningDoneEvent' + - properties: {} + type: object + description: Event emitted when reasoning text streaming is complete + example: + content_index: 0 + item_id: item-1 + output_index: 0 + sequence_number: 6 + text: First, we need to identify the key components and then combine them logically. + type: response.reasoning_text.done + ReasoningEffort: + enum: + - xhigh + - high + - medium + - low + - minimal + - none + - null + example: medium + nullable: true + type: string + ReasoningFormat: + enum: + - unknown + - openai-responses-v1 + - azure-openai-responses-v1 + - xai-responses-v1 + - anthropic-claude-v1 + - google-gemini-v1 + - null + example: unknown + nullable: true + type: string + ReasoningItem: + allOf: + - $ref: '#/components/schemas/OutputItemReasoning' + - properties: + content: + items: + $ref: '#/components/schemas/ReasoningTextContent' + nullable: true + type: array + format: + $ref: '#/components/schemas/ReasoningFormat' + signature: + nullable: true + type: string + type: object + description: Reasoning output item with signature and format extensions + example: + id: reasoning-abc123 + summary: + - text: Step by step analysis + type: summary_text + type: reasoning + ReasoningSummaryPartAddedEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent' + - properties: {} + type: object + description: Event emitted when a reasoning summary part is added + example: + item_id: item-1 + output_index: 0 + part: + text: '' + type: summary_text + sequence_number: 3 + summary_index: 0 + type: response.reasoning_summary_part.added + ReasoningSummaryPartDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningSummaryPartDoneEvent' + - properties: {} + type: object + description: Event emitted when a reasoning summary part is complete + example: + item_id: item-1 + output_index: 0 + part: + text: Analyzing the problem step by step to find the optimal solution. + type: summary_text + sequence_number: 7 + summary_index: 0 + type: response.reasoning_summary_part.done + ReasoningSummaryText: + example: + text: Analyzed the problem using first principles + type: summary_text + properties: + text: + type: string + type: + enum: + - summary_text + type: string + required: + - type + - text + type: object + ReasoningSummaryTextDeltaEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent' + - properties: {} + type: object + description: Event emitted when reasoning summary text delta is streamed + example: + delta: Analyzing + item_id: item-1 + output_index: 0 + sequence_number: 4 + summary_index: 0 + type: response.reasoning_summary_text.delta + ReasoningSummaryTextDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseReasoningSummaryTextDoneEvent' + - properties: {} + type: object + description: Event emitted when reasoning summary text streaming is complete + example: + item_id: item-1 + output_index: 0 + sequence_number: 6 + summary_index: 0 + text: Analyzing the problem step by step to find the optimal solution. + type: response.reasoning_summary_text.done + ReasoningSummaryVerbosity: + enum: + - auto + - concise + - detailed + - null + example: auto + nullable: true + type: string + ReasoningTextContent: + example: + text: Let me think step by step about this problem... + type: reasoning_text + properties: + text: + type: string + type: + enum: + - reasoning_text + type: string + required: + - type + - text + type: object + RefusalDeltaEvent: + allOf: + - $ref: '#/components/schemas/BaseRefusalDeltaEvent' + - properties: {} + type: object + description: Event emitted when a refusal delta is streamed + example: + content_index: 0 + delta: I'm sorry + item_id: item-1 + output_index: 0 + sequence_number: 4 + type: response.refusal.delta + RefusalDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseRefusalDoneEvent' + - properties: {} + type: object + description: Event emitted when refusal streaming is complete + example: + content_index: 0 + item_id: item-1 + output_index: 0 + refusal: I'm sorry, but I can't assist with that request. + sequence_number: 6 + type: response.refusal.done + RequestMetadata: + additionalProperties: + maxLength: 512 + type: string + description: >- + Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must + be ≤512 characters. Maximum 16 pairs allowed. + example: + session_id: abc-def-ghi + user_id: '123' + nullable: true + type: object + RequestTimeoutResponse: + description: Request Timeout - Operation exceeded time limit + example: + error: + code: 408 + message: Operation timed out. Please try again later. + properties: + error: + $ref: '#/components/schemas/RequestTimeoutResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + RequestTimeoutResponseErrorData: + description: Error data for RequestTimeoutResponse + example: + code: 408 + message: Operation timed out. Please try again later. + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message + type: object + ResponseHealingPlugin: + example: + enabled: true + id: response-healing + properties: + enabled: + description: Set to false to disable the response-healing plugin for this request. Defaults to true. + type: boolean + id: + enum: + - response-healing + type: string + required: + - id + type: object + ResponseIncludesEnum: + enum: + - file_search_call.results + - message.input_image.image_url + - computer_call_output.output.image_url + - reasoning.encrypted_content + - code_interpreter_call.outputs + example: file_search_call.results + type: string + ResponseOutputText: + example: + annotations: + - end_index: 42 + start_index: 0 + title: Paris - Wikipedia + type: url_citation + url: https://en.wikipedia.org/wiki/Paris + text: The capital of France is Paris. + type: output_text + properties: + annotations: + items: + $ref: '#/components/schemas/OpenAIResponsesAnnotation' + type: array + logprobs: + items: + properties: + bytes: + items: + type: integer + type: array + logprob: + format: double + type: number + token: + type: string + top_logprobs: + items: + properties: + bytes: + items: + type: integer + type: array + logprob: + format: double + type: number + token: + type: string + required: + - token + - bytes + - logprob + type: object + type: array + required: + - token + - bytes + - logprob + - top_logprobs + type: object + type: array + text: + type: string + type: + enum: + - output_text + type: string + required: + - type + - text + type: object + ResponsesErrorField: + description: Error information returned from the API + example: + code: rate_limit_exceeded + message: Rate limit exceeded. Please try again later. + nullable: true + properties: + code: + enum: + - server_error + - rate_limit_exceeded + - invalid_prompt + - vector_store_timeout + - invalid_image + - invalid_image_format + - invalid_base64_image + - invalid_image_url + - image_too_large + - image_too_small + - image_parse_error + - image_content_policy_violation + - invalid_image_mode + - image_file_too_large + - unsupported_image_media_type + - empty_image_file + - failed_to_download_image + - image_file_not_found + type: string + message: + type: string + required: + - code + - message + type: object + ResponsesRequest: + description: Request schema for Responses endpoint + example: + input: + - content: Hello, how are you? + role: user + type: message + model: anthropic/claude-4.5-sonnet-20250929 + temperature: 0.7 + tools: + - description: Get the current weather in a given location + name: get_current_weather + parameters: + properties: + location: + type: string + type: object + type: function + top_p: 0.9 + properties: + background: + nullable: true + type: boolean + frequency_penalty: + format: double + type: number + image_config: + additionalProperties: + anyOf: + - type: string + - format: double + type: number + description: >- + Provider-specific image configuration options. Keys and values vary by model/provider. See + https://openrouter.ai/docs/features/multimodal/image-generation for more details. + example: + aspect_ratio: '16:9' + type: object + include: + items: + $ref: '#/components/schemas/ResponseIncludesEnum' + nullable: true + type: array + input: + $ref: '#/components/schemas/Inputs' + instructions: + nullable: true + type: string + max_output_tokens: + type: integer + max_tool_calls: + type: integer + metadata: + $ref: '#/components/schemas/RequestMetadata' + modalities: + description: Output modalities for the response. Supported values are "text" and "image". + example: + - text + - image + items: + $ref: '#/components/schemas/OutputModalityEnum' + type: array + model: + type: string + models: + items: + type: string + type: array + parallel_tool_calls: + nullable: true + type: boolean + plugins: + description: Plugins you want to enable for this request, including their settings. + items: + discriminator: + mapping: + auto-router: '#/components/schemas/AutoRouterPlugin' + context-compression: '#/components/schemas/ContextCompressionPlugin' + file-parser: '#/components/schemas/FileParserPlugin' + moderation: '#/components/schemas/ModerationPlugin' + response-healing: '#/components/schemas/ResponseHealingPlugin' + web: '#/components/schemas/WebSearchPlugin' + propertyName: id + oneOf: + - $ref: '#/components/schemas/AutoRouterPlugin' + - $ref: '#/components/schemas/ModerationPlugin' + - $ref: '#/components/schemas/WebSearchPlugin' + - $ref: '#/components/schemas/FileParserPlugin' + - $ref: '#/components/schemas/ResponseHealingPlugin' + - $ref: '#/components/schemas/ContextCompressionPlugin' + type: array + presence_penalty: + format: double + type: number + previous_response_id: + nullable: true + type: string + prompt: + $ref: '#/components/schemas/StoredPromptTemplate' + prompt_cache_key: + nullable: true + type: string + provider: + $ref: '#/components/schemas/ProviderPreferences' + reasoning: + $ref: '#/components/schemas/ReasoningConfig' + route: + $ref: '#/components/schemas/DeprecatedRoute' + safety_identifier: + nullable: true + type: string + service_tier: + default: auto + enum: + - auto + - default + - flex + - priority + - scale + - null + nullable: true + type: string + session_id: + description: >- + A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for + observability. If provided in both the request body and the x-session-id header, the body value takes + precedence. Maximum of 256 characters. + maxLength: 256 + type: string + store: + const: false + default: false + type: boolean + stream: + default: false + type: boolean + temperature: + format: double + type: number + text: + $ref: '#/components/schemas/TextExtendedConfig' + tool_choice: + $ref: '#/components/schemas/OpenAIResponsesToolChoice' + tools: + items: + anyOf: + - allOf: + - $ref: '#/components/schemas/FunctionTool' + - properties: {} + type: object + description: Function tool definition + example: + description: Get the current weather in a location + name: get_weather + parameters: + properties: + location: + description: The city and state + type: string + unit: + enum: + - celsius + - fahrenheit + type: string + required: + - location + type: object + type: function + - $ref: '#/components/schemas/Preview_WebSearchServerTool' + - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' + - $ref: '#/components/schemas/Legacy_WebSearchServerTool' + - $ref: '#/components/schemas/WebSearchServerTool' + - $ref: '#/components/schemas/FileSearchServerTool' + - $ref: '#/components/schemas/ComputerUseServerTool' + - $ref: '#/components/schemas/CodeInterpreterServerTool' + - $ref: '#/components/schemas/McpServerTool' + - $ref: '#/components/schemas/ImageGenerationServerTool' + - $ref: '#/components/schemas/CodexLocalShellTool' + - $ref: '#/components/schemas/ShellServerTool' + - $ref: '#/components/schemas/ApplyPatchServerTool' + - $ref: '#/components/schemas/CustomTool' + - $ref: '#/components/schemas/DatetimeServerTool' + - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' + type: array + top_k: + type: integer + top_logprobs: + type: integer + top_p: + format: double + type: number + trace: + $ref: '#/components/schemas/TraceConfig' + truncation: + $ref: '#/components/schemas/OpenAIResponsesTruncation' + user: + description: >- + A unique identifier representing your end-user, which helps distinguish between different users of your app. + This allows your app to identify specific users in case of abuse reports, preventing your entire app from + being affected by the actions of individual users. Maximum of 256 characters. + maxLength: 256 + type: string + type: object + SearchContextSizeEnum: + description: Size of the search context for web search tools + enum: + - low + - medium + - high + example: medium + type: string + SearchQualityLevel: + description: >- + How much context to retrieve per result. Defaults to medium (15000 chars). Only applies when using the Exa + engine; ignored with native provider search. + enum: + - low + - medium + - high + example: medium + type: string + ServiceTier: + enum: + - auto + - default + - flex + - priority + - scale + - null + example: default + nullable: true + type: string + ServiceUnavailableResponse: + description: Service Unavailable - Service temporarily unavailable + example: + error: + code: 503 + message: Service temporarily unavailable + properties: + error: + $ref: '#/components/schemas/ServiceUnavailableResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + ServiceUnavailableResponseErrorData: + description: Error data for ServiceUnavailableResponse + example: + code: 503 + message: Service temporarily unavailable + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message + type: object + ShellServerTool: + description: Shell tool configuration + example: + type: shell + properties: + type: + enum: + - shell + type: string + required: + - type + type: object + StoredPromptTemplate: + example: + id: prompt-abc123 + variables: + name: John + nullable: true + properties: + id: + type: string + variables: + additionalProperties: + anyOf: + - type: string + - $ref: '#/components/schemas/InputText' + - $ref: '#/components/schemas/InputImage' + - $ref: '#/components/schemas/InputFile' + nullable: true + type: object + required: + - id + type: object + StreamEvents: + description: Union of all possible event types emitted during response streaming + discriminator: + mapping: + error: '#/components/schemas/ErrorEvent' + response.completed: '#/components/schemas/StreamEventsResponseCompleted' + response.content_part.added: '#/components/schemas/ContentPartAddedEvent' + response.content_part.done: '#/components/schemas/ContentPartDoneEvent' + response.created: '#/components/schemas/OpenResponsesCreatedEvent' + response.failed: '#/components/schemas/StreamEventsResponseFailed' + response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent' + response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent' + response.image_generation_call.completed: '#/components/schemas/ImageGenCallCompletedEvent' + response.image_generation_call.generating: '#/components/schemas/ImageGenCallGeneratingEvent' + response.image_generation_call.in_progress: '#/components/schemas/ImageGenCallInProgressEvent' + response.image_generation_call.partial_image: '#/components/schemas/ImageGenCallPartialImageEvent' + response.in_progress: '#/components/schemas/OpenResponsesInProgressEvent' + response.incomplete: '#/components/schemas/StreamEventsResponseIncomplete' + response.output_item.added: '#/components/schemas/StreamEventsResponseOutputItemAdded' + response.output_item.done: '#/components/schemas/StreamEventsResponseOutputItemDone' + response.output_text.annotation.added: '#/components/schemas/AnnotationAddedEvent' + response.output_text.delta: '#/components/schemas/TextDeltaEvent' + response.output_text.done: '#/components/schemas/TextDoneEvent' + response.reasoning_summary_part.added: '#/components/schemas/ReasoningSummaryPartAddedEvent' + response.reasoning_summary_part.done: '#/components/schemas/ReasoningSummaryPartDoneEvent' + response.reasoning_summary_text.delta: '#/components/schemas/ReasoningSummaryTextDeltaEvent' + response.reasoning_summary_text.done: '#/components/schemas/ReasoningSummaryTextDoneEvent' + response.reasoning_text.delta: '#/components/schemas/ReasoningDeltaEvent' + response.reasoning_text.done: '#/components/schemas/ReasoningDoneEvent' + response.refusal.delta: '#/components/schemas/RefusalDeltaEvent' + response.refusal.done: '#/components/schemas/RefusalDoneEvent' + response.web_search_call.completed: '#/components/schemas/WebSearchCallCompletedEvent' + response.web_search_call.in_progress: '#/components/schemas/WebSearchCallInProgressEvent' + response.web_search_call.searching: '#/components/schemas/WebSearchCallSearchingEvent' + propertyName: type + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: in_progress + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 0 + type: response.created + oneOf: + - $ref: '#/components/schemas/OpenResponsesCreatedEvent' + - $ref: '#/components/schemas/OpenResponsesInProgressEvent' + - $ref: '#/components/schemas/StreamEventsResponseCompleted' + - $ref: '#/components/schemas/StreamEventsResponseIncomplete' + - $ref: '#/components/schemas/StreamEventsResponseFailed' + - $ref: '#/components/schemas/ErrorEvent' + - $ref: '#/components/schemas/StreamEventsResponseOutputItemAdded' + - $ref: '#/components/schemas/StreamEventsResponseOutputItemDone' + - $ref: '#/components/schemas/ContentPartAddedEvent' + - $ref: '#/components/schemas/ContentPartDoneEvent' + - $ref: '#/components/schemas/TextDeltaEvent' + - $ref: '#/components/schemas/TextDoneEvent' + - $ref: '#/components/schemas/RefusalDeltaEvent' + - $ref: '#/components/schemas/RefusalDoneEvent' + - $ref: '#/components/schemas/AnnotationAddedEvent' + - $ref: '#/components/schemas/FunctionCallArgsDeltaEvent' + - $ref: '#/components/schemas/FunctionCallArgsDoneEvent' + - $ref: '#/components/schemas/ReasoningDeltaEvent' + - $ref: '#/components/schemas/ReasoningDoneEvent' + - $ref: '#/components/schemas/ReasoningSummaryPartAddedEvent' + - $ref: '#/components/schemas/ReasoningSummaryPartDoneEvent' + - $ref: '#/components/schemas/ReasoningSummaryTextDeltaEvent' + - $ref: '#/components/schemas/ReasoningSummaryTextDoneEvent' + - $ref: '#/components/schemas/ImageGenCallInProgressEvent' + - $ref: '#/components/schemas/ImageGenCallGeneratingEvent' + - $ref: '#/components/schemas/ImageGenCallPartialImageEvent' + - $ref: '#/components/schemas/ImageGenCallCompletedEvent' + - $ref: '#/components/schemas/WebSearchCallInProgressEvent' + - $ref: '#/components/schemas/WebSearchCallSearchingEvent' + - $ref: '#/components/schemas/WebSearchCallCompletedEvent' + StreamEventsResponseCompleted: + allOf: + - $ref: '#/components/schemas/CompletedEvent' + - properties: + response: + $ref: '#/components/schemas/OpenResponsesResult' + type: object + description: Event emitted when a response has completed successfully + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: completed + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 10 + type: response.completed + StreamEventsResponseFailed: + allOf: + - $ref: '#/components/schemas/FailedEvent' + - properties: + response: + $ref: '#/components/schemas/OpenResponsesResult' + type: object + description: Event emitted when a response has failed + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: failed + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 3 + type: response.failed + StreamEventsResponseIncomplete: + allOf: + - $ref: '#/components/schemas/IncompleteEvent' + - properties: + response: + $ref: '#/components/schemas/OpenResponsesResult' + type: object + description: Event emitted when a response is incomplete + example: + response: + created_at: 1704067200 + error: null + id: resp-abc123 + incomplete_details: null + instructions: null + max_output_tokens: null + metadata: null + model: gpt-4 + object: response + output: [] + parallel_tool_calls: true + status: incomplete + temperature: null + tool_choice: auto + tools: [] + top_p: null + sequence_number: 5 + type: response.incomplete + StreamEventsResponseOutputItemAdded: + allOf: + - $ref: '#/components/schemas/OutputItemAddedEvent' + - properties: + item: + $ref: '#/components/schemas/OutputItems' + type: object + description: Event emitted when a new output item is added to the response + example: + item: + content: [] + id: item-1 + role: assistant + status: in_progress + type: message + output_index: 0 + sequence_number: 2 + type: response.output_item.added + StreamEventsResponseOutputItemDone: + allOf: + - $ref: '#/components/schemas/OutputItemDoneEvent' + - properties: + item: + $ref: '#/components/schemas/OutputItems' + type: object + description: Event emitted when an output item is complete + example: + item: + content: + - annotations: [] + text: Hello! How can I help you? + type: output_text + id: item-1 + role: assistant + status: completed + type: message + output_index: 0 + sequence_number: 8 + type: response.output_item.done + StreamLogprob: + allOf: + - $ref: '#/components/schemas/OpenResponsesLogProbs' + - properties: + top_logprobs: + items: + $ref: '#/components/schemas/StreamLogprobTopLogprob' + type: array + type: object + description: Log probability information for a token + example: + bytes: + - 72 + - 101 + - 108 + - 108 + - 111 + logprob: -0.5 + token: Hello + top_logprobs: [] + StreamLogprobTopLogprob: + allOf: + - $ref: '#/components/schemas/OpenResponsesTopLogprobs' + - properties: {} + type: object + description: Alternative token with its log probability + example: + bytes: + - 72 + - 101 + - 108 + - 108 + - 111 + logprob: -0.5 + token: Hello + TextConfig: + description: Text output configuration including format and verbosity + example: + format: + type: text + verbosity: medium + properties: + format: + $ref: '#/components/schemas/Formats' + verbosity: + enum: + - high + - low + - medium + - null + nullable: true + type: string + type: object + TextDeltaEvent: + allOf: + - $ref: '#/components/schemas/BaseTextDeltaEvent' + - properties: + logprobs: + items: + $ref: '#/components/schemas/StreamLogprob' + type: array + type: object + description: Event emitted when a text delta is streamed + example: + content_index: 0 + delta: Hello + item_id: item-1 + logprobs: [] + output_index: 0 + sequence_number: 4 + type: response.output_text.delta + TextDoneEvent: + allOf: + - $ref: '#/components/schemas/BaseTextDoneEvent' + - properties: + logprobs: + items: + $ref: '#/components/schemas/StreamLogprob' + type: array + type: object + description: Event emitted when text streaming is complete + example: + content_index: 0 + item_id: item-1 + logprobs: [] + output_index: 0 + sequence_number: 6 + text: Hello! How can I help you? + type: response.output_text.done + TextExtendedConfig: + allOf: + - $ref: '#/components/schemas/TextConfig' + - properties: {} + type: object + description: Text output configuration including format and verbosity + example: + format: + type: text + ToolCallStatus: + enum: + - in_progress + - completed + - incomplete + example: completed + type: string + ToolChoiceAllowed: + description: Constrains the model to a pre-defined set of allowed tools + example: + mode: auto + tools: + - name: get_weather + type: function + type: allowed_tools + properties: + mode: + anyOf: + - enum: + - auto + type: string + - enum: + - required + type: string + tools: + items: + additionalProperties: + nullable: true + type: object + type: array + type: + enum: + - allowed_tools + type: string + required: + - type + - mode + - tools + type: object + TooManyRequestsResponse: + description: Too Many Requests - Rate limit exceeded + example: + error: + code: 429 + message: Rate limit exceeded + properties: + error: + $ref: '#/components/schemas/TooManyRequestsResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + TooManyRequestsResponseErrorData: + description: Error data for TooManyRequestsResponse + example: + code: 429 + message: Rate limit exceeded + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message + type: object + TopProviderInfo: + description: Information about the top provider for this model + example: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 + properties: + context_length: + description: Context length from the top provider + example: 8192 + type: integer + is_moderated: + description: Whether the top provider moderates content + example: true + type: boolean + max_completion_tokens: + description: Maximum completion tokens from the top provider + example: 4096 + type: integer + required: + - is_moderated + type: object + TraceConfig: + additionalProperties: + nullable: true + description: >- + Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, + parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured + broadcast destinations. + example: + trace_id: trace-abc123 + trace_name: my-app-trace + properties: + generation_name: + type: string + parent_span_id: + type: string + span_name: + type: string + trace_id: + type: string + trace_name: + type: string + type: object + Truncation: + enum: + - auto + - disabled + - null + example: auto + nullable: true + type: string + UnauthorizedResponse: + description: Unauthorized - Authentication required or invalid credentials + example: + error: + code: 401 + message: Missing Authentication header + properties: + error: + $ref: '#/components/schemas/UnauthorizedResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + UnauthorizedResponseErrorData: + description: Error data for UnauthorizedResponse + example: + code: 401 + message: Missing Authentication header + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message + type: object + UnprocessableEntityResponse: + description: Unprocessable Entity - Semantic validation failure + example: + error: + code: 422 + message: Invalid argument + properties: + error: + $ref: '#/components/schemas/UnprocessableEntityResponseErrorData' + user_id: + nullable: true + type: string + required: + - error + type: object + UnprocessableEntityResponseErrorData: + description: Error data for UnprocessableEntityResponse + example: + code: 422 + message: Invalid argument + properties: + code: + type: integer + message: + type: string + metadata: + additionalProperties: + nullable: true + nullable: true + type: object + required: + - code + - message + type: object + UpdateGuardrailRequest: + example: + description: Updated description + limit_usd: 75 + name: Updated Guardrail Name + reset_interval: weekly + properties: + allowed_models: + description: Array of model identifiers (slug or canonical_slug accepted) + example: + - openai/gpt-5.2 + items: + type: string + minItems: 1 + nullable: true + type: array + allowed_providers: + description: New list of allowed provider IDs + example: + - openai + - anthropic + - deepseek + items: + type: string + minItems: 1 + nullable: true + type: array + description: + description: New description for the guardrail + example: Updated description + maxLength: 1000 + nullable: true + type: string + enforce_zdr: + description: Whether to enforce zero data retention + example: true + nullable: true + type: boolean + ignored_providers: + description: List of provider IDs to exclude from routing + example: + - azure + items: + type: string + minItems: 1 + nullable: true + type: array + limit_usd: + description: New spending limit in USD + example: 75 + format: double + type: number + name: + description: New name for the guardrail + example: Updated Guardrail Name + maxLength: 200 + minLength: 1 + type: string + reset_interval: + $ref: '#/components/schemas/GuardrailInterval' + type: object + UpdateGuardrailResponse: + example: + data: + allowed_models: null + allowed_providers: + - openai + created_at: '2025-08-24T10:30:00Z' + description: Updated description + enforce_zdr: true + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 75 + name: Updated Guardrail Name + reset_interval: weekly + updated_at: '2025-08-24T16:00:00Z' + properties: + data: + allOf: + - $ref: '#/components/schemas/Guardrail' + - description: The updated guardrail + required: + - data + type: object + URLCitation: + example: + end_index: 42 + start_index: 0 + title: OpenRouter Documentation + type: url_citation + url: https://openrouter.ai/docs + properties: + end_index: + type: integer + start_index: + type: integer + title: + type: string + type: + enum: + - url_citation + type: string + url: + type: string + required: + - type + - url + - title + - start_index + - end_index + type: object + Usage: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesUsage' + - nullable: true + properties: + cost: + description: Cost of the completion + format: double + type: number + cost_details: + properties: + upstream_inference_cost: + format: double + type: number + upstream_inference_input_cost: + format: double + type: number + upstream_inference_output_cost: + format: double + type: number + required: + - upstream_inference_input_cost + - upstream_inference_output_cost + type: object + is_byok: + description: Whether a request was made using a Bring Your Own Key configuration + type: boolean + type: object + description: Token usage information for the response + example: + cost: 0.0012 + cost_details: + upstream_inference_cost: null + upstream_inference_input_cost: 0.0008 + upstream_inference_output_cost: 0.0004 + input_tokens: 10 + input_tokens_details: + cached_tokens: 0 + output_tokens: 25 + output_tokens_details: + reasoning_tokens: 0 + total_tokens: 35 + VideoGenerationRequest: + example: + aspect_ratio: '16:9' + duration: 8 + model: google/veo-3.1 + prompt: A serene mountain landscape at sunset + resolution: 720p + properties: + aspect_ratio: + description: Aspect ratio of the generated video + enum: + - '16:9' + - '9:16' + - '1:1' + - '4:3' + - '3:4' + - '21:9' + - '9:21' + example: '16:9' + type: string + duration: + description: Duration of the generated video in seconds + example: 8 + exclusiveMinimum: true + minimum: 0 + type: integer + generate_audio: + description: >- + Whether to generate audio alongside the video. Defaults to true for models that support audio output, false + otherwise. + example: true + type: boolean + input_references: + description: Reference images to guide video generation + items: + $ref: '#/components/schemas/ContentPartImage' + type: array + model: + type: string + prompt: + type: string + provider: + description: Provider-specific passthrough configuration + properties: + options: + description: >- + Provider-specific options keyed by provider slug. The options for the matched provider are spread into + the upstream request body. + example: + google-vertex: + output_config: + effort: low + properties: + 01ai: + additionalProperties: + nullable: true + type: object + ai21: + additionalProperties: + nullable: true + type: object + aion-labs: + additionalProperties: + nullable: true + type: object + akashml: + additionalProperties: + nullable: true + type: object + alibaba: + additionalProperties: + nullable: true + type: object + amazon-bedrock: + additionalProperties: + nullable: true + type: object + amazon-nova: + additionalProperties: + nullable: true + type: object + ambient: + additionalProperties: + nullable: true + type: object + anthropic: + additionalProperties: + nullable: true + type: object + anyscale: + additionalProperties: + nullable: true + type: object + arcee-ai: + additionalProperties: + nullable: true + type: object + atlas-cloud: + additionalProperties: + nullable: true + type: object + atoma: + additionalProperties: + nullable: true + type: object + avian: + additionalProperties: + nullable: true + type: object + azure: + additionalProperties: + nullable: true + type: object + baseten: + additionalProperties: + nullable: true + type: object + black-forest-labs: + additionalProperties: + nullable: true + type: object + byteplus: + additionalProperties: + nullable: true + type: object + centml: + additionalProperties: + nullable: true + type: object + cerebras: + additionalProperties: + nullable: true + type: object + chutes: + additionalProperties: + nullable: true + type: object + cirrascale: + additionalProperties: + nullable: true + type: object + clarifai: + additionalProperties: + nullable: true + type: object + cloudflare: + additionalProperties: + nullable: true + type: object + cohere: + additionalProperties: + nullable: true + type: object + crofai: + additionalProperties: + nullable: true + type: object + crusoe: + additionalProperties: + nullable: true + type: object + deepinfra: + additionalProperties: + nullable: true + type: object + deepseek: + additionalProperties: + nullable: true + type: object + enfer: + additionalProperties: + nullable: true + type: object + fake-provider: + additionalProperties: + nullable: true + type: object + featherless: + additionalProperties: + nullable: true + type: object + fireworks: + additionalProperties: + nullable: true + type: object + friendli: + additionalProperties: + nullable: true + type: object + gmicloud: + additionalProperties: + nullable: true + type: object + google-ai-studio: + additionalProperties: + nullable: true + type: object + google-vertex: + additionalProperties: + nullable: true + type: object + gopomelo: + additionalProperties: + nullable: true + type: object + groq: + additionalProperties: + nullable: true + type: object + huggingface: + additionalProperties: + nullable: true + type: object + hyperbolic: + additionalProperties: + nullable: true + type: object + hyperbolic-quantized: + additionalProperties: + nullable: true + type: object + inception: + additionalProperties: + nullable: true + type: object + inceptron: + additionalProperties: + nullable: true + type: object + inference-net: + additionalProperties: + nullable: true + type: object + infermatic: + additionalProperties: + nullable: true + type: object + inflection: + additionalProperties: + nullable: true + type: object + inocloud: + additionalProperties: + nullable: true + type: object + io-net: + additionalProperties: + nullable: true + type: object + ionstream: + additionalProperties: + nullable: true + type: object + klusterai: + additionalProperties: + nullable: true + type: object + lambda: + additionalProperties: + nullable: true + type: object + lepton: + additionalProperties: + nullable: true + type: object + liquid: + additionalProperties: + nullable: true + type: object + lynn: + additionalProperties: + nullable: true + type: object + lynn-private: + additionalProperties: + nullable: true + type: object + mancer: + additionalProperties: + nullable: true + type: object + mancer-old: + additionalProperties: + nullable: true + type: object + mara: + additionalProperties: + nullable: true + type: object + meta: + additionalProperties: + nullable: true + type: object + minimax: + additionalProperties: + nullable: true + type: object + mistral: + additionalProperties: + nullable: true + type: object + modal: + additionalProperties: + nullable: true + type: object + modelrun: + additionalProperties: + nullable: true + type: object + modular: + additionalProperties: + nullable: true + type: object + moonshotai: + additionalProperties: + nullable: true + type: object + morph: + additionalProperties: + nullable: true + type: object + ncompass: + additionalProperties: + nullable: true + type: object + nebius: + additionalProperties: + nullable: true + type: object + nextbit: + additionalProperties: + nullable: true + type: object + nineteen: + additionalProperties: + nullable: true + type: object + novita: + additionalProperties: + nullable: true + type: object + nvidia: + additionalProperties: + nullable: true + type: object + octoai: + additionalProperties: + nullable: true + type: object + open-inference: + additionalProperties: + nullable: true + type: object + openai: + additionalProperties: + nullable: true + type: object + parasail: + additionalProperties: + nullable: true + type: object + perplexity: + additionalProperties: + nullable: true + type: object + phala: + additionalProperties: + nullable: true + type: object + recursal: + additionalProperties: + nullable: true + type: object + reflection: + additionalProperties: + nullable: true + type: object + reka: + additionalProperties: + nullable: true + type: object + relace: + additionalProperties: + nullable: true + type: object + replicate: + additionalProperties: + nullable: true + type: object + sambanova: + additionalProperties: + nullable: true + type: object + sambanova-cloaked: + additionalProperties: + nullable: true + type: object + seed: + additionalProperties: + nullable: true + type: object + sf-compute: + additionalProperties: + nullable: true + type: object + siliconflow: + additionalProperties: + nullable: true + type: object + sourceful: + additionalProperties: + nullable: true + type: object + stealth: + additionalProperties: + nullable: true + type: object + stepfun: + additionalProperties: + nullable: true + type: object + streamlake: + additionalProperties: + nullable: true + type: object + switchpoint: + additionalProperties: + nullable: true + type: object + targon: + additionalProperties: + nullable: true + type: object + together: + additionalProperties: + nullable: true + type: object + together-lite: + additionalProperties: + nullable: true + type: object + ubicloud: + additionalProperties: + nullable: true + type: object + upstage: + additionalProperties: + nullable: true + type: object + venice: + additionalProperties: + nullable: true + type: object + wandb: + additionalProperties: + nullable: true + type: object + xai: + additionalProperties: + nullable: true + type: object + xiaomi: + additionalProperties: + nullable: true + type: object + z-ai: + additionalProperties: + nullable: true + type: object + type: object + type: object + resolution: + description: Resolution of the generated video + enum: + - 480p + - 720p + - 1080p + - 1K + - 2K + - 4K + example: 720p + type: string + seed: + description: >- + If specified, the generation will sample deterministically, such that repeated requests with the same seed + and parameters should return the same result. Determinism is not guaranteed for all providers. + type: integer + size: + description: >- + Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable + with resolution + aspect_ratio. + example: 1280x720 + type: string + required: + - prompt + - model + type: object + VideoGenerationResponse: + example: + generation_id: gen-xyz789 + id: job-abc123 + polling_url: /api/v1/videos/job-abc123 + status: pending + properties: + error: + type: string + generation_id: + description: The generation ID associated with this video generation job. Available once the job has been processed. + type: string + id: + type: string + polling_url: + type: string + status: + enum: + - pending + - in_progress + - completed + - failed + - cancelled + - expired + type: string + unsigned_urls: + items: + type: string + type: array + usage: + $ref: '#/components/schemas/VideoGenerationUsage' + required: + - id + - polling_url + - status + type: object + VideoGenerationUsage: + description: Usage and cost information for the video generation. Available once the job has completed. + example: + cost: 0.5 + is_byok: false + properties: + cost: + description: The cost of the video generation in USD. + format: double + type: number + is_byok: + description: Whether the request was made using a Bring Your Own Key configuration. + type: boolean + type: object + VideoModel: + example: + allowed_passthrough_parameters: [] + canonical_slug: google/veo-3.1 + created: 1700000000 + description: Google video generation model + id: google/veo-3.1 + name: Veo 3.1 + pricing_skus: + generate: '0.50' + supported_aspect_ratios: + - '16:9' + supported_durations: + - 5 + - 8 + supported_resolutions: + - 720p + supported_sizes: null + properties: + allowed_passthrough_parameters: + description: List of parameters that are allowed to be passed through to the provider + items: + type: string + type: array + canonical_slug: + description: Canonical slug for the model + example: openai/gpt-4 + type: string + created: + description: Unix timestamp of when the model was created + example: 1692901234 + type: integer + description: + description: Description of the model + example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + type: string + hugging_face_id: + description: Hugging Face model identifier, if applicable + example: microsoft/DialoGPT-medium + nullable: true + type: string + id: + description: Unique identifier for the model + example: openai/gpt-4 + type: string + name: + description: Display name of the model + example: GPT-4 + type: string + pricing_skus: + additionalProperties: + type: string + description: Pricing SKUs with provider prefix stripped, values as strings + nullable: true + type: object + supported_aspect_ratios: + description: Supported output aspect ratios + items: + enum: + - '16:9' + - '9:16' + - '1:1' + - '4:3' + - '3:4' + - '21:9' + - '9:21' + type: string + nullable: true + type: array + supported_durations: + description: Supported video durations in seconds + items: + type: integer + nullable: true + type: array + supported_resolutions: + description: Supported output resolutions + items: + enum: + - 480p + - 720p + - 1080p + - 1K + - 2K + - 4K + type: string + nullable: true + type: array + supported_sizes: + description: Supported output sizes (width x height) + items: + enum: + - 480x480 + - 480x640 + - 480x854 + - 480x1120 + - 640x480 + - 720x720 + - 720x960 + - 720x1280 + - 720x1680 + - 854x480 + - 960x720 + - 1080x1080 + - 1080x1440 + - 1080x1920 + - 1080x2520 + - 1120x480 + - 1280x720 + - 1440x1080 + - 1680x720 + - 1920x1080 + - 2160x2160 + - 2160x2880 + - 2160x3840 + - 2160x5040 + - 2520x1080 + - 2880x2160 + - 3840x2160 + - 5040x2160 + type: string + nullable: true + type: array + required: + - id + - canonical_slug + - name + - created + - supported_resolutions + - supported_aspect_ratios + - supported_sizes + - supported_durations + - allowed_passthrough_parameters + type: object + VideoModelsListResponse: + example: + data: + - allowed_passthrough_parameters: [] + canonical_slug: google/veo-3.1 + created: 1700000000 + description: Google video generation model + id: google/veo-3.1 + name: Veo 3.1 + pricing_skus: + generate: '0.50' + supported_aspect_ratios: + - '16:9' + supported_durations: + - 5 + - 8 + supported_resolutions: + - 720p + supported_sizes: null + properties: + data: + items: + $ref: '#/components/schemas/VideoModel' + type: array + required: + - data + type: object + WebSearchCallCompletedEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesSearchCompleted' + - properties: {} + type: object + description: Web search call completed + example: + item_id: ws-123 + output_index: 0 + sequence_number: 3 + type: response.web_search_call.completed + WebSearchCallInProgressEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallInProgress' + - properties: {} + type: object + description: Web search call in progress + example: + item_id: ws-123 + output_index: 0 + sequence_number: 1 + type: response.web_search_call.in_progress + WebSearchCallSearchingEvent: + allOf: + - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallSearching' + - properties: {} + type: object + description: Web search call is searching + example: + item_id: ws-123 + output_index: 0 + sequence_number: 2 + type: response.web_search_call.searching + WebSearchConfig: + example: + max_results: 5 + search_context_size: medium + properties: + allowed_domains: + description: >- + Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, + OpenAI, xAI). Not supported with Firecrawl or Perplexity. + items: + type: string + type: array + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + excluded_domains: + description: >- + Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported + with Firecrawl, OpenAI (silently ignored), or Perplexity. + items: + type: string + type: array + max_results: + description: >- + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 + type: integer + max_total_results: + description: >- + Maximum total number of search results across all search calls in a single request. Once this limit is + reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic + loops. + example: 20 + type: integer + search_context_size: + $ref: '#/components/schemas/SearchQualityLevel' + user_location: + $ref: '#/components/schemas/WebSearchUserLocationServerTool' + type: object + WebSearchDomainFilter: + example: + allowed_domains: + - example.com + excluded_domains: + - spam.com + nullable: true + properties: + allowed_domains: + items: + type: string + nullable: true + type: array + excluded_domains: + items: + type: string + nullable: true + type: array + type: object + WebSearchEngine: + description: The search engine to use for web search. + enum: + - native + - exa + - firecrawl + - parallel + example: exa + type: string + WebSearchEngineEnum: + description: >- + Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" + forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires + BYOK). "parallel" uses the Parallel search API. + enum: + - auto + - native + - exa + - firecrawl + - parallel + example: auto + type: string + WebSearchPlugin: + example: + enabled: true + id: web + max_results: 5 + properties: + enabled: + description: Set to false to disable the web-search plugin for this request. Defaults to true. + type: boolean + engine: + $ref: '#/components/schemas/WebSearchEngine' + exclude_domains: + description: >- + A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path + filtering (e.g. "openai.com/blog"). + example: + - example.com + - '*.substack.com' + - openai.com/blog + items: + type: string + type: array + id: + enum: + - web + type: string + include_domains: + description: >- + A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path + filtering (e.g. "openai.com/blog"). + example: + - example.com + - '*.substack.com' + - openai.com/blog + items: + type: string + type: array + max_results: + type: integer + search_prompt: + type: string + required: + - id + type: object + WebSearchServerTool: + description: Web search tool configuration (2025-08-26 version) + example: + engine: auto + filters: + allowed_domains: + - example.com + type: web_search_2025_08_26 + properties: + engine: + $ref: '#/components/schemas/WebSearchEngineEnum' + filters: + $ref: '#/components/schemas/WebSearchDomainFilter' + max_results: + description: >- + Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and + Parallel engines; ignored with native provider search. + example: 5 + type: integer + search_context_size: + $ref: '#/components/schemas/SearchContextSizeEnum' + type: + enum: + - web_search_2025_08_26 + type: string + user_location: + $ref: '#/components/schemas/WebSearchUserLocation' + required: + - type + type: object + WebSearchServerTool_OpenRouter: + description: 'OpenRouter built-in server tool: searches the web for current information' + example: + parameters: + max_results: 5 + type: openrouter:web_search + properties: + parameters: + properties: + max_results: + description: Maximum number of search results to return per search call. Defaults to 5. + example: 5 + type: integer + max_total_results: + description: >- + Maximum total number of search results across all search calls in a single request. Once this limit is + reached, the tool will stop returning new results. + example: 20 + type: integer + type: object + type: + enum: + - openrouter:web_search + type: string + required: + - type + type: object + WebSearchSource: + example: + type: url + url: https://example.com/article + properties: + type: + enum: + - url + type: string + url: + type: string + required: + - type + - url + type: object + WebSearchStatus: + enum: + - completed + - searching + - in_progress + - failed + example: completed + type: string + WebSearchUserLocation: + description: User location information for web search + example: + city: San Francisco + country: USA + region: California + timezone: America/Los_Angeles + type: approximate + nullable: true + properties: + city: + nullable: true + type: string + country: + nullable: true + type: string + region: + nullable: true + type: string + timezone: + nullable: true + type: string + type: + enum: + - approximate + type: string + type: object + WebSearchUserLocationServerTool: + description: Approximate user location for location-biased results. + example: + city: San Francisco + country: US + region: California + timezone: America/Los_Angeles + type: approximate + properties: + city: + type: string + country: + type: string + region: + type: string + timezone: + type: string + type: + enum: + - approximate + type: string + type: object + securitySchemes: + apiKey: + description: API key as bearer token in Authorization header + scheme: bearer + type: http + bearer: + description: API key as bearer token in Authorization header + scheme: bearer + type: http +externalDocs: + description: OpenRouter Documentation + url: https://openrouter.ai/docs +info: + contact: + email: support@openrouter.ai + name: OpenRouter Support + url: https://openrouter.ai/docs + description: OpenAI-compatible API with additional OpenRouter features + license: + name: MIT + url: https://opensource.org/licenses/MIT + title: OpenRouter API + version: 1.0.0 +openapi: 3.1.0 +paths: + /activity: + get: + description: >- + Returns user activity data grouped by endpoint for the last 30 (completed) UTC days. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getUserActivity + parameters: + - description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). + in: query + name: date + required: false + schema: + description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). + example: '2025-08-24' + type: string + - description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). + in: query + name: api_key_hash + required: false + schema: + description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). + example: abc123def456... + type: string + - description: Filter by org member user ID. Only applicable for organization accounts. + in: query + name: user_id + required: false + schema: + description: Filter by org member user ID. Only applicable for organization accounts. + example: user_abc123 + type: string + responses: + '200': + content: + application/json: + example: + data: + - byok_usage_inference: 0.012 + completion_tokens: 125 + date: '2025-08-24' + endpoint_id: 550e8400-e29b-41d4-a716-446655440000 + model: openai/gpt-4.1 + model_permaslug: openai/gpt-4.1-2025-04-14 + prompt_tokens: 50 + provider_name: OpenAI + reasoning_tokens: 25 + requests: 5 + usage: 0.015 + schema: + $ref: '#/components/schemas/ActivityResponse' + description: Returns user activity data grouped by endpoint + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '403': + content: + application/json: + example: + error: + code: 403 + message: Only management keys can perform this operation + schema: + $ref: '#/components/schemas/ForbiddenResponse' + description: Forbidden - Authentication successful but insufficient permissions + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get user activity grouped by endpoint + tags: + - Analytics + /auth/keys: + post: + description: Exchange an authorization code from the PKCE flow for a user-controlled API key + operationId: exchangeAuthCodeForAPIKey + requestBody: + content: + application/json: + example: + code: auth_code_abc123def456 + code_challenge_method: S256 + code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk + schema: + example: + code: auth_code_abc123def456 + code_challenge_method: S256 + code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk + properties: + code: + description: The authorization code received from the OAuth redirect + example: auth_code_abc123def456 + type: string + code_challenge_method: + description: The method used to generate the code challenge + enum: + - S256 + - plain + - null + example: S256 + nullable: true + type: string + code_verifier: + description: The code verifier if code_challenge was used in the authorization request + example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk + type: string + required: + - code + type: object + required: true + responses: + '200': + content: + application/json: + example: + key: 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 + user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah + schema: + example: + key: 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 + user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah + properties: + key: + description: The API key to use for OpenRouter requests + example: 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 + type: string + user_id: + description: User ID associated with the API key + example: user_2yOPcMpKoQhcd4bVgSMlELRaIah + nullable: true + type: string + required: + - key + - user_id + type: object + description: Successfully exchanged code for an API key + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '403': + content: + application/json: + example: + error: + code: 403 + message: Only management keys can perform this operation + schema: + $ref: '#/components/schemas/ForbiddenResponse' + description: Forbidden - Authentication successful but insufficient permissions + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Exchange authorization code for API key + tags: + - OAuth + /auth/keys/code: + post: + description: Create an authorization code for the PKCE flow to generate a user-controlled API key + operationId: createAuthKeysCode + requestBody: + content: + application/json: + example: + callback_url: https://myapp.com/auth/callback + code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM + code_challenge_method: S256 + limit: 100 + schema: + example: + callback_url: https://myapp.com/auth/callback + code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM + code_challenge_method: S256 + limit: 100 + properties: + callback_url: + description: >- + The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are + allowed. + example: https://myapp.com/auth/callback + format: uri + type: string + code_challenge: + description: PKCE code challenge for enhanced security + example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM + type: string + code_challenge_method: + description: The method used to generate the code challenge + enum: + - S256 + - plain + example: S256 + type: string + expires_at: + description: Optional expiration time for the API key to be created + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + key_label: + description: Optional custom label for the API key. Defaults to the app name if not provided. + example: My Custom Key + maxLength: 100 + type: string + limit: + description: Credit limit for the API key to be created + example: 100 + format: double + type: number + spawn_agent: + description: Agent identifier for spawn telemetry + example: my-agent + type: string + x-fern-ignore: true + x-speakeasy-ignore: true + spawn_cloud: + description: Cloud identifier for spawn telemetry + example: aws-us-east-1 + type: string + x-fern-ignore: true + x-speakeasy-ignore: true + usage_limit_type: + description: Optional credit limit reset interval. When set, the credit limit resets on this interval. + enum: + - daily + - weekly + - monthly + example: monthly + type: string + required: + - callback_url + type: object + required: true + responses: + '200': + content: + application/json: + example: + data: + app_id: 12345 + created_at: '2025-08-24T10:30:00Z' + id: auth_code_xyz789 + schema: + example: + data: + app_id: 12345 + created_at: '2025-08-24T10:30:00Z' + id: auth_code_xyz789 + properties: + data: + description: Auth code data + example: + app_id: 12345 + created_at: '2025-08-24T10:30:00Z' + id: auth_code_xyz789 + properties: + app_id: + description: The application ID associated with this auth code + example: 12345 + type: integer + created_at: + description: ISO 8601 timestamp of when the auth code was created + example: '2025-08-24T10:30:00Z' + type: string + id: + description: The authorization code ID to use in the exchange request + example: auth_code_xyz789 + type: string + required: + - id + - app_id + - created_at + type: object + required: + - data + type: object + description: Successfully created authorization code + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '409': + content: + application/json: + example: + error: + code: 409 + message: Resource conflict. Please try again later. + schema: + $ref: '#/components/schemas/ConflictResponse' + description: Conflict - Resource conflict or concurrent modification + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Create authorization code + tags: + - OAuth + x-speakeasy-name-override: createAuthCode + /chat/completions: + post: + description: >- + Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming + modes. + operationId: sendChatCompletionRequest + requestBody: + content: + application/json: + example: + max_tokens: 150 + messages: + - content: You are a helpful assistant. + role: system + - content: What is the capital of France? + role: user + model: openai/gpt-4 + temperature: 0.7 + schema: + $ref: '#/components/schemas/ChatRequest' + required: true + responses: + '200': + content: + application/json: + example: + choices: + - finish_reason: stop + index: 0 + message: + content: The capital of France is Paris. + role: assistant + created: 1677652288 + id: chatcmpl-123 + model: openai/gpt-4 + object: chat.completion + usage: + completion_tokens: 10 + prompt_tokens: 25 + total_tokens: 35 + schema: + $ref: '#/components/schemas/ChatResult' + text/event-stream: + example: + data: + choices: + - delta: + content: Hello + role: assistant + finish_reason: null + index: 0 + created: 1677652288 + id: chatcmpl-123 + model: openai/gpt-4 + object: chat.completion.chunk + schema: + properties: + data: + $ref: '#/components/schemas/ChatStreamChunk' + required: + - data + type: object + x-speakeasy-sse-sentinel: '[DONE]' + description: Successful chat completion response + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '402': + content: + application/json: + example: + error: + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '408': + content: + application/json: + example: + error: + code: 408 + message: Operation timed out. Please try again later. + schema: + $ref: '#/components/schemas/RequestTimeoutResponse' + description: Request Timeout - Operation exceeded time limit + '413': + content: + application/json: + example: + error: + code: 413 + message: Request payload too large + schema: + $ref: '#/components/schemas/PayloadTooLargeResponse' + description: Payload Too Large - Request payload exceeds size limits + '422': + content: + application/json: + example: + error: + code: 422 + message: Invalid argument + schema: + $ref: '#/components/schemas/UnprocessableEntityResponse' + description: Unprocessable Entity - Semantic validation failure + '429': + content: + application/json: + example: + error: + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + '502': + content: + application/json: + example: + error: + code: 502 + message: Provider returned error + schema: + $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + '503': + content: + application/json: + example: + error: + code: 503 + message: Service temporarily unavailable + schema: + $ref: '#/components/schemas/ServiceUnavailableResponse' + description: Service Unavailable - Service temporarily unavailable + '524': + content: + application/json: + example: + error: + code: 524 + message: Request timed out. Please try again later. + schema: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + description: Infrastructure Timeout - Provider request timed out at edge network + '529': + content: + application/json: + example: + error: + code: 529 + message: Provider returned error + schema: + $ref: '#/components/schemas/ProviderOverloadedResponse' + description: Provider Overloaded - Provider is temporarily overloaded + summary: Create a chat completion + tags: + - Chat + x-speakeasy-group: chat + x-speakeasy-name-override: send + x-speakeasy-stream-request-field: stream + /credits: + get: + description: >- + Get total credits purchased and used for the authenticated user. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getCredits + responses: + '200': + content: + application/json: + example: + data: + total_credits: 100.5 + total_usage: 25.75 + schema: + description: Total credits purchased and used + example: + data: + total_credits: 100.5 + total_usage: 25.75 + properties: + data: + example: + total_credits: 100.5 + total_usage: 25.75 + properties: + total_credits: + description: Total credits purchased + example: 100.5 + format: double + type: number + total_usage: + description: Total credits used + example: 25.75 + format: double + type: number + required: + - total_credits + - total_usage + type: object + required: + - data + type: object + description: Returns the total credits purchased and used + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '403': + content: + application/json: + example: + error: + code: 403 + message: Only management keys can perform this operation + schema: + $ref: '#/components/schemas/ForbiddenResponse' + description: Forbidden - Authentication successful but insufficient permissions + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get remaining credits + tags: + - Credits + x-speakeasy-name-override: getCredits + /credits/coinbase: + post: + deprecated: true + description: >- + Deprecated. The Coinbase APIs used by this endpoint have been deprecated, so Coinbase Commerce charges have been + removed. Use the web credits purchase flow instead. + operationId: createCoinbaseCharge + responses: + '200': + description: This endpoint is deprecated and will never return a 200 response. + '410': + content: + application/json: + example: + error: + code: 410 + message: >- + The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API + has been removed. Use the web credits purchase flow instead. + schema: + $ref: '#/components/schemas/GoneResponse' + description: Gone - Endpoint has been permanently removed or deprecated + security: [] + summary: Deprecated Coinbase Commerce charge endpoint + tags: + - Credits + x-fern-ignore: true + x-speakeasy-ignore: true + x-speakeasy-name-override: createCoinbaseCharge + /embeddings: + post: + description: Submits an embedding request to the embeddings router + operationId: createEmbeddings + requestBody: + content: + application/json: + schema: + description: Embeddings request input + example: + dimensions: 1536 + input: The quick brown fox jumps over the lazy dog + model: openai/text-embedding-3-small + properties: + dimensions: + description: The number of dimensions for the output embeddings + example: 1536 + exclusiveMinimum: 0 + minimum: 0 + type: integer + encoding_format: + description: The format of the output embeddings + enum: + - float + - base64 + example: float + type: string + input: + anyOf: + - type: string + - items: + type: string + type: array + - items: + type: number + type: array + - items: + items: + type: number + type: array + type: array + - items: + properties: + content: + items: + oneOf: + - properties: + text: + type: string + type: + enum: + - text + type: string + required: + - type + - text + type: object + - properties: + image_url: + properties: + url: + type: string + required: + - url + type: object + type: + enum: + - image_url + type: string + required: + - type + - image_url + type: object + type: array + required: + - content + type: object + type: array + description: Text, token, or multimodal input(s) to embed + example: The quick brown fox jumps over the lazy dog + input_type: + description: The type of input (e.g. search_query, search_document) + example: search_query + type: string + model: + description: The model to use for embeddings + example: openai/text-embedding-3-small + type: string + provider: + allOf: + - $ref: '#/components/schemas/ProviderPreferences' + - description: Provider routing preferences for the request. + user: + description: A unique identifier for the end-user + example: user-1234 + type: string + required: + - input + - model + type: object + required: true + responses: + '200': + content: + application/json: + schema: + description: Embeddings response containing embedding vectors + example: + data: + - embedding: + - 0.0023064255 + - -0.009327292 + - 0.015797347 + index: 0 + object: embedding + model: openai/text-embedding-3-small + object: list + usage: + prompt_tokens: 8 + total_tokens: 8 + properties: + data: + description: List of embedding objects + example: + - embedding: + - 0.0023064255 + - -0.009327292 + - 0.015797347 + index: 0 + object: embedding + items: + description: A single embedding object + example: + embedding: + - 0.0023064255 + - -0.009327292 + - 0.015797347 + index: 0 + object: embedding + properties: + embedding: + anyOf: + - items: + type: number + type: array + - type: string + description: Embedding vector as an array of floats or a base64 string example: - - US - - IE + - 0.0023064255 + - -0.009327292 + - 0.015797347 + index: + description: Index of the embedding in the input list + example: 0 + type: integer + object: + enum: + - embedding + type: string required: - - name - - slug - - privacy_policy_url - example: - name: OpenAI - slug: openai - privacy_policy_url: https://openai.com/privacy - terms_of_service_url: https://openai.com/terms - status_page_url: https://status.openai.com - headquarters: US - datacenters: - - US - - IE + - object + - embedding + type: object + type: array + id: + description: Unique identifier for the embeddings response + example: embd-1234567890 + type: string + model: + description: The model used for embeddings + example: openai/text-embedding-3-small + type: string + object: + enum: + - list + type: string + usage: + description: Token usage statistics + example: + prompt_tokens: 8 + total_tokens: 8 + properties: + cost: + description: Cost of the request in credits + example: 0.0001 + format: double + type: number + prompt_tokens: + description: Number of tokens in the input + example: 8 + type: integer + total_tokens: + description: Total number of tokens used + example: 8 + type: integer + required: + - prompt_tokens + - total_tokens + type: object + required: + - object + - data + - model + type: object + text/event-stream: + example: 'data: [DONE]' + schema: + description: Not used for embeddings - embeddings do not support streaming + type: string + x-speakeasy-sse-sentinel: '[DONE]' + description: Embedding response + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '402': + content: + application/json: + example: + error: + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '429': + content: + application/json: + example: + error: + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + '502': + content: + application/json: + example: + error: + code: 502 + message: Provider returned error + schema: + $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + '503': + content: + application/json: + example: + error: + code: 503 + message: Service temporarily unavailable + schema: + $ref: '#/components/schemas/ServiceUnavailableResponse' + description: Service Unavailable - Service temporarily unavailable + '524': + content: + application/json: + example: + error: + code: 524 + message: Request timed out. Please try again later. + schema: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + description: Infrastructure Timeout - Provider request timed out at edge network + '529': + content: + application/json: + example: + error: + code: 529 + message: Provider returned error + schema: + $ref: '#/components/schemas/ProviderOverloadedResponse' + description: Provider Overloaded - Provider is temporarily overloaded + summary: Submit an embedding request + tags: + - Embeddings + x-speakeasy-name-override: generate + /embeddings/models: + get: + description: Returns a list of all available embeddings models and their properties + operationId: listEmbeddingsModels + responses: + '200': + content: + application/json: + example: + data: + - architecture: + input_modalities: + - text + instruct_type: null + modality: text->text + output_modalities: + - embeddings + tokenizer: GPT + canonical_slug: openai/text-embedding-3-small + context_length: 8192 + created: 1692901234 + default_parameters: null + description: OpenAI text embedding model optimized for performance. + expiration_date: null + id: openai/text-embedding-3-small + knowledge_cutoff: null + links: + details: /api/v1/models/openai/text-embedding-3-small/endpoints + name: Text Embedding 3 Small + per_request_limits: null + pricing: + completion: '0' + image: '0' + prompt: '0.00000002' + request: '0' + supported_parameters: [] + top_provider: + context_length: 8192 + is_moderated: false + max_completion_tokens: null + schema: + $ref: '#/components/schemas/ModelsListResponse' + description: Returns a list of embeddings models + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all embeddings models + tags: + - Embeddings + x-speakeasy-name-override: listModels + /endpoints/zdr: + get: + operationId: listEndpointsZdr + responses: + '200': + content: + application/json: + example: + data: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: openai/gpt-4 + model_name: GPT-4 + name: 'OpenAI: GPT-4' + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: OpenAI + quantization: fp16 + status: default + supported_parameters: + - temperature + - top_p + - max_tokens + supports_implicit_caching: true + tag: openai + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + schema: + example: + data: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: openai/gpt-4 + model_name: GPT-4 + name: 'OpenAI: GPT-4' + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: OpenAI + quantization: fp16 + status: default + supported_parameters: + - temperature + - top_p + - max_tokens + supports_implicit_caching: true + tag: openai + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + properties: + data: + items: + $ref: '#/components/schemas/PublicEndpoint' + type: array + required: + - data + type: object + description: Returns a list of endpoints + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Preview the impact of ZDR on the available endpoints + tags: + - Endpoints + x-speakeasy-name-override: listZdrEndpoints + /generation: + get: + operationId: getGeneration + parameters: + - description: The generation ID + in: query + name: id + required: true + schema: + description: The generation ID + example: gen-1234567890 + minLength: 1 + type: string + responses: + '200': + content: + application/json: + example: + data: + api_type: null + app_id: 12345 + cache_discount: 0.0002 + cancelled: false + created_at: '2024-07-15T23:33:19.433273+00:00' + external_user: user-123 + finish_reason: stop + generation_time: 1200 + http_referer: null + id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + is_byok: false + latency: 1250 + model: sao10k/l3-stheno-8b + moderation_latency: 50 + native_finish_reason: stop + native_tokens_cached: 3 + native_tokens_completion: 25 + native_tokens_completion_images: 0 + native_tokens_prompt: 10 + native_tokens_reasoning: 5 + num_input_audio_prompt: 0 + num_media_completion: 0 + num_media_prompt: 1 + num_search_results: 5 + origin: https://openrouter.ai/ + provider_name: Infermatic + provider_responses: null + request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT + router: null + streamed: true + tokens_completion: 25 + tokens_prompt: 10 + total_cost: 0.0015 + upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 + upstream_inference_cost: 0.0012 + usage: 0.0015 + user_agent: null + schema: + description: Generation response + properties: + data: + description: Generation data + properties: + api_type: + description: Type of API used for the generation + enum: + - completions + - embeddings + - rerank + - video + - null + nullable: true + type: string + app_id: + description: ID of the app that made the request + example: 12345 + type: integer + cache_discount: + description: Discount applied due to caching + example: 0.0002 + format: double + type: number + cancelled: + description: Whether the generation was cancelled + example: false + nullable: true + type: boolean + created_at: + description: ISO 8601 timestamp of when the generation was created + example: '2024-07-15T23:33:19.433273+00:00' + type: string + external_user: + description: External user identifier + example: user-123 + nullable: true + type: string + finish_reason: + description: Reason the generation finished + example: stop + nullable: true + type: string + generation_time: + description: Time taken for generation in milliseconds + example: 1200 + format: double + type: number + http_referer: + description: Referer header from the request + nullable: true + type: string + id: + description: Unique identifier for the generation + example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG + type: string + is_byok: + description: Whether this used bring-your-own-key + example: false + type: boolean + latency: + description: Total latency in milliseconds + example: 1250 + format: double + type: number + model: + description: Model used for the generation + example: sao10k/l3-stheno-8b + type: string + moderation_latency: + description: Moderation latency in milliseconds + example: 50 + format: double + type: number + native_finish_reason: + description: Native finish reason as reported by provider + example: stop + nullable: true + type: string + native_tokens_cached: + description: Native cached tokens as reported by provider + example: 3 + type: integer + native_tokens_completion: + description: Native completion tokens as reported by provider + example: 25 + type: integer + native_tokens_completion_images: + description: Native completion image tokens as reported by provider + example: 0 + type: integer + native_tokens_prompt: + description: Native prompt tokens as reported by provider + example: 10 + type: integer + native_tokens_reasoning: + description: Native reasoning tokens as reported by provider + example: 5 + type: integer + num_input_audio_prompt: + description: Number of audio inputs in the prompt + example: 0 + type: integer + num_media_completion: + description: Number of media items in the completion + example: 0 + type: integer + num_media_prompt: + description: Number of media items in the prompt + example: 1 + type: integer + num_search_results: + description: Number of search results included + example: 5 + type: integer + origin: + description: Origin URL of the request + example: https://openrouter.ai/ + type: string + provider_name: + description: Name of the provider that served the request + example: Infermatic + nullable: true + type: string + provider_responses: + description: List of provider responses for this generation, including fallback attempts + items: + $ref: '#/components/schemas/ProviderResponse' + nullable: true + type: array + request_id: + description: Unique identifier grouping all generations from a single API request + example: req-1727282430-aBcDeFgHiJkLmNoPqRsT + nullable: true + type: string + router: + description: Router used for the request (e.g., openrouter/auto) + example: openrouter/auto + nullable: true + type: string + session_id: + description: Session identifier grouping multiple generations in the same session + nullable: true + type: string + streamed: + description: Whether the response was streamed + example: true + nullable: true + type: boolean + tokens_completion: + description: Number of tokens in the completion + example: 25 + type: integer + tokens_prompt: + description: Number of tokens in the prompt + example: 10 + type: integer + total_cost: + description: Total cost of the generation in USD + example: 0.0015 + format: double + type: number + upstream_id: + description: Upstream provider's identifier for this generation + example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 + nullable: true + type: string + upstream_inference_cost: + description: Cost charged by the upstream provider + example: 0.0012 + format: double + type: number + usage: + description: Usage amount in USD + example: 0.0015 + format: double + type: number + user_agent: + description: User-Agent header from the request + nullable: true + type: string + required: + - id + - upstream_id + - total_cost + - cache_discount + - upstream_inference_cost + - created_at + - model + - app_id + - streamed + - cancelled + - provider_name + - latency + - moderation_latency + - generation_time + - finish_reason + - tokens_prompt + - tokens_completion + - native_tokens_prompt + - native_tokens_completion + - native_tokens_completion_images + - native_tokens_reasoning + - native_tokens_cached + - num_media_prompt + - num_input_audio_prompt + - num_media_completion + - num_search_results + - origin + - usage + - is_byok + - native_finish_reason + - external_user + - api_type + - router + - provider_responses + - user_agent + - http_referer + type: object required: - data - example: - data: - - name: OpenAI - slug: openai - privacy_policy_url: https://openai.com/privacy - terms_of_service_url: https://openai.com/terms - status_page_url: https://status.openai.com - headquarters: US - datacenters: - - US - - IE + type: object + description: Returns the request metadata for this generation + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '402': + content: + application/json: + example: + error: + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '429': + content: + application/json: + example: + error: + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + '502': + content: + application/json: + example: + error: + code: 502 + message: Provider returned error + schema: + $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + '524': + content: + application/json: + example: + error: + code: 524 + message: Request timed out. Please try again later. + schema: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + description: Infrastructure Timeout - Provider request timed out at edge network + '529': + content: + application/json: + example: + error: + code: 529 + message: Provider returned error + schema: + $ref: '#/components/schemas/ProviderOverloadedResponse' + description: Provider Overloaded - Provider is temporarily overloaded + summary: Get request & usage metadata for a generation + tags: + - Generations + /guardrails: + get: + description: >- + List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) + required. + operationId: listGuardrails + parameters: + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer + responses: + '200': + content: + application/json: + example: + data: + - allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: Guardrail for production environment + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 100 + name: Production Guardrail + reset_interval: monthly + updated_at: '2025-08-24T15:45:00Z' + total_count: 1 + schema: + $ref: '#/components/schemas/ListGuardrailsResponse' + description: List of guardrails + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List guardrails + tags: + - Guardrails + x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + post: + description: >- + Create a new guardrail for the authenticated user. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: createGuardrail + requestBody: + content: + application/json: + example: + allowed_models: null + allowed_providers: + - openai + - anthropic + - deepseek + description: A guardrail for limiting API usage + enforce_zdr: false + ignored_providers: null + limit_usd: 50 + name: My New Guardrail + reset_interval: monthly + schema: + $ref: '#/components/schemas/CreateGuardrailRequest' + required: true + responses: + '201': + content: + application/json: + example: + data: + allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: A guardrail for limiting API usage + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 50 + name: My New Guardrail + reset_interval: monthly + updated_at: null + schema: + $ref: '#/components/schemas/CreateGuardrailResponse' + description: Guardrail created successfully + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Create a guardrail + tags: + - Guardrails + x-speakeasy-name-override: create + /guardrails/{id}: + delete: + description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: deleteGuardrail + parameters: + - description: The unique identifier of the guardrail to delete + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail to delete + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + responses: + '200': + content: + application/json: + example: + deleted: true + schema: + $ref: '#/components/schemas/DeleteGuardrailResponse' + description: Guardrail deleted successfully + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Delete a guardrail + tags: + - Guardrails + x-speakeasy-name-override: delete + get: + description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getGuardrail + parameters: + - description: The unique identifier of the guardrail to retrieve + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail to retrieve + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + responses: + '200': + content: + application/json: + example: + data: + allowed_models: null + allowed_providers: + - openai + - anthropic + - google + created_at: '2025-08-24T10:30:00Z' + description: Guardrail for production environment + enforce_zdr: false + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 100 + name: Production Guardrail + reset_interval: monthly + updated_at: '2025-08-24T15:45:00Z' + schema: + $ref: '#/components/schemas/GetGuardrailResponse' + description: Guardrail details + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get a guardrail + tags: + - Guardrails + x-speakeasy-name-override: get + patch: + description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: updateGuardrail + parameters: + - description: The unique identifier of the guardrail to update + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail to update + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + requestBody: + content: + application/json: + example: + description: Updated description + limit_usd: 75 + name: Updated Guardrail Name + reset_interval: weekly + schema: + $ref: '#/components/schemas/UpdateGuardrailRequest' + required: true + responses: + '200': + content: + application/json: example: data: - - name: OpenAI - slug: openai - privacy_policy_url: https://openai.com/privacy - terms_of_service_url: https://openai.com/terms - status_page_url: https://status.openai.com - headquarters: US - datacenters: - - US - - IE - '500': - description: Internal Server Error - Unexpected server error + allowed_models: null + allowed_providers: + - openai + created_at: '2025-08-24T10:30:00Z' + description: Updated description + enforce_zdr: true + id: 550e8400-e29b-41d4-a716-446655440000 + ignored_providers: null + limit_usd: 75 + name: Updated Guardrail Name + reset_interval: weekly + updated_at: '2025-08-24T16:00:00Z' + schema: + $ref: '#/components/schemas/UpdateGuardrailResponse' + description: Guardrail updated successfully + '400': content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: - code: 500 - message: Internal Server Error - /keys: - get: - operationId: list - x-speakeasy-name-override: list - tags: - - API Keys - summary: List API keys - description: >- - List all API keys for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) - required. - parameters: - - schema: - type: string - description: Whether to include disabled API keys in the response - example: 'false' - x-openrouter-type: boolean - required: false - description: Whether to include disabled API keys in the response - name: include_disabled - in: query - - schema: - type: integer - minimum: 0 - description: Number of API keys to skip for pagination - example: 0 - required: false - description: Number of API keys to skip for pagination - name: offset - in: query - responses: - '200': - description: List of API keys + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': content: application/json: + example: + error: + code: 401 + message: Missing Authentication header schema: - type: object - properties: - data: - type: array - items: - type: object - properties: - hash: - type: string - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: - type: string - description: Name of the API key - example: My Production Key - label: - type: string - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - disabled: - type: boolean - description: Whether the API key is disabled - example: false - limit: - type: number - format: double - description: Spending limit for the API key in USD - example: 100 - limit_remaining: - type: number - format: double - description: Remaining spending limit in USD - example: 74.5 - limit_reset: - type: string - nullable: true - description: Type of limit reset for the API key - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include external BYOK usage in the credit limit - example: false - usage: - type: number - format: double - description: Total OpenRouter credit usage (in USD) for the API key - example: 25.5 - usage_daily: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC day - example: 25.5 - usage_weekly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) - example: 25.5 - usage_monthly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC month - example: 25.5 - byok_usage: - type: number - format: double - description: Total external BYOK usage (in USD) for the API key - example: 17.38 - byok_usage_daily: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC day - example: 17.38 - byok_usage_weekly: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) - example: 17.38 - byok_usage_monthly: - type: number - format: double - description: External BYOK usage (in USD) for current UTC month - example: 17.38 - created_at: - type: string - description: ISO 8601 timestamp of when the API key was created - example: '2025-08-24T10:30:00Z' - updated_at: - type: string - nullable: true - description: ISO 8601 timestamp of when the API key was last updated - example: '2025-08-24T15:45:00Z' - expires_at: - type: string - nullable: true - format: date-time - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - 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 - 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 - example: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: sk-or-v1-0e6...1c96 - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - description: List of API keys - required: - - data - example: - data: - - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: Production API Key - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Update a guardrail + tags: + - Guardrails + x-speakeasy-name-override: update + /guardrails/{id}/assignments/keys: + get: + description: >- + List all API key assignments for a specific guardrail. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listGuardrailKeyAssignments + parameters: + - description: The unique identifier of the guardrail + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer + responses: + '200': + content: + application/json: example: data: - - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: Production API Key - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 + - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + key_label: prod-key + key_name: Production Key + total_count: 1 + schema: + $ref: '#/components/schemas/ListKeyAssignmentsResponse' + description: List of key assignments '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '429': - description: Too Many Requests - Rate limit exceeded + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': content: application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' example: error: - code: 429 - message: Rate limit exceeded + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - post: - x-speakeasy-name-override: create + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List key assignments for a guardrail tags: - - API Keys - summary: Create a new API key + - Guardrails + x-speakeasy-name-override: listGuardrailKeyAssignments + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + post: description: >- - Create a new API key for the authenticated user. [Management + Assign multiple API keys to a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: bulkAssignKeysToGuardrail + parameters: + - description: The unique identifier of the guardrail + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string requestBody: content: application/json: + example: + key_hashes: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 schema: - type: object - properties: - name: - type: string - minLength: 1 - description: Name for the new API key - example: My New API Key - limit: - type: number - format: double - description: Optional spending limit for the API key in USD - example: 50 - limit_reset: - type: string - nullable: true - enum: - - daily - - weekly - - monthly - - null - description: >- - Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen - automatically at midnight UTC, and weeks are Monday through Sunday. - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include BYOK usage in the limit - example: true - expires_at: - type: string - nullable: true - format: date-time - description: >- - Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be - rejected - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - minLength: 1 - 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 - required: - - name + $ref: '#/components/schemas/BulkAssignKeysRequest' + required: true + responses: + '200': + content: + application/json: example: - name: My New API Key - limit: 50 - limit_reset: monthly - include_byok_in_limit: true - expires_at: '2027-12-31T23:59:59Z' + assigned_count: 3 + schema: + $ref: '#/components/schemas/BulkAssignKeysResponse' + description: Assignment result + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Bulk assign keys to a guardrail + tags: + - Guardrails + x-speakeasy-name-override: bulkAssignKeys + /guardrails/{id}/assignments/keys/remove: + post: + description: >- + Unassign multiple API keys from a specific guardrail. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: bulkUnassignKeysFromGuardrail + parameters: + - description: The unique identifier of the guardrail + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + requestBody: + content: + application/json: example: - name: My New API Key - limit: 50 - limit_reset: monthly - include_byok_in_limit: true - expires_at: '2027-12-31T23:59:59Z' + key_hashes: + - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + schema: + $ref: '#/components/schemas/BulkUnassignKeysRequest' required: true responses: - '201': - description: API key created successfully + '200': content: application/json: - schema: - type: object - properties: - data: - type: object - properties: - hash: - type: string - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: - type: string - description: Name of the API key - example: My Production Key - label: - type: string - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - disabled: - type: boolean - description: Whether the API key is disabled - example: false - limit: - type: number - format: double - description: Spending limit for the API key in USD - example: 100 - limit_remaining: - type: number - format: double - description: Remaining spending limit in USD - example: 74.5 - limit_reset: - type: string - nullable: true - description: Type of limit reset for the API key - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include external BYOK usage in the credit limit - example: false - usage: - type: number - format: double - description: Total OpenRouter credit usage (in USD) for the API key - example: 25.5 - usage_daily: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC day - example: 25.5 - usage_weekly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) - example: 25.5 - usage_monthly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC month - example: 25.5 - byok_usage: - type: number - format: double - description: Total external BYOK usage (in USD) for the API key - example: 17.38 - byok_usage_daily: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC day - example: 17.38 - byok_usage_weekly: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) - example: 17.38 - byok_usage_monthly: - type: number - format: double - description: External BYOK usage (in USD) for current UTC month - example: 17.38 - created_at: - type: string - description: ISO 8601 timestamp of when the API key was created - example: '2025-08-24T10:30:00Z' - updated_at: - type: string - nullable: true - description: ISO 8601 timestamp of when the API key was last updated - example: '2025-08-24T15:45:00Z' - expires_at: - type: string - nullable: true - format: date-time - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - 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 - 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 - example: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: sk-or-v1-0e6...1c96 - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - description: The created API key information - key: - type: string - description: The actual API key string (only shown once) - example: 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 - required: - - data - - key - example: - data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My New API Key - label: My New API Key - disabled: false - limit: 50 - limit_remaining: 50 - limit_reset: monthly - include_byok_in_limit: true - usage: 0 - usage_daily: 0 - usage_weekly: 0 - usage_monthly: 0 - byok_usage: 0 - byok_usage_daily: 0 - byok_usage_weekly: 0 - byok_usage_monthly: 0 - created_at: '2025-08-24T10:30:00Z' - updated_at: null - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - key: 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 example: - data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My New API Key - label: My New API Key - disabled: false - limit: 50 - limit_remaining: 50 - limit_reset: monthly - include_byok_in_limit: true - usage: 0 - usage_daily: 0 - usage_weekly: 0 - usage_monthly: 0 - byok_usage: 0 - byok_usage_daily: 0 - byok_usage_weekly: 0 - byok_usage_monthly: 0 - created_at: '2025-08-24T10:30:00Z' - updated_at: null - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - key: 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 + unassigned_count: 3 + schema: + $ref: '#/components/schemas/BulkUnassignKeysResponse' + description: Unassignment result '400': - description: Bad Request - Invalid request parameters or malformed input content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '429': - description: Too Many Requests - Rate limit exceeded + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': content: application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' example: error: - code: 429 - message: Rate limit exceeded + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - operationId: createKeys - /keys/{hash}: - patch: - x-speakeasy-name-override: update + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Bulk unassign keys from a guardrail tags: - - API Keys - summary: Update an API key - description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. + - Guardrails + x-speakeasy-name-override: bulkUnassignKeys + /guardrails/{id}/assignments/members: + get: + description: >- + List all organization member assignments for a specific guardrail. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listGuardrailMemberAssignments parameters: - - schema: - type: string - description: The hash identifier of the API key to update - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - required: true - description: The hash identifier of the API key to update - name: hash + - description: The unique identifier of the guardrail in: path - requestBody: - content: - application/json: - schema: - type: object - properties: - name: - type: string - description: New name for the API key - example: Updated API Key Name - disabled: - type: boolean - description: Whether to disable the API key - example: false - limit: - type: number - format: double - description: New spending limit for the API key in USD - example: 75 - limit_reset: - type: string - nullable: true - enum: - - daily - - weekly - - monthly - - null - description: >- - New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen - automatically at midnight UTC, and weeks are Monday through Sunday. - example: daily - include_byok_in_limit: - type: boolean - description: Whether to include BYOK usage in the limit - example: true - example: - name: Updated API Key Name - disabled: false - limit: 75 - limit_reset: daily - include_byok_in_limit: true - example: - name: Updated API Key Name - disabled: false - limit: 75 - limit_reset: daily - include_byok_in_limit: true - required: true + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer responses: '200': - description: API key updated successfully content: application/json: - schema: - type: object - properties: - data: - type: object - properties: - hash: - type: string - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: - type: string - description: Name of the API key - example: My Production Key - label: - type: string - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - disabled: - type: boolean - description: Whether the API key is disabled - example: false - limit: - type: number - format: double - description: Spending limit for the API key in USD - example: 100 - limit_remaining: - type: number - format: double - description: Remaining spending limit in USD - example: 74.5 - limit_reset: - type: string - nullable: true - description: Type of limit reset for the API key - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include external BYOK usage in the credit limit - example: false - usage: - type: number - format: double - description: Total OpenRouter credit usage (in USD) for the API key - example: 25.5 - usage_daily: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC day - example: 25.5 - usage_weekly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) - example: 25.5 - usage_monthly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC month - example: 25.5 - byok_usage: - type: number - format: double - description: Total external BYOK usage (in USD) for the API key - example: 17.38 - byok_usage_daily: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC day - example: 17.38 - byok_usage_weekly: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) - example: 17.38 - byok_usage_monthly: - type: number - format: double - description: External BYOK usage (in USD) for current UTC month - example: 17.38 - created_at: - type: string - description: ISO 8601 timestamp of when the API key was created - example: '2025-08-24T10:30:00Z' - updated_at: - type: string - nullable: true - description: ISO 8601 timestamp of when the API key was last updated - example: '2025-08-24T15:45:00Z' - expires_at: - type: string - nullable: true - format: date-time - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - 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 - 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 - example: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: sk-or-v1-0e6...1c96 - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - description: The updated API key information - required: - - data - example: - data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: Updated API Key Name - label: Updated API Key Name - disabled: false - limit: 75 - limit_remaining: 49.5 - limit_reset: daily - include_byok_in_limit: true - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 + example: + data: + - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T16:00:00Z' - expires_at: null - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + organization_id: org_xyz789 + user_id: user_abc123 + total_count: 1 + schema: + $ref: '#/components/schemas/ListMemberAssignmentsResponse' + description: List of member assignments + '401': + content: + application/json: example: - data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: Updated API Key Name - label: Updated API Key Name - disabled: false - limit: 75 - limit_remaining: 49.5 - limit_reset: daily - include_byok_in_limit: true - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T16:00:00Z' - expires_at: null - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - '400': - description: Bad Request - Invalid request parameters or malformed input + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': content: application/json: + example: + error: + code: 404 + message: Resource not found schema: - $ref: '#/components/schemas/BadRequestResponse' + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List member assignments for a guardrail + tags: + - Guardrails + x-speakeasy-name-override: listGuardrailMemberAssignments + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + post: + description: >- + Assign multiple organization members to a specific guardrail. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: bulkAssignMembersToGuardrail + parameters: + - description: The unique identifier of the guardrail + in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + requestBody: + content: + application/json: + example: + member_user_ids: + - user_abc123 + - user_def456 + schema: + $ref: '#/components/schemas/BulkAssignMembersRequest' + required: true + responses: + '200': + content: + application/json: + example: + assigned_count: 2 + schema: + $ref: '#/components/schemas/BulkAssignMembersResponse' + description: Assignment result + '400': + content: + application/json: example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found - '429': - description: Too Many Requests - Rate limit exceeded - content: - application/json: schema: - $ref: '#/components/schemas/TooManyRequestsResponse' - example: - error: - code: 429 - message: Rate limit exceeded + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - operationId: updateKeys - delete: - x-speakeasy-name-override: delete + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Bulk assign members to a guardrail tags: - - API Keys - summary: Delete an API key - description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. + - Guardrails + x-speakeasy-name-override: bulkAssignMembers + /guardrails/{id}/assignments/members/remove: + post: + description: >- + Unassign multiple organization members from a specific guardrail. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: bulkUnassignMembersFromGuardrail parameters: - - schema: - type: string - description: The hash identifier of the API key to delete - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - required: true - description: The hash identifier of the API key to delete - name: hash + - description: The unique identifier of the guardrail in: path + name: id + required: true + schema: + description: The unique identifier of the guardrail + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + requestBody: + content: + application/json: + example: + member_user_ids: + - user_abc123 + - user_def456 + schema: + $ref: '#/components/schemas/BulkUnassignMembersRequest' + required: true responses: '200': - description: API key deleted successfully content: application/json: + example: + unassigned_count: 2 schema: - type: object - properties: - deleted: - type: boolean - const: true - description: Confirmation that the API key was deleted - example: true - required: - - deleted - example: - deleted: true + $ref: '#/components/schemas/BulkUnassignMembersResponse' + description: Unassignment result + '400': + content: + application/json: example: - deleted: true + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found - '429': - description: Too Many Requests - Rate limit exceeded + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Bulk unassign members from a guardrail + tags: + - Guardrails + x-speakeasy-name-override: bulkUnassignMembers + /guardrails/assignments/keys: + get: + description: >- + List all API key guardrail assignments for the authenticated user. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listKeyAssignments + parameters: + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer + responses: + '200': + content: + application/json: + example: + data: + - assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + key_label: prod-key + key_name: Production Key + total_count: 1 + schema: + $ref: '#/components/schemas/ListKeyAssignmentsResponse' + description: List of key assignments + '401': content: application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' example: error: - code: 429 - message: Rate limit exceeded + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - operationId: deleteKeys - get: - operationId: getKey - x-speakeasy-name-override: get + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all key assignments tags: - - API Keys - summary: Get a single API key - description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required. + - Guardrails + x-speakeasy-name-override: listKeyAssignments + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + /guardrails/assignments/members: + get: + description: >- + List all organization member guardrail assignments for the authenticated user. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listMemberAssignments parameters: - - schema: - type: string - description: The hash identifier of the API key to retrieve - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - required: true - description: The hash identifier of the API key to retrieve - name: hash - in: path + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer responses: '200': - description: API key details content: application/json: - schema: - type: object - properties: - data: - type: object - properties: - hash: - type: string - description: Unique hash identifier for the API key - example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: - type: string - description: Name of the API key - example: My Production Key - label: - type: string - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - disabled: - type: boolean - description: Whether the API key is disabled - example: false - limit: - type: number - format: double - description: Spending limit for the API key in USD - example: 100 - limit_remaining: - type: number - format: double - description: Remaining spending limit in USD - example: 74.5 - limit_reset: - type: string - nullable: true - description: Type of limit reset for the API key - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include external BYOK usage in the credit limit - example: false - usage: - type: number - format: double - description: Total OpenRouter credit usage (in USD) for the API key - example: 25.5 - usage_daily: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC day - example: 25.5 - usage_weekly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) - example: 25.5 - usage_monthly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC month - example: 25.5 - byok_usage: - type: number - format: double - description: Total external BYOK usage (in USD) for the API key - example: 17.38 - byok_usage_daily: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC day - example: 17.38 - byok_usage_weekly: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) - example: 17.38 - byok_usage_monthly: - type: number - format: double - description: External BYOK usage (in USD) for current UTC month - example: 17.38 - created_at: - type: string - description: ISO 8601 timestamp of when the API key was created - example: '2025-08-24T10:30:00Z' - updated_at: - type: string - nullable: true - description: ISO 8601 timestamp of when the API key was last updated - example: '2025-08-24T15:45:00Z' - expires_at: - type: string - nullable: true - format: date-time - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - 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 - 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 - example: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: sk-or-v1-0e6...1c96 - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - description: The API key information - required: - - data - example: - data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: Production API Key - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 example: data: - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 - name: My Production Key - label: Production API Key - disabled: false - limit: 100 - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + - assigned_by: user_abc123 + created_at: '2025-08-24T10:30:00Z' + guardrail_id: 550e8400-e29b-41d4-a716-446655440001 + id: 550e8400-e29b-41d4-a716-446655440000 + organization_id: org_xyz789 + user_id: user_abc123 + total_count: 1 + schema: + $ref: '#/components/schemas/ListMemberAssignmentsResponse' + description: List of member assignments '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '429': - description: Too Many Requests - Rate limit exceeded - content: - application/json: schema: - $ref: '#/components/schemas/TooManyRequestsResponse' - example: - error: - code: 429 - message: Rate limit exceeded + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - /organization/members: - get: - operationId: listOrganizationMembers - x-speakeasy-name-override: listMembers + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all member assignments tags: - - Organization - summary: List organization members - description: >- - List all members of the organization associated with the authenticated management key. [Management - key](/docs/guides/overview/auth/management-api-keys) required. + - Guardrails + x-speakeasy-name-override: listMemberAssignments x-speakeasy-pagination: - type: offsetLimit inputs: - - name: offset - in: parameters + - in: parameters + name: offset type: offset - - name: limit - in: parameters + - in: parameters + name: limit type: limit outputs: results: $.data - parameters: - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query + type: offsetLimit + /key: + get: + description: Get information on the API key associated with the current authentication session + operationId: getCurrentKey responses: '200': - description: List of organization members content: application/json: + example: + data: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + expires_at: '2027-12-31T23:59:59Z' + include_byok_in_limit: false + is_free_tier: false + is_management_key: false + is_provisioning_key: false + label: sk-or-v1-au7...890 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + rate_limit: + interval: 1h + note: This field is deprecated and safe to ignore. + requests: 1000 + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 schema: - type: object + example: + data: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + expires_at: '2027-12-31T23:59:59Z' + include_byok_in_limit: false + is_free_tier: false + is_management_key: false + is_provisioning_key: false + label: sk-or-v1-au7...890 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + rate_limit: + interval: 1h + note: This field is deprecated and safe to ignore. + requests: 1000 + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 properties: data: - type: array - items: - type: object - properties: - id: - type: string - description: User ID of the organization member - example: user_2dHFtVWx2n56w6HkM0000000000 - first_name: - type: string - nullable: true - description: First name of the member - example: Jane - last_name: - type: string - nullable: true - description: Last name of the member - example: Doe - email: - type: string - description: Email address of the member - example: jane.doe@example.com - role: - type: string - enum: - - org:admin - - org:member - description: Role of the member in the organization - example: org:member - required: - - id - - first_name - - last_name - - email - - role - description: List of organization members - total_count: - type: integer - description: Total number of members in the organization - example: 25 + description: Current API key information + example: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + expires_at: '2027-12-31T23:59:59Z' + include_byok_in_limit: false + is_free_tier: false + is_management_key: false + is_provisioning_key: false + label: sk-or-v1-au7...890 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + rate_limit: + interval: 1h + note: This field is deprecated and safe to ignore. + requests: 1000 + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + byok_usage: + description: Total external BYOK usage (in USD) for the API key + example: 17.38 + format: double + type: number + byok_usage_daily: + description: External BYOK usage (in USD) for the current UTC day + example: 17.38 + format: double + type: number + byok_usage_monthly: + description: External BYOK usage (in USD) for current UTC month + example: 17.38 + format: double + type: number + byok_usage_weekly: + description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + example: 17.38 + format: double + type: number + creator_user_id: + description: >- + The user ID of the key creator. For organization-owned keys, this is the member who created + the key. For individual users, this is the user's own ID. + example: user_2dHFtVWx2n56w6HkM0000000000 + nullable: true + type: string + expires_at: + description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + include_byok_in_limit: + description: Whether to include external BYOK usage in the credit limit + example: false + type: boolean + is_free_tier: + description: Whether this is a free tier API key + example: false + type: boolean + is_management_key: + description: Whether this is a management key + example: false + type: boolean + is_provisioning_key: + deprecated: true + description: Whether this is a management key + example: false + type: boolean + label: + description: Human-readable label for the API key + example: sk-or-v1-0e6...1c96 + type: string + limit: + description: Spending limit for the API key in USD + example: 100 + format: double + type: number + limit_remaining: + description: Remaining spending limit in USD + example: 74.5 + format: double + type: number + limit_reset: + description: Type of limit reset for the API key + example: monthly + nullable: true + type: string + rate_limit: + deprecated: true + description: Legacy rate limit information about a key. Will always return -1. + example: + interval: 1h + note: This field is deprecated and safe to ignore. + requests: 1000 + properties: + interval: + description: Rate limit interval + example: 1h + type: string + note: + description: Note about the rate limit + example: This field is deprecated and safe to ignore. + type: string + requests: + description: Number of requests allowed per interval + example: 1000 + type: integer + required: + - requests + - interval + - note + type: object + usage: + description: Total OpenRouter credit usage (in USD) for the API key + example: 25.5 + format: double + type: number + usage_daily: + description: OpenRouter credit usage (in USD) for the current UTC day + example: 25.5 + format: double + type: number + usage_monthly: + description: OpenRouter credit usage (in USD) for the current UTC month + example: 25.5 + format: double + type: number + usage_weekly: + description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + example: 25.5 + format: double + type: number + required: + - label + - limit + - usage + - usage_daily + - usage_weekly + - usage_monthly + - byok_usage + - byok_usage_daily + - byok_usage_weekly + - byok_usage_monthly + - is_free_tier + - is_management_key + - is_provisioning_key + - limit_remaining + - limit_reset + - include_byok_in_limit + - creator_user_id + - rate_limit + type: object required: - data - - total_count - example: - data: - - id: user_2dHFtVWx2n56w6HkM0000000000 - first_name: Jane - last_name: Doe - email: jane.doe@example.com - role: member - total_count: 25 + type: object + description: API key details '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /guardrails: - get: - operationId: listGuardrails - x-speakeasy-name-override: list - tags: - - Guardrails - summary: List guardrails - description: >- - List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) - required. - x-speakeasy-pagination: - type: offsetLimit - inputs: - - name: offset - in: parameters - type: offset - - name: limit - in: parameters - type: limit - outputs: - results: $.data - parameters: - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query - responses: - '200': - description: List of guardrails - content: - application/json: - schema: - $ref: '#/components/schemas/ListGuardrailsResponse' - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - name: Production Guardrail - description: Guardrail for production environment - limit_usd: 100 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' - total_count: 1 - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header + description: Unauthorized - Authentication required or invalid credentials '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - post: - operationId: createGuardrail - x-speakeasy-name-override: create - tags: - - Guardrails - summary: Create a guardrail - description: >- - Create a new guardrail for the authenticated user. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateGuardrailRequest' - example: - name: My New Guardrail - description: A guardrail for limiting API usage - limit_usd: 50 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - deepseek - ignored_providers: null - allowed_models: null - enforce_zdr: false - required: true - responses: - '201': - description: Guardrail created successfully - content: - application/json: - schema: - $ref: '#/components/schemas/CreateGuardrailResponse' - example: - data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: My New Guardrail - description: A guardrail for limiting API usage - limit_usd: 50 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: null - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: schema: $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /guardrails/{id}: - get: - operationId: getGuardrail - x-speakeasy-name-override: get + description: Internal Server Error - Unexpected server error + summary: Get current API key tags: - - Guardrails - summary: Get a guardrail - description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required. + - API Keys + x-speakeasy-name-override: getCurrentKeyMetadata + /keys: + get: + description: >- + List all API keys for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) + required. + operationId: list parameters: - - schema: + - description: Whether to include disabled API keys in the response + in: query + name: include_disabled + required: false + schema: + description: Whether to include disabled API keys in the response + example: 'false' type: string - format: uuid - description: The unique identifier of the guardrail to retrieve - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail to retrieve - name: id - in: path + x-openrouter-type: boolean + - description: Number of API keys to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of API keys to skip for pagination + example: 0 + minimum: 0 + type: integer responses: '200': - description: Guardrail details content: application/json: - schema: - $ref: '#/components/schemas/GetGuardrailResponse' example: data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: Production Guardrail - description: Guardrail for production environment - limit_usd: 100 - reset_interval: monthly - allowed_providers: - - openai - - anthropic - - google - ignored_providers: null - allowed_models: null - enforce_zdr: false - created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T15:45:00Z' + - byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: Production API Key + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + schema: + example: + data: + - byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: Production API Key + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + data: + description: List of API keys + items: + example: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: sk-or-v1-0e6...1c96 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + byok_usage: + description: Total external BYOK usage (in USD) for the API key + example: 17.38 + format: double + type: number + byok_usage_daily: + description: External BYOK usage (in USD) for the current UTC day + example: 17.38 + format: double + type: number + byok_usage_monthly: + description: External BYOK usage (in USD) for current UTC month + example: 17.38 + format: double + type: number + byok_usage_weekly: + description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + example: 17.38 + format: double + type: number + created_at: + description: ISO 8601 timestamp of when the API key was created + example: '2025-08-24T10:30:00Z' + type: string + creator_user_id: + description: >- + The user ID of the key creator. For organization-owned keys, this is the member who created + the key. For individual users, this is the user's own ID. + example: user_2dHFtVWx2n56w6HkM0000000000 + nullable: true + type: string + disabled: + description: Whether the API key is disabled + example: false + type: boolean + expires_at: + description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + hash: + description: Unique hash identifier for the API key + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string + include_byok_in_limit: + description: Whether to include external BYOK usage in the credit limit + example: false + type: boolean + label: + description: Human-readable label for the API key + example: sk-or-v1-0e6...1c96 + type: string + limit: + description: Spending limit for the API key in USD + example: 100 + format: double + type: number + limit_remaining: + description: Remaining spending limit in USD + example: 74.5 + format: double + type: number + limit_reset: + description: Type of limit reset for the API key + example: monthly + nullable: true + type: string + name: + description: Name of the API key + example: My Production Key + type: string + updated_at: + description: ISO 8601 timestamp of when the API key was last updated + example: '2025-08-24T15:45:00Z' + nullable: true + type: string + usage: + description: Total OpenRouter credit usage (in USD) for the API key + example: 25.5 + format: double + type: number + usage_daily: + description: OpenRouter credit usage (in USD) for the current UTC day + example: 25.5 + format: double + type: number + usage_monthly: + description: OpenRouter credit usage (in USD) for the current UTC month + example: 25.5 + format: double + type: number + usage_weekly: + description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + example: 25.5 + format: double + type: number + 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 + type: object + type: array + required: + - data + type: object + description: List of API keys '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '404': - description: Not Found - Resource does not exist + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '429': content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: - code: 404 - message: Resource not found + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - patch: - operationId: updateGuardrail - x-speakeasy-name-override: update + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List API keys tags: - - Guardrails - summary: Update a guardrail - description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. - parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail to update - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail to update - name: id - in: path + - API Keys + x-speakeasy-name-override: list + post: + description: >- + Create a new API key for the authenticated user. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: createKeys requestBody: content: application/json: - schema: - $ref: '#/components/schemas/UpdateGuardrailRequest' example: - name: Updated Guardrail Name - description: Updated description - limit_usd: 75 - reset_interval: weekly + expires_at: '2027-12-31T23:59:59Z' + include_byok_in_limit: true + limit: 50 + limit_reset: monthly + name: My New API Key + schema: + example: + expires_at: '2027-12-31T23:59:59Z' + include_byok_in_limit: true + limit: 50 + limit_reset: monthly + name: My New API Key + properties: + creator_user_id: + description: >- + Optional user ID of the key creator. Only meaningful for organization-owned keys where a specific + member is creating the key. + example: user_2dHFtVWx2n56w6HkM0000000000 + minLength: 1 + nullable: true + type: string + expires_at: + description: >- + Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be + rejected + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + include_byok_in_limit: + description: Whether to include BYOK usage in the limit + example: true + type: boolean + limit: + description: Optional spending limit for the API key in USD + example: 50 + format: double + type: number + limit_reset: + description: >- + Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen + automatically at midnight UTC, and weeks are Monday through Sunday. + enum: + - daily + - weekly + - monthly + - null + example: monthly + nullable: true + type: string + name: + description: Name for the new API key + example: My New API Key + minLength: 1 + type: string + required: + - name + type: object required: true responses: - '200': - description: Guardrail updated successfully + '201': content: application/json: - schema: - $ref: '#/components/schemas/UpdateGuardrailResponse' example: data: - id: 550e8400-e29b-41d4-a716-446655440000 - name: Updated Guardrail Name - description: Updated description - limit_usd: 75 - reset_interval: weekly - allowed_providers: - - openai - ignored_providers: null - allowed_models: null - enforce_zdr: true + byok_usage: 0 + byok_usage_daily: 0 + byok_usage_monthly: 0 + byok_usage_weekly: 0 created_at: '2025-08-24T10:30:00Z' - updated_at: '2025-08-24T16:00:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: true + label: My New API Key + limit: 50 + limit_remaining: 50 + limit_reset: monthly + name: My New API Key + updated_at: null + usage: 0 + usage_daily: 0 + usage_monthly: 0 + usage_weekly: 0 + key: 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 + schema: + example: + data: + byok_usage: 0 + byok_usage_daily: 0 + byok_usage_monthly: 0 + byok_usage_weekly: 0 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: true + label: My New API Key + limit: 50 + limit_remaining: 50 + limit_reset: monthly + name: My New API Key + updated_at: null + usage: 0 + usage_daily: 0 + usage_monthly: 0 + usage_weekly: 0 + key: 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 + properties: + data: + description: The created API key information + example: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: sk-or-v1-0e6...1c96 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + byok_usage: + description: Total external BYOK usage (in USD) for the API key + example: 17.38 + format: double + type: number + byok_usage_daily: + description: External BYOK usage (in USD) for the current UTC day + example: 17.38 + format: double + type: number + byok_usage_monthly: + description: External BYOK usage (in USD) for current UTC month + example: 17.38 + format: double + type: number + byok_usage_weekly: + description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + example: 17.38 + format: double + type: number + created_at: + description: ISO 8601 timestamp of when the API key was created + example: '2025-08-24T10:30:00Z' + type: string + creator_user_id: + description: >- + The user ID of the key creator. For organization-owned keys, this is the member who created + the key. For individual users, this is the user's own ID. + example: user_2dHFtVWx2n56w6HkM0000000000 + nullable: true + type: string + disabled: + description: Whether the API key is disabled + example: false + type: boolean + expires_at: + description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + hash: + description: Unique hash identifier for the API key + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string + include_byok_in_limit: + description: Whether to include external BYOK usage in the credit limit + example: false + type: boolean + label: + description: Human-readable label for the API key + example: sk-or-v1-0e6...1c96 + type: string + limit: + description: Spending limit for the API key in USD + example: 100 + format: double + type: number + limit_remaining: + description: Remaining spending limit in USD + example: 74.5 + format: double + type: number + limit_reset: + description: Type of limit reset for the API key + example: monthly + nullable: true + type: string + name: + description: Name of the API key + example: My Production Key + type: string + updated_at: + description: ISO 8601 timestamp of when the API key was last updated + example: '2025-08-24T15:45:00Z' + nullable: true + type: string + usage: + description: Total OpenRouter credit usage (in USD) for the API key + example: 25.5 + format: double + type: number + usage_daily: + description: OpenRouter credit usage (in USD) for the current UTC day + example: 25.5 + format: double + type: number + usage_monthly: + description: OpenRouter credit usage (in USD) for the current UTC month + example: 25.5 + format: double + type: number + usage_weekly: + description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + example: 25.5 + format: double + type: number + 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 + type: object + key: + description: The actual API key string (only shown once) + example: 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 + type: string + required: + - data + - key + type: object + description: API key created successfully '400': - description: Bad Request - Invalid request parameters or malformed input content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '404': - description: Not Found - Resource does not exist + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '429': content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: - code: 404 - message: Resource not found + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - delete: - operationId: deleteGuardrail - x-speakeasy-name-override: delete + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Create a new API key tags: - - Guardrails - summary: Delete a guardrail - description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. + - API Keys + x-speakeasy-name-override: create + /keys/{hash}: + delete: + description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: deleteKeys parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail to delete - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail to delete - name: id + - description: The hash identifier of the API key to delete in: path + name: hash + required: true + schema: + description: The hash identifier of the API key to delete + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string responses: '200': - description: Guardrail deleted successfully content: application/json: - schema: - $ref: '#/components/schemas/DeleteGuardrailResponse' example: deleted: true + schema: + example: + deleted: true + properties: + deleted: + const: true + description: Confirmation that the API key was deleted + example: true + type: boolean + required: + - deleted + type: object + description: API key deleted successfully '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /guardrails/assignments/keys: - get: - operationId: listKeyAssignments - x-speakeasy-name-override: listKeyAssignments - tags: - - Guardrails - summary: List all key assignments - description: >- - List all API key guardrail assignments for the authenticated user. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - x-speakeasy-pagination: - type: offsetLimit - inputs: - - name: offset - in: parameters - type: offset - - name: limit - in: parameters - type: limit - outputs: - results: $.data - parameters: - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query - responses: - '200': - description: List of key assignments - content: - application/json: - schema: - $ref: '#/components/schemas/ListKeyAssignmentsResponse' - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - key_name: Production Key - key_label: prod-key - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - total_count: 1 - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '500': - description: Internal Server Error - Unexpected server error + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '429': content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: - code: 500 - message: Internal Server Error - /guardrails/assignments/members: - get: - operationId: listMemberAssignments - x-speakeasy-name-override: listMemberAssignments - tags: - - Guardrails - summary: List all member assignments - description: >- - List all organization member guardrail assignments for the authenticated user. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - x-speakeasy-pagination: - type: offsetLimit - inputs: - - name: offset - in: parameters - type: offset - - name: limit - in: parameters - type: limit - outputs: - results: $.data - parameters: - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query - responses: - '200': - description: List of member assignments - content: - application/json: - schema: - $ref: '#/components/schemas/ListMemberAssignmentsResponse' - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - user_id: user_abc123 - organization_id: org_xyz789 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - total_count: 1 - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: + code: 429 + message: Rate limit exceeded schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - /guardrails/{id}/assignments/keys: - get: - operationId: listGuardrailKeyAssignments - x-speakeasy-name-override: listGuardrailKeyAssignments + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Delete an API key tags: - - Guardrails - summary: List key assignments for a guardrail - description: >- - List all API key assignments for a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - x-speakeasy-pagination: - type: offsetLimit - inputs: - - name: offset - in: parameters - type: offset - - name: limit - in: parameters - type: limit - outputs: - results: $.data + - API Keys + x-speakeasy-name-override: delete + get: + description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getKey parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id + - description: The hash identifier of the API key to retrieve in: path - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query + name: hash + required: true + schema: + description: The hash identifier of the API key to retrieve + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string responses: '200': - description: List of key assignments content: application/json: - schema: - $ref: '#/components/schemas/ListKeyAssignmentsResponse' example: data: - - id: 550e8400-e29b-41d4-a716-446655440000 - key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - key_name: Production Key - key_label: prod-key - assigned_by: user_abc123 + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: Production API Key + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + schema: + example: + data: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' - total_count: 1 + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: Production API Key + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + data: + description: The API key information + example: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: sk-or-v1-0e6...1c96 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + byok_usage: + description: Total external BYOK usage (in USD) for the API key + example: 17.38 + format: double + type: number + byok_usage_daily: + description: External BYOK usage (in USD) for the current UTC day + example: 17.38 + format: double + type: number + byok_usage_monthly: + description: External BYOK usage (in USD) for current UTC month + example: 17.38 + format: double + type: number + byok_usage_weekly: + description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + example: 17.38 + format: double + type: number + created_at: + description: ISO 8601 timestamp of when the API key was created + example: '2025-08-24T10:30:00Z' + type: string + creator_user_id: + description: >- + The user ID of the key creator. For organization-owned keys, this is the member who created + the key. For individual users, this is the user's own ID. + example: user_2dHFtVWx2n56w6HkM0000000000 + nullable: true + type: string + disabled: + description: Whether the API key is disabled + example: false + type: boolean + expires_at: + description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + hash: + description: Unique hash identifier for the API key + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string + include_byok_in_limit: + description: Whether to include external BYOK usage in the credit limit + example: false + type: boolean + label: + description: Human-readable label for the API key + example: sk-or-v1-0e6...1c96 + type: string + limit: + description: Spending limit for the API key in USD + example: 100 + format: double + type: number + limit_remaining: + description: Remaining spending limit in USD + example: 74.5 + format: double + type: number + limit_reset: + description: Type of limit reset for the API key + example: monthly + nullable: true + type: string + name: + description: Name of the API key + example: My Production Key + type: string + updated_at: + description: ISO 8601 timestamp of when the API key was last updated + example: '2025-08-24T15:45:00Z' + nullable: true + type: string + usage: + description: Total OpenRouter credit usage (in USD) for the API key + example: 25.5 + format: double + type: number + usage_daily: + description: OpenRouter credit usage (in USD) for the current UTC day + example: 25.5 + format: double + type: number + usage_monthly: + description: OpenRouter credit usage (in USD) for the current UTC month + example: 25.5 + format: double + type: number + usage_weekly: + description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + example: 25.5 + format: double + type: number + 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 + type: object + required: + - data + type: object + description: API key details '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found - '500': - description: Internal Server Error - Unexpected server error + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '429': content: application/json: + example: + error: + code: 429 + message: Rate limit exceeded schema: - $ref: '#/components/schemas/InternalServerResponse' + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded + '500': + content: + application/json: example: error: code: 500 message: Internal Server Error - post: - operationId: bulkAssignKeysToGuardrail - x-speakeasy-name-override: bulkAssignKeys + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get a single API key tags: - - Guardrails - summary: Bulk assign keys to a guardrail - description: >- - Assign multiple API keys to a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. + - API Keys + x-speakeasy-name-override: get + patch: + description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: updateKeys parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id + - description: The hash identifier of the API key to update in: path + name: hash + required: true + schema: + description: The hash identifier of the API key to update + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string requestBody: content: application/json: - schema: - $ref: '#/components/schemas/BulkAssignKeysRequest' example: - key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + disabled: false + include_byok_in_limit: true + limit: 75 + limit_reset: daily + name: Updated API Key Name + schema: + example: + disabled: false + include_byok_in_limit: true + limit: 75 + limit_reset: daily + name: Updated API Key Name + properties: + disabled: + description: Whether to disable the API key + example: false + type: boolean + include_byok_in_limit: + description: Whether to include BYOK usage in the limit + example: true + type: boolean + limit: + description: New spending limit for the API key in USD + example: 75 + format: double + type: number + limit_reset: + description: >- + New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen + automatically at midnight UTC, and weeks are Monday through Sunday. + enum: + - daily + - weekly + - monthly + - null + example: daily + nullable: true + type: string + name: + description: New name for the API key + example: Updated API Key Name + type: string + type: object required: true responses: '200': - description: Assignment result content: application/json: - schema: - $ref: '#/components/schemas/BulkAssignKeysResponse' example: - assigned_count: 3 + data: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: null + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: true + label: Updated API Key Name + limit: 75 + limit_remaining: 49.5 + limit_reset: daily + name: Updated API Key Name + updated_at: '2025-08-24T16:00:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + schema: + example: + data: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: null + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: true + label: Updated API Key Name + limit: 75 + limit_remaining: 49.5 + limit_reset: daily + name: Updated API Key Name + updated_at: '2025-08-24T16:00:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + data: + description: The updated API key information + example: + byok_usage: 17.38 + byok_usage_daily: 17.38 + byok_usage_monthly: 17.38 + byok_usage_weekly: 17.38 + created_at: '2025-08-24T10:30:00Z' + creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 + disabled: false + expires_at: '2027-12-31T23:59:59Z' + hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + include_byok_in_limit: false + label: sk-or-v1-0e6...1c96 + limit: 100 + limit_remaining: 74.5 + limit_reset: monthly + name: My Production Key + updated_at: '2025-08-24T15:45:00Z' + usage: 25.5 + usage_daily: 25.5 + usage_monthly: 25.5 + usage_weekly: 25.5 + properties: + byok_usage: + description: Total external BYOK usage (in USD) for the API key + example: 17.38 + format: double + type: number + byok_usage_daily: + description: External BYOK usage (in USD) for the current UTC day + example: 17.38 + format: double + type: number + byok_usage_monthly: + description: External BYOK usage (in USD) for current UTC month + example: 17.38 + format: double + type: number + byok_usage_weekly: + description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) + example: 17.38 + format: double + type: number + created_at: + description: ISO 8601 timestamp of when the API key was created + example: '2025-08-24T10:30:00Z' + type: string + creator_user_id: + description: >- + The user ID of the key creator. For organization-owned keys, this is the member who created + the key. For individual users, this is the user's own ID. + example: user_2dHFtVWx2n56w6HkM0000000000 + nullable: true + type: string + disabled: + description: Whether the API key is disabled + example: false + type: boolean + expires_at: + description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration + example: '2027-12-31T23:59:59Z' + format: date-time + nullable: true + type: string + hash: + description: Unique hash identifier for the API key + example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + type: string + include_byok_in_limit: + description: Whether to include external BYOK usage in the credit limit + example: false + type: boolean + label: + description: Human-readable label for the API key + example: sk-or-v1-0e6...1c96 + type: string + limit: + description: Spending limit for the API key in USD + example: 100 + format: double + type: number + limit_remaining: + description: Remaining spending limit in USD + example: 74.5 + format: double + type: number + limit_reset: + description: Type of limit reset for the API key + example: monthly + nullable: true + type: string + name: + description: Name of the API key + example: My Production Key + type: string + updated_at: + description: ISO 8601 timestamp of when the API key was last updated + example: '2025-08-24T15:45:00Z' + nullable: true + type: string + usage: + description: Total OpenRouter credit usage (in USD) for the API key + example: 25.5 + format: double + type: number + usage_daily: + description: OpenRouter credit usage (in USD) for the current UTC day + example: 25.5 + format: double + type: number + usage_monthly: + description: OpenRouter credit usage (in USD) for the current UTC month + example: 25.5 + format: double + type: number + usage_weekly: + description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) + example: 25.5 + format: double + type: number + 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 + type: object + required: + - data + type: object + description: API key updated successfully '400': - description: Bad Request - Invalid request parameters or malformed input content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header - '404': - description: Not Found - Resource does not exist - content: - application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' - example: - error: - code: 404 - message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - /guardrails/{id}/assignments/members: - get: - operationId: listGuardrailMemberAssignments - x-speakeasy-name-override: listGuardrailMemberAssignments - tags: - - Guardrails - summary: List member assignments for a guardrail - description: >- - List all organization member assignments for a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - x-speakeasy-pagination: - type: offsetLimit - inputs: - - name: offset - in: parameters - type: offset - - name: limit - in: parameters - type: limit - outputs: - results: $.data - parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id - in: path - - schema: - type: integer - minimum: 0 - description: Number of records to skip for pagination - example: 0 - required: false - description: Number of records to skip for pagination - name: offset - in: query - - schema: - type: integer - minimum: 1 - maximum: 100 - description: Maximum number of records to return (max 100) - example: 50 - required: false - description: Maximum number of records to return (max 100) - name: limit - in: query - responses: - '200': - description: List of member assignments - content: - application/json: - schema: - $ref: '#/components/schemas/ListMemberAssignmentsResponse' - example: - data: - - id: 550e8400-e29b-41d4-a716-446655440000 - user_id: user_abc123 - organization_id: org_xyz789 - guardrail_id: 550e8400-e29b-41d4-a716-446655440001 - assigned_by: user_abc123 - created_at: '2025-08-24T10:30:00Z' - total_count: 1 - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header + description: Unauthorized - Authentication required or invalid credentials '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found - '500': - description: Internal Server Error - Unexpected server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' - example: - error: - code: 500 - message: Internal Server Error - post: - operationId: bulkAssignMembersToGuardrail - x-speakeasy-name-override: bulkAssignMembers - tags: - - Guardrails - summary: Bulk assign members to a guardrail - description: >- - Assign multiple organization members to a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id - in: path - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BulkAssignMembersRequest' - example: - member_user_ids: - - user_abc123 - - user_def456 - required: true - responses: - '200': - description: Assignment result - content: - application/json: - schema: - $ref: '#/components/schemas/BulkAssignMembersResponse' - example: - assigned_count: 2 - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '404': + $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist + '429': content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: - code: 404 - message: Resource not found + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - /guardrails/{id}/assignments/keys/remove: - post: - operationId: bulkUnassignKeysFromGuardrail - x-speakeasy-name-override: bulkUnassignKeys + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Update an API key tags: - - Guardrails - summary: Bulk unassign keys from a guardrail + - API Keys + x-speakeasy-name-override: update + /messages: + post: description: >- - Unassign multiple API keys from a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. - parameters: - - schema: - type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id - in: path + Creates a message using the Anthropic Messages API format. Supports text, images, PDFs, tools, and extended + thinking. + operationId: createMessages requestBody: content: application/json: - schema: - $ref: '#/components/schemas/BulkUnassignKeysRequest' example: - key_hashes: - - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 + max_tokens: 1024 + messages: + - content: Hello, how are you? + role: user + model: anthropic/claude-sonnet-4 + schema: + $ref: '#/components/schemas/MessagesRequest' required: true responses: '200': - description: Unassignment result content: application/json: + example: + content: + - text: I'm doing well, thank you for asking! How can I help you today? + type: text + id: msg_abc123 + model: anthropic/claude-sonnet-4 + role: assistant + stop_reason: end_turn + type: message + usage: + input_tokens: 12 + output_tokens: 18 schema: - $ref: '#/components/schemas/BulkUnassignKeysResponse' + $ref: '#/components/schemas/MessagesResult' + text/event-stream: example: - unassigned_count: 3 + data: + delta: + text: Hello + type: text_delta + index: 0 + type: content_block_delta + event: content_block_delta + schema: + properties: + data: + $ref: '#/components/schemas/MessagesStreamEvents' + event: + type: string + required: + - event + - data + type: object + x-speakeasy-sse-sentinel: '[DONE]' + description: Successful response '400': - description: Bad Request - Invalid request parameters or malformed input content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: - code: 400 - message: Invalid request parameters + message: 'Invalid request: messages is required' + type: invalid_request_error + type: error + schema: + $ref: '#/components/schemas/MessagesErrorResponse' + description: Invalid request error '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: + example: + error: + message: Invalid API key + type: authentication_error + type: error schema: - $ref: '#/components/schemas/UnauthorizedResponse' + $ref: '#/components/schemas/MessagesErrorResponse' + description: Authentication error + '403': + content: + application/json: example: error: - code: 401 - message: Missing Authentication header + message: Permission denied + type: permission_error + type: error + schema: + $ref: '#/components/schemas/MessagesErrorResponse' + description: Permission denied error '404': - description: Not Found - Resource does not exist content: application/json: + example: + error: + message: Model not found + type: not_found_error + type: error schema: - $ref: '#/components/schemas/NotFoundResponse' + $ref: '#/components/schemas/MessagesErrorResponse' + description: Not found error + '429': + content: + application/json: example: error: - code: 404 - message: Resource not found + message: Rate limit exceeded + type: rate_limit_error + type: error + schema: + $ref: '#/components/schemas/MessagesErrorResponse' + description: Rate limit error '500': - description: Internal Server Error - Unexpected server error content: application/json: + example: + error: + message: Internal server error + type: api_error + type: error schema: - $ref: '#/components/schemas/InternalServerResponse' + $ref: '#/components/schemas/MessagesErrorResponse' + description: API error + '503': + content: + application/json: example: error: - code: 500 - message: Internal Server Error - /guardrails/{id}/assignments/members/remove: - post: - operationId: bulkUnassignMembersFromGuardrail - x-speakeasy-name-override: bulkUnassignMembers + message: Service temporarily overloaded + type: overloaded_error + type: error + schema: + $ref: '#/components/schemas/MessagesErrorResponse' + description: Overloaded error + '529': + content: + application/json: + example: + error: + message: Provider is temporarily overloaded + type: overloaded_error + type: error + schema: + $ref: '#/components/schemas/MessagesErrorResponse' + description: Overloaded error + summary: Create a message tags: - - Guardrails - summary: Bulk unassign members from a guardrail - description: >- - Unassign multiple organization members from a specific guardrail. [Management - key](/docs/guides/overview/auth/management-api-keys) required. + - Anthropic Messages + x-speakeasy-ignore: true + x-speakeasy-name-override: create + x-speakeasy-stream-request-field: stream + /models: + get: + operationId: getModels parameters: - - schema: + - description: Filter models by use case category + in: query + name: category + required: false + schema: + description: Filter models by use case category + enum: + - programming + - roleplay + - marketing + - marketing/seo + - technology + - science + - translation + - legal + - finance + - health + - trivia + - academia + example: programming + type: string + - description: Filter models by supported parameter (comma-separated) + in: query + name: supported_parameters + required: false + schema: + description: Filter models by supported parameter (comma-separated) + example: temperature + type: string + - description: >- + Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, + embeddings) or "all" to include all models. Defaults to "text". + in: query + name: output_modalities + required: false + schema: + description: >- + Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, + embeddings) or "all" to include all models. Defaults to "text". + example: text + type: string + - description: Return results as RSS feed + in: query + name: use_rss + required: false + schema: + description: Return results as RSS feed + example: 'true' + type: string + - description: Use chat links in RSS feed items + in: query + name: use_rss_chat_links + required: false + schema: + description: Use chat links in RSS feed items + example: 'true' type: string - format: uuid - description: The unique identifier of the guardrail - example: 550e8400-e29b-41d4-a716-446655440000 - required: true - description: The unique identifier of the guardrail - name: id - in: path - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BulkUnassignMembersRequest' - example: - member_user_ids: - - user_abc123 - - user_def456 - required: true responses: '200': - description: Unassignment result content: application/json: - schema: - $ref: '#/components/schemas/BulkUnassignMembersResponse' example: - unassigned_count: 2 - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: + data: + - architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + canonical_slug: openai/gpt-4 + context_length: 8192 + created: 1692901234 + default_parameters: null + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + expiration_date: null + id: openai/gpt-4 + knowledge_cutoff: null + links: + details: /api/v1/models/openai/gpt-5.4/endpoints + name: GPT-4 + per_request_limits: null + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + supported_parameters: + - temperature + - top_p + - max_tokens + top_provider: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: + $ref: '#/components/schemas/ModelsListResponse' + application/rss+xml: + example: >- + OpenRouter + Models schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '404': - description: Not Found - Resource does not exist + type: string + description: Returns a list of models or RSS feed + '400': content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: - code: 404 - message: Resource not found + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - /key: - get: - operationId: getCurrentKey - x-speakeasy-name-override: getCurrentKeyMetadata + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all models and their properties tags: - - API Keys - summary: Get current API key - description: Get information on the API key associated with the current authentication session + - Models + x-speakeasy-name-override: list + /models/{author}/{slug}/endpoints: + get: + operationId: listEndpoints + parameters: + - description: The author/organization of the model + in: path + name: author + required: true + schema: + description: The author/organization of the model + example: openai + type: string + - description: The model slug + in: path + name: slug + required: true + schema: + description: The model slug + example: gpt-4 + type: string responses: '200': - description: API key details content: application/json: + example: + data: + architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + created: 1692901234 + description: GPT-4 is a large multimodal model. + endpoints: [] + id: openai/gpt-4 + name: GPT-4 schema: - type: object - properties: + example: data: - type: object - properties: - label: - type: string - description: Human-readable label for the API key - example: sk-or-v1-0e6...1c96 - limit: - type: number - format: double - description: Spending limit for the API key in USD - example: 100 - usage: - type: number - format: double - description: Total OpenRouter credit usage (in USD) for the API key - example: 25.5 - usage_daily: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC day - example: 25.5 - usage_weekly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) - example: 25.5 - usage_monthly: - type: number - format: double - description: OpenRouter credit usage (in USD) for the current UTC month - example: 25.5 - byok_usage: - type: number - format: double - description: Total external BYOK usage (in USD) for the API key - example: 17.38 - byok_usage_daily: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC day - example: 17.38 - byok_usage_weekly: - type: number - format: double - description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) - example: 17.38 - byok_usage_monthly: - type: number - format: double - description: External BYOK usage (in USD) for current UTC month - example: 17.38 - is_free_tier: - type: boolean - description: Whether this is a free tier API key - example: false - is_management_key: - type: boolean - description: Whether this is a management key - example: false - is_provisioning_key: - type: boolean - description: Whether this is a management key - deprecated: true - example: false - limit_remaining: - type: number - format: double - description: Remaining spending limit in USD - example: 74.5 - limit_reset: - type: string - nullable: true - description: Type of limit reset for the API key - example: monthly - include_byok_in_limit: - type: boolean - description: Whether to include external BYOK usage in the credit limit - example: false - expires_at: - type: string - nullable: true - format: date-time - description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration - example: '2027-12-31T23:59:59Z' - creator_user_id: - type: string - nullable: true - 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 - rate_limit: - type: object - properties: - requests: - type: integer - description: Number of requests allowed per interval - example: 1000 - interval: - type: string - description: Rate limit interval - example: 1h - note: - type: string - description: Note about the rate limit - example: This field is deprecated and safe to ignore. - required: - - requests - - interval - - note - description: Legacy rate limit information about a key. Will always return -1. - deprecated: true - example: - requests: 1000 - interval: 1h - note: This field is deprecated and safe to ignore. - required: - - label - - limit - - usage - - usage_daily - - usage_weekly - - usage_monthly - - byok_usage - - byok_usage_daily - - byok_usage_weekly - - byok_usage_monthly - - is_free_tier - - is_management_key - - is_provisioning_key - - limit_remaining - - limit_reset - - include_byok_in_limit - - creator_user_id - - rate_limit - description: Current API key information - example: - label: sk-or-v1-au7...890 - limit: 100 - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - is_free_tier: false - is_management_key: false - is_provisioning_key: false - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - rate_limit: - requests: 1000 - interval: 1h - note: This field is deprecated and safe to ignore. + architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + created: 1692901234 + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + endpoints: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: openai/gpt-4 + model_name: GPT-4 + name: 'OpenAI: GPT-4' + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: OpenAI + quantization: fp16 + status: default + supported_parameters: + - temperature + - top_p + - max_tokens + supports_implicit_caching: true + tag: openai + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + id: openai/gpt-4 + name: GPT-4 + properties: + data: + $ref: '#/components/schemas/ListEndpointsResponse' required: - data - example: - data: - label: sk-or-v1-au7...890 - limit: 100 - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - is_free_tier: false - is_management_key: false - is_provisioning_key: false - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - rate_limit: - requests: 1000 - interval: 1h - note: This field is deprecated and safe to ignore. + type: object + description: Returns a list of endpoints + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all endpoints for a model + tags: + - Endpoints + x-speakeasy-name-override: list + /models/count: + get: + operationId: listModelsCount + parameters: + - description: >- + Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, + embeddings) or "all" to include all models. Defaults to "text". + in: query + name: output_modalities + required: false + schema: + description: >- + Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, + embeddings) or "all" to include all models. Defaults to "text". + example: text + type: string + responses: + '200': + content: + application/json: example: data: - label: sk-or-v1-au7...890 - limit: 100 - usage: 25.5 - usage_daily: 25.5 - usage_weekly: 25.5 - usage_monthly: 25.5 - byok_usage: 17.38 - byok_usage_daily: 17.38 - byok_usage_weekly: 17.38 - byok_usage_monthly: 17.38 - is_free_tier: false - is_management_key: false - is_provisioning_key: false - limit_remaining: 74.5 - limit_reset: monthly - include_byok_in_limit: false - expires_at: '2027-12-31T23:59:59Z' - creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 - rate_limit: - requests: 1000 - interval: 1h - note: This field is deprecated and safe to ignore. - '401': - description: Unauthorized - Authentication required or invalid credentials + count: 150 + schema: + $ref: '#/components/schemas/ModelsCountResponse' + description: Returns the total count of available models + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '500': content: application/json: + example: + error: + code: 500 + message: Internal Server Error schema: - $ref: '#/components/schemas/UnauthorizedResponse' + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get total count of available models + tags: + - Models + x-speakeasy-name-override: count + /models/user: + get: + description: >- + List models filtered by user provider preferences, [privacy + settings](https://openrouter.ai/docs/guides/privacy/provider-logging), and + [guardrails](https://openrouter.ai/docs/guides/features/guardrails). If requesting through + `eu.openrouter.ai/api/v1/...` the results will be filtered to models that satisfy [EU in-region + routing](https://openrouter.ai/docs/guides/privacy/provider-logging#enterprise-eu-in-region-routing). + operationId: listModelsUser + responses: + '200': + content: + application/json: + example: + data: + - architecture: + input_modalities: + - text + instruct_type: chatml + modality: text->text + output_modalities: + - text + tokenizer: GPT + canonical_slug: openai/gpt-4 + context_length: 8192 + created: 1692901234 + default_parameters: null + description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. + expiration_date: null + id: openai/gpt-4 + knowledge_cutoff: null + links: + details: /api/v1/models/openai/gpt-5.4/endpoints + name: GPT-4 + per_request_limits: null + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + supported_parameters: + - temperature + - top_p + - max_tokens + top_provider: + context_length: 8192 + is_moderated: true + max_completion_tokens: 4096 + schema: + $ref: '#/components/schemas/ModelsListResponse' + description: Returns a list of models filtered by user provider preferences + '401': + content: + application/json: example: error: code: 401 message: Missing Authentication header - '500': - description: Internal Server Error - Unexpected server error + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': content: application/json: + example: + error: + code: 404 + message: Resource not found schema: - $ref: '#/components/schemas/InternalServerResponse' + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: example: error: code: 500 message: Internal Server Error - /auth/keys: - post: - operationId: exchangeAuthCodeForAPIKey + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + security: + - bearer: [] + summary: List models filtered by user provider preferences, privacy settings, and guardrails tags: - - OAuth - summary: Exchange authorization code for API key - description: Exchange an authorization code from the PKCE flow for a user-controlled API key - requestBody: - content: - application/json: - schema: - type: object - properties: - code: - type: string - description: The authorization code received from the OAuth redirect - example: auth_code_abc123def456 - code_verifier: - type: string - description: The code verifier if code_challenge was used in the authorization request - example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk - code_challenge_method: - type: string - nullable: true - enum: - - S256 - - plain - - null - description: The method used to generate the code challenge - example: S256 - required: - - code - example: - code: auth_code_abc123def456 - code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk - code_challenge_method: S256 - example: - code: auth_code_abc123def456 - code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk - code_challenge_method: S256 - required: true + - Models + x-speakeasy-name-override: listForUser + /organization/members: + get: + description: >- + List all members of the organization associated with the authenticated management key. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listOrganizationMembers + parameters: + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer responses: '200': - description: Successfully exchanged code for an API key content: application/json: + example: + data: + - email: jane.doe@example.com + first_name: Jane + id: user_2dHFtVWx2n56w6HkM0000000000 + last_name: Doe + role: member + total_count: 25 schema: - type: object properties: - key: - type: string - description: The API key to use for OpenRouter requests - example: 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 - user_id: - type: string - nullable: true - description: User ID associated with the API key - example: user_2yOPcMpKoQhcd4bVgSMlELRaIah + data: + description: List of organization members + items: + properties: + email: + description: Email address of the member + example: jane.doe@example.com + type: string + first_name: + description: First name of the member + example: Jane + nullable: true + type: string + id: + description: User ID of the organization member + example: user_2dHFtVWx2n56w6HkM0000000000 + type: string + last_name: + description: Last name of the member + example: Doe + nullable: true + type: string + role: + description: Role of the member in the organization + enum: + - org:admin + - org:member + example: org:member + type: string + required: + - id + - first_name + - last_name + - email + - role + type: object + type: array + total_count: + description: Total number of members in the organization + example: 25 + type: integer required: - - key - - user_id - example: - key: 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 - user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah - example: - key: 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 - user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah - '400': - description: Bad Request - Invalid request parameters or malformed input + - data + - total_count + type: object + description: List of organization members + '401': content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: - code: 400 - message: Invalid request parameters - '403': - description: Forbidden - Authentication successful but insufficient permissions + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': content: application/json: - schema: - $ref: '#/components/schemas/ForbiddenResponse' example: error: - code: 403 - message: Only management keys can perform this operation + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - /auth/keys/code: - post: - x-speakeasy-name-override: createAuthCode + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List organization members tags: - - OAuth - summary: Create authorization code - description: Create an authorization code for the PKCE flow to generate a user-controlled API key - requestBody: - content: - application/json: - schema: - type: object - properties: - callback_url: - type: string - format: uri - description: >- - The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are - allowed. - example: https://myapp.com/auth/callback - code_challenge: - type: string - description: PKCE code challenge for enhanced security - example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM - code_challenge_method: - type: string - enum: - - S256 - - plain - description: The method used to generate the code challenge - example: S256 - limit: - type: number - format: double - description: Credit limit for the API key to be created - example: 100 - expires_at: - type: string - nullable: true - format: date-time - description: Optional expiration time for the API key to be created - example: '2027-12-31T23:59:59Z' - key_label: - type: string - maxLength: 100 - description: Optional custom label for the API key. Defaults to the app name if not provided. - example: My Custom Key - usage_limit_type: - type: string - enum: - - daily - - weekly - - monthly - description: Optional credit limit reset interval. When set, the credit limit resets on this interval. - example: monthly - spawn_agent: - type: string - description: Agent identifier for spawn telemetry - example: my-agent - x-speakeasy-ignore: true - x-fern-ignore: true - spawn_cloud: - type: string - description: Cloud identifier for spawn telemetry - example: aws-us-east-1 - x-speakeasy-ignore: true - x-fern-ignore: true - required: - - callback_url - example: - callback_url: https://myapp.com/auth/callback - code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM - code_challenge_method: S256 - limit: 100 - example: - callback_url: https://myapp.com/auth/callback - code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM - code_challenge_method: S256 - limit: 100 - required: true + - Organization + x-speakeasy-name-override: listMembers + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + /providers: + get: + operationId: listProviders responses: '200': - description: Successfully created authorization code content: application/json: + example: + data: + - datacenters: + - US + - IE + headquarters: US + name: OpenAI + privacy_policy_url: https://openai.com/privacy + slug: openai + status_page_url: https://status.openai.com + terms_of_service_url: https://openai.com/terms schema: - type: object + example: + data: + - datacenters: + - US + - IE + headquarters: US + name: OpenAI + privacy_policy_url: https://openai.com/privacy + slug: openai + status_page_url: https://status.openai.com + terms_of_service_url: https://openai.com/terms properties: data: - type: object - properties: - id: - type: string - description: The authorization code ID to use in the exchange request - example: auth_code_xyz789 - app_id: - type: integer - description: The application ID associated with this auth code - example: 12345 - created_at: - type: string - description: ISO 8601 timestamp of when the auth code was created - example: '2025-08-24T10:30:00Z' - required: - - id - - app_id - - created_at - description: Auth code data - example: - id: auth_code_xyz789 - app_id: 12345 - created_at: '2025-08-24T10:30:00Z' + items: + example: + datacenters: + - US + - IE + headquarters: US + name: OpenAI + privacy_policy_url: https://openai.com/privacy + slug: openai + status_page_url: https://status.openai.com + terms_of_service_url: https://openai.com/terms + properties: + datacenters: + description: ISO 3166-1 Alpha-2 country codes of the provider datacenter locations + example: + - US + - IE + items: + enum: + - AD + - AE + - AF + - AG + - AI + - AL + - AM + - AO + - AQ + - AR + - AS + - AT + - AU + - AW + - AX + - AZ + - BA + - BB + - BD + - BE + - BF + - BG + - BH + - BI + - BJ + - BL + - BM + - BN + - BO + - BQ + - BR + - BS + - BT + - BV + - BW + - BY + - BZ + - CA + - CC + - CD + - CF + - CG + - CH + - CI + - CK + - CL + - CM + - CN + - CO + - CR + - CU + - CV + - CW + - CX + - CY + - CZ + - DE + - DJ + - DK + - DM + - DO + - DZ + - EC + - EE + - EG + - EH + - ER + - ES + - ET + - FI + - FJ + - FK + - FM + - FO + - FR + - GA + - GB + - GD + - GE + - GF + - GG + - GH + - GI + - GL + - GM + - GN + - GP + - GQ + - GR + - GS + - GT + - GU + - GW + - GY + - HK + - HM + - HN + - HR + - HT + - HU + - ID + - IE + - IL + - IM + - IN + - IO + - IQ + - IR + - IS + - IT + - JE + - JM + - JO + - JP + - KE + - KG + - KH + - KI + - KM + - KN + - KP + - KR + - KW + - KY + - KZ + - LA + - LB + - LC + - LI + - LK + - LR + - LS + - LT + - LU + - LV + - LY + - MA + - MC + - MD + - ME + - MF + - MG + - MH + - MK + - ML + - MM + - MN + - MO + - MP + - MQ + - MR + - MS + - MT + - MU + - MV + - MW + - MX + - MY + - MZ + - NA + - NC + - NE + - NF + - NG + - NI + - NL + - 'NO' + - NP + - NR + - NU + - NZ + - OM + - PA + - PE + - PF + - PG + - PH + - PK + - PL + - PM + - PN + - PR + - PS + - PT + - PW + - PY + - QA + - RE + - RO + - RS + - RU + - RW + - SA + - SB + - SC + - SD + - SE + - SG + - SH + - SI + - SJ + - SK + - SL + - SM + - SN + - SO + - SR + - SS + - ST + - SV + - SX + - SY + - SZ + - TC + - TD + - TF + - TG + - TH + - TJ + - TK + - TL + - TM + - TN + - TO + - TR + - TT + - TV + - TW + - TZ + - UA + - UG + - UM + - US + - UY + - UZ + - VA + - VC + - VE + - VG + - VI + - VN + - VU + - WF + - WS + - YE + - YT + - ZA + - ZM + - ZW + type: string + nullable: true + type: array + headquarters: + description: ISO 3166-1 Alpha-2 country code of the provider headquarters + enum: + - AD + - AE + - AF + - AG + - AI + - AL + - AM + - AO + - AQ + - AR + - AS + - AT + - AU + - AW + - AX + - AZ + - BA + - BB + - BD + - BE + - BF + - BG + - BH + - BI + - BJ + - BL + - BM + - BN + - BO + - BQ + - BR + - BS + - BT + - BV + - BW + - BY + - BZ + - CA + - CC + - CD + - CF + - CG + - CH + - CI + - CK + - CL + - CM + - CN + - CO + - CR + - CU + - CV + - CW + - CX + - CY + - CZ + - DE + - DJ + - DK + - DM + - DO + - DZ + - EC + - EE + - EG + - EH + - ER + - ES + - ET + - FI + - FJ + - FK + - FM + - FO + - FR + - GA + - GB + - GD + - GE + - GF + - GG + - GH + - GI + - GL + - GM + - GN + - GP + - GQ + - GR + - GS + - GT + - GU + - GW + - GY + - HK + - HM + - HN + - HR + - HT + - HU + - ID + - IE + - IL + - IM + - IN + - IO + - IQ + - IR + - IS + - IT + - JE + - JM + - JO + - JP + - KE + - KG + - KH + - KI + - KM + - KN + - KP + - KR + - KW + - KY + - KZ + - LA + - LB + - LC + - LI + - LK + - LR + - LS + - LT + - LU + - LV + - LY + - MA + - MC + - MD + - ME + - MF + - MG + - MH + - MK + - ML + - MM + - MN + - MO + - MP + - MQ + - MR + - MS + - MT + - MU + - MV + - MW + - MX + - MY + - MZ + - NA + - NC + - NE + - NF + - NG + - NI + - NL + - 'NO' + - NP + - NR + - NU + - NZ + - OM + - PA + - PE + - PF + - PG + - PH + - PK + - PL + - PM + - PN + - PR + - PS + - PT + - PW + - PY + - QA + - RE + - RO + - RS + - RU + - RW + - SA + - SB + - SC + - SD + - SE + - SG + - SH + - SI + - SJ + - SK + - SL + - SM + - SN + - SO + - SR + - SS + - ST + - SV + - SX + - SY + - SZ + - TC + - TD + - TF + - TG + - TH + - TJ + - TK + - TL + - TM + - TN + - TO + - TR + - TT + - TV + - TW + - TZ + - UA + - UG + - UM + - US + - UY + - UZ + - VA + - VC + - VE + - VG + - VI + - VN + - VU + - WF + - WS + - YE + - YT + - ZA + - ZM + - ZW + - null + example: US + nullable: true + type: string + name: + description: Display name of the provider + example: OpenAI + type: string + privacy_policy_url: + description: URL to the provider's privacy policy + example: https://openai.com/privacy + nullable: true + type: string + slug: + description: URL-friendly identifier for the provider + example: openai + type: string + status_page_url: + description: URL to the provider's status page + example: https://status.openai.com + nullable: true + type: string + terms_of_service_url: + description: URL to the provider's terms of service + example: https://openai.com/terms + nullable: true + type: string + required: + - name + - slug + - privacy_policy_url + type: object + type: array required: - data - example: - data: - id: auth_code_xyz789 - app_id: 12345 - created_at: '2025-08-24T10:30:00Z' - example: - data: - id: auth_code_xyz789 - app_id: 12345 - created_at: '2025-08-24T10:30:00Z' - '400': - description: Bad Request - Invalid request parameters or malformed input - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' - example: - error: - code: 400 - message: Invalid request parameters - '401': - description: Unauthorized - Authentication required or invalid credentials - content: - application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' - example: - error: - code: 401 - message: Missing Authentication header - '409': - description: Conflict - Resource conflict or concurrent modification - content: - application/json: - schema: - $ref: '#/components/schemas/ConflictResponse' - example: - error: - code: 409 - message: Resource conflict. Please try again later. + type: object + description: Returns a list of providers '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - operationId: createAuthKeysCode - /embeddings: - post: - x-speakeasy-name-override: generate + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all providers tags: - - Embeddings - summary: Submit an embedding request - description: Submits an embedding request to the embeddings router + - Providers + x-speakeasy-name-override: list + /rerank: + post: + description: Submits a rerank request to the rerank router + operationId: createRerank requestBody: content: application/json: schema: - type: object + description: Rerank request input + example: + documents: + - Paris is the capital of France. + - Berlin is the capital of Germany. + model: cohere/rerank-v3.5 + query: What is the capital of France? + top_n: 3 properties: - input: - anyOf: - - type: string - - type: array - items: - type: string - - type: array - items: - type: number - - type: array - items: - type: array - items: - type: number - - type: array - items: - type: object - properties: - content: - type: array - items: - oneOf: - - type: object - properties: - type: - type: string - enum: - - text - text: - type: string - required: - - type - - text - - type: object - properties: - type: - type: string - enum: - - image_url - image_url: - type: object - properties: - url: - type: string - required: - - url - required: - - type - - image_url - required: - - content - description: Text, token, or multimodal input(s) to embed - example: The quick brown fox jumps over the lazy dog + documents: + description: The list of documents to rerank + example: + - Paris is the capital of France. + - Berlin is the capital of Germany. + items: + type: string + type: array model: + description: The rerank model to use + example: cohere/rerank-v3.5 type: string - description: The model to use for embeddings - example: openai/text-embedding-3-small - encoding_format: - type: string - enum: - - float - - base64 - description: The format of the output embeddings - example: float - dimensions: - type: integer - minimum: 0 - exclusiveMinimum: 0 - description: The number of dimensions for the output embeddings - example: 1536 - user: - type: string - description: A unique identifier for the end-user - example: user-1234 provider: allOf: - $ref: '#/components/schemas/ProviderPreferences' - description: Provider routing preferences for the request. - input_type: + query: + description: The search query to rerank documents against + example: What is the capital of France? type: string - description: The type of input (e.g. search_query, search_document) - example: search_query + top_n: + description: Number of most relevant documents to return + example: 3 + exclusiveMinimum: 0 + minimum: 0 + type: integer required: - - input - model - description: Embeddings request input - example: - model: openai/text-embedding-3-small - input: The quick brown fox jumps over the lazy dog - dimensions: 1536 - example: - model: openai/text-embedding-3-small - input: The quick brown fox jumps over the lazy dog + - query + - documents + type: object required: true responses: '200': - description: Embedding response content: application/json: schema: - type: object + description: Rerank response containing ranked results + example: + id: gen-rerank-1234567890-abc + model: cohere/rerank-v3.5 + results: + - document: + text: Paris is the capital of France. + index: 0 + relevance_score: 0.98 + usage: + search_units: 1 + total_tokens: 150 properties: id: + description: Unique identifier for the rerank response (ORID format) + example: gen-rerank-1234567890-abc type: string - description: Unique identifier for the embeddings response - example: embd-1234567890 - object: + model: + description: The model used for reranking + example: cohere/rerank-v3.5 type: string - enum: - - list - data: - type: array - items: - type: object - properties: - object: - type: string - enum: - - embedding - embedding: - anyOf: - - type: array - items: - type: number - - type: string - description: Embedding vector as an array of floats or a base64 string - example: - - 0.0023064255 - - -0.009327292 - - 0.015797347 + provider: + description: The provider that served the rerank request + example: Cohere + type: string + results: + description: List of rerank results sorted by relevance + example: + - document: + text: Paris is the capital of France. + index: 0 + relevance_score: 0.98 + items: + description: A single rerank result + example: + document: + text: Paris is the capital of France. + index: 0 + relevance_score: 0.98 + properties: + document: + description: The document object containing the original text + properties: + text: + description: The document text + example: Paris is the capital of France. + type: string + required: + - text + type: object index: - type: integer - description: Index of the embedding in the input list + description: Index of the document in the original input list example: 0 + type: integer + relevance_score: + description: Relevance score of the document to the query + example: 0.98 + format: double + type: number required: - - object - - embedding - description: A single embedding object - example: - object: embedding - embedding: - - 0.0023064255 - - -0.009327292 - - 0.015797347 - index: 0 - description: List of embedding objects - example: - - object: embedding - embedding: - - 0.0023064255 - - -0.009327292 - - 0.015797347 - index: 0 - model: - type: string - description: The model used for embeddings - example: openai/text-embedding-3-small + - index + - relevance_score + - document + type: object + type: array usage: - type: object + description: Usage statistics + example: + search_units: 1 + total_tokens: 150 properties: - prompt_tokens: + cost: + description: Cost of the request in credits + example: 0.001 + format: double + type: number + search_units: + description: Number of search units consumed (Cohere billing) + example: 1 type: integer - description: Number of tokens in the input - example: 8 total_tokens: - type: integer description: Total number of tokens used - example: 8 - cost: - type: number - format: double - description: Cost of the request in credits - example: 0.0001 - required: - - prompt_tokens - - total_tokens - description: Token usage statistics - example: - prompt_tokens: 8 - total_tokens: 8 + example: 150 + type: integer + type: object required: - - object - - data - model - description: Embeddings response containing embedding vectors - example: - object: list - data: - - object: embedding - embedding: - - 0.0023064255 - - -0.009327292 - - 0.015797347 - index: 0 - model: openai/text-embedding-3-small - usage: - prompt_tokens: 8 - total_tokens: 8 - example: - object: list - data: - - object: embedding - embedding: - - 0.0023064255 - - -0.009327292 - - 0.015797347 - index: 0 - model: openai/text-embedding-3-small - usage: - prompt_tokens: 8 - total_tokens: 8 + - 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 embeddings - embeddings do not support streaming - example: 'data: [DONE]' x-speakeasy-sse-sentinel: '[DONE]' + description: Rerank response '400': - description: Bad Request - Invalid request parameters or malformed input content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '402': - description: Payment Required - Insufficient credits or quota to complete request content: application/json: - schema: - $ref: '#/components/schemas/PaymentRequiredResponse' example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '429': - description: Too Many Requests - Rate limit exceeded content: application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' example: error: code: 429 message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error '502': - description: Bad Gateway - Provider/upstream API failure content: application/json: + example: + error: + code: 502 + message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + '503': + content: + application/json: + example: + error: + code: 503 + message: Service temporarily unavailable + schema: + $ref: '#/components/schemas/ServiceUnavailableResponse' + description: Service Unavailable - Service temporarily unavailable + '524': + content: + application/json: + example: + error: + code: 524 + message: Request timed out. Please try again later. + schema: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + description: Infrastructure Timeout - Provider request timed out at edge network + '529': + content: + application/json: + example: + error: + code: 529 + message: Provider returned error + schema: + $ref: '#/components/schemas/ProviderOverloadedResponse' + description: Provider Overloaded - Provider is temporarily overloaded + summary: Submit a rerank request + tags: + - Rerank + x-speakeasy-name-override: rerank + /responses: + post: + description: Creates a streaming or non-streaming response using OpenResponses API format + operationId: createResponses + requestBody: + content: + application/json: + example: + input: Tell me a joke + model: openai/gpt-4o + schema: + $ref: '#/components/schemas/ResponsesRequest' + required: true + responses: + '200': + content: + application/json: + example: + created_at: 1700000000 + id: resp_abc123 + model: openai/gpt-4o + object: response + output: + - content: + - text: Why did the chicken cross the road? To get to the other side! + type: output_text + role: assistant + type: message + status: completed + usage: + completion_tokens: 20 + prompt_tokens: 10 + total_tokens: 30 + schema: + $ref: '#/components/schemas/OpenResponsesResult' + text/event-stream: + example: + data: + delta: Hello + type: response.output_text.delta + schema: + properties: + data: + $ref: '#/components/schemas/StreamEvents' + required: + - data + type: object + x-speakeasy-sse-sentinel: '[DONE]' + description: Successful response + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '402': + content: + application/json: example: error: - code: 502 - message: Provider returned error - '503': - description: Service Unavailable - Service temporarily unavailable + code: 402 + message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request + '404': content: application/json: - schema: - $ref: '#/components/schemas/ServiceUnavailableResponse' example: error: - code: 503 - message: Service temporarily unavailable - '524': - description: Infrastructure Timeout - Provider request timed out at edge network + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '408': content: application/json: - schema: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' example: error: - code: 524 - message: Request timed out. Please try again later. - '529': - description: Provider Overloaded - Provider is temporarily overloaded + code: 408 + message: Operation timed out. Please try again later. + schema: + $ref: '#/components/schemas/RequestTimeoutResponse' + description: Request Timeout - Operation exceeded time limit + '413': content: application/json: - schema: - $ref: '#/components/schemas/ProviderOverloadedResponse' example: error: - code: 529 - message: Provider returned error - operationId: createEmbeddings - /embeddings/models: - get: - tags: - - Embeddings - x-speakeasy-name-override: listModels - summary: List all embeddings models - description: Returns a list of all available embeddings models and their properties - responses: - '200': - description: Returns a list of embeddings models + code: 413 + message: Request payload too large + schema: + $ref: '#/components/schemas/PayloadTooLargeResponse' + description: Payload Too Large - Request payload exceeds size limits + '422': content: application/json: - schema: - $ref: '#/components/schemas/ModelsListResponse' example: - data: - - id: openai/text-embedding-3-small - canonical_slug: openai/text-embedding-3-small - name: Text Embedding 3 Small - created: 1692901234 - description: OpenAI text embedding model optimized for performance. - pricing: - prompt: '0.00000002' - completion: '0' - request: '0' - image: '0' - context_length: 8192 - architecture: - tokenizer: GPT - instruct_type: null - modality: text->text - input_modalities: - - text - output_modalities: - - embeddings - top_provider: - context_length: 8192 - max_completion_tokens: null - is_moderated: false - per_request_limits: null - supported_parameters: [] - default_parameters: null - knowledge_cutoff: null - expiration_date: null - links: - details: /api/v1/models/openai/text-embedding-3-small/endpoints - '400': - description: Bad Request - Invalid request parameters or malformed input + error: + code: 422 + message: Invalid argument + schema: + $ref: '#/components/schemas/UnprocessableEntityResponse' + description: Unprocessable Entity - Semantic validation failure + '429': content: application/json: - schema: - $ref: '#/components/schemas/BadRequestResponse' example: error: - code: 400 - message: Invalid request parameters + code: 429 + message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - operationId: listEmbeddingsModels - /rerank: - post: - x-speakeasy-name-override: rerank - tags: - - Rerank - summary: Submit a rerank request - description: Submits a rerank request to the rerank router - requestBody: - content: - application/json: - schema: - type: object - properties: - model: - type: string - description: The rerank model to use - example: cohere/rerank-v3.5 - query: - type: string - description: The search query to rerank documents against - example: What is the capital of France? - documents: - type: array - items: - type: string - description: The list of documents to rerank - example: - - Paris is the capital of France. - - Berlin is the capital of Germany. - top_n: - type: integer - minimum: 0 - exclusiveMinimum: 0 - description: Number of most relevant documents to return - example: 3 - provider: - allOf: - - $ref: '#/components/schemas/ProviderPreferences' - - description: Provider routing preferences for the request. - required: - - model - - query - - documents - description: Rerank request input - example: - model: cohere/rerank-v3.5 - query: What is the capital of France? - documents: - - Paris is the capital of France. - - Berlin is the capital of Germany. - top_n: 3 - example: - model: cohere/rerank-v3.5 - query: What is the capital of France? - documents: - - Paris is the capital of France. - - Berlin is the capital of Germany. - - Madrid is the capital of Spain. - required: true - responses: - '200': - description: Rerank response - content: - application/json: schema: - type: object - properties: - id: - type: string - description: Unique identifier for the rerank response (ORID format) - example: gen-rerank-1234567890-abc - model: - type: string - description: The model used for reranking - example: cohere/rerank-v3.5 - provider: - type: string - description: The provider that served the rerank request - example: Cohere - results: - type: array - items: - type: object - properties: - index: - type: integer - description: Index of the document in the original input list - example: 0 - relevance_score: - type: number - format: double - description: Relevance score of the document to the query - example: 0.98 - document: - type: object - properties: - text: - type: string - description: The document text - example: Paris is the capital of France. - required: - - text - description: The document object containing the original text - required: - - index - - relevance_score - - document - description: A single rerank result - example: - index: 0 - relevance_score: 0.98 - document: - text: Paris is the capital of France. - description: List of rerank results sorted by relevance - example: - - index: 0 - relevance_score: 0.98 - document: - text: Paris is the capital of France. - usage: - type: object - properties: - total_tokens: - type: integer - description: Total number of tokens used - example: 150 - search_units: - type: integer - description: Number of search units consumed (Cohere billing) - example: 1 - cost: - type: number - format: double - description: Cost of the request in credits - example: 0.001 - description: Usage statistics - example: - total_tokens: 150 - search_units: 1 - required: - - model - - results - description: Rerank response containing ranked results - example: - id: gen-rerank-1234567890-abc - model: cohere/rerank-v3.5 - results: - - index: 0 - relevance_score: 0.98 - document: - text: Paris is the capital of France. - usage: - total_tokens: 150 - search_units: 1 + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + '502': + content: + application/json: example: - id: gen-rerank-1234567890-abc - model: cohere/rerank-v3.5 - results: - - index: 0 - relevance_score: 0.98 - document: - text: Paris is the capital of France. - usage: - total_tokens: 150 - search_units: 1 - text/event-stream: + error: + code: 502 + message: Provider returned error schema: - type: string - description: Not used for rerank - rerank does not support streaming - example: 'data: [DONE]' - x-speakeasy-sse-sentinel: '[DONE]' - '400': - description: Bad Request - Invalid request parameters or malformed input + $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + '503': content: application/json: + example: + error: + code: 503 + message: Service temporarily unavailable schema: - $ref: '#/components/schemas/BadRequestResponse' + $ref: '#/components/schemas/ServiceUnavailableResponse' + description: Service Unavailable - Service temporarily unavailable + '524': + content: + application/json: + example: + error: + code: 524 + message: Request timed out. Please try again later. + schema: + $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + description: Infrastructure Timeout - Provider request timed out at edge network + '529': + content: + application/json: + example: + error: + code: 529 + message: Provider returned error + schema: + $ref: '#/components/schemas/ProviderOverloadedResponse' + description: Provider Overloaded - Provider is temporarily overloaded + summary: Create a response + tags: + - beta.responses + x-speakeasy-name-override: send + x-speakeasy-stream-request-field: stream + /videos: + post: + description: Submits a video generation request and returns a polling URL to check status + operationId: createVideos + requestBody: + content: + application/json: + example: + aspect_ratio: '16:9' + duration: 8 + model: google/veo-3.1 + prompt: A serene mountain landscape at sunset + resolution: 720p + schema: + $ref: '#/components/schemas/VideoGenerationRequest' + required: true + responses: + '202': + content: + application/json: + example: + generation_id: gen-xyz789 + id: job-abc123 + polling_url: /api/v1/videos/job-abc123 + status: pending + schema: + $ref: '#/components/schemas/VideoGenerationResponse' + description: Video generation request accepted + '400': + content: + application/json: example: error: code: 400 message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input '401': - description: Unauthorized - Authentication required or invalid credentials content: application/json: - schema: - $ref: '#/components/schemas/UnauthorizedResponse' example: error: code: 401 message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials '402': - description: Payment Required - Insufficient credits or quota to complete request content: application/json: - schema: - $ref: '#/components/schemas/PaymentRequiredResponse' example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits + schema: + $ref: '#/components/schemas/PaymentRequiredResponse' + description: Payment Required - Insufficient credits or quota to complete request '404': - description: Not Found - Resource does not exist content: application/json: - schema: - $ref: '#/components/schemas/NotFoundResponse' example: error: code: 404 message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist '429': - description: Too Many Requests - Rate limit exceeded content: application/json: - schema: - $ref: '#/components/schemas/TooManyRequestsResponse' example: error: code: 429 message: Rate limit exceeded + schema: + $ref: '#/components/schemas/TooManyRequestsResponse' + description: Too Many Requests - Rate limit exceeded '500': - description: Internal Server Error - Unexpected server error content: application/json: - schema: - $ref: '#/components/schemas/InternalServerResponse' example: error: code: 500 message: Internal Server Error - '502': - description: Bad Gateway - Provider/upstream API failure + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Submit a video generation request + tags: + - Video Generation + x-speakeasy-name-override: generate + /videos/{jobId}: + get: + description: Returns job status and content URLs when completed + operationId: getVideos + parameters: + - in: path + name: jobId + required: true + schema: + example: job-abc123 + minLength: 1 + type: string + responses: + '200': content: application/json: + example: + generation_id: gen-xyz789 + id: job-abc123 + polling_url: /api/v1/videos/job-abc123 + status: complete + unsigned_urls: + - https://storage.example.com/video.mp4 + usage: + cost: 0.5 schema: - $ref: '#/components/schemas/BadGatewayResponse' + $ref: '#/components/schemas/VideoGenerationResponse' + description: Video generation status + '401': + content: + application/json: example: error: - code: 502 - message: Provider returned error - '503': - description: Service Unavailable - Service temporarily unavailable + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': content: application/json: + example: + error: + code: 500 + message: Internal Server Error schema: - $ref: '#/components/schemas/ServiceUnavailableResponse' + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Poll video generation status + tags: + - Video Generation + x-speakeasy-name-override: getGeneration + /videos/{jobId}/content: + get: + description: Streams the generated video content from the upstream provider + operationId: listVideosContent + parameters: + - in: path + name: jobId + required: true + schema: + example: job-abc123 + minLength: 1 + type: string + - in: query + name: index + required: false + schema: + default: 0 + example: 0 + minimum: 0 + nullable: true + type: integer + responses: + '200': + content: + application/octet-stream: + example: + schema: + format: binary + type: string + description: Video content stream + '400': + content: + application/json: example: error: - code: 503 - message: Service temporarily unavailable - '524': - description: Infrastructure Timeout - Provider request timed out at edge network + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '401': content: application/json: + example: + error: + code: 401 + message: Missing Authentication header schema: - $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: example: error: - code: 524 - message: Request timed out. Please try again later. - '529': - description: Provider Overloaded - Provider is temporarily overloaded + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': content: application/json: + example: + error: + code: 500 + message: Internal Server Error schema: - $ref: '#/components/schemas/ProviderOverloadedResponse' + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + '502': + content: + application/json: example: error: - code: 529 + code: 502 message: Provider returned error - operationId: createRerank + schema: + $ref: '#/components/schemas/BadGatewayResponse' + description: Bad Gateway - Provider/upstream API failure + summary: Download generated video content + tags: + - Video Generation + x-speakeasy-name-override: getVideoContent + /videos/models: + get: + description: Returns a list of all available video generation models and their properties + operationId: listVideosModels + responses: + '200': + content: + application/json: + example: + data: + - allowed_passthrough_parameters: [] + canonical_slug: google/veo-3.1 + created: 1700000000 + description: Google video generation model + id: google/veo-3.1 + name: Veo 3.1 + pricing_skus: + generate: '0.50' + supported_aspect_ratios: + - '16:9' + supported_durations: + - 5 + - 8 + supported_resolutions: + - 720p + supported_sizes: null + schema: + $ref: '#/components/schemas/VideoModelsListResponse' + description: Returns a list of video generation models + '400': + content: + application/json: + example: + error: + code: 400 + message: Invalid request parameters + schema: + $ref: '#/components/schemas/BadRequestResponse' + description: Bad Request - Invalid request parameters or malformed input + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List all video generation models + tags: + - Video Generation +security: + - apiKey: [] +servers: + - description: Production server + url: https://openrouter.ai/api/v1 + x-speakeasy-server-id: production tags: - - name: API Keys - description: API key management endpoints - - name: Analytics - description: Analytics and usage endpoints - - name: Anthropic Messages - description: Anthropic Messages endpoints - - name: Chat - description: Chat completion endpoints - - name: Credits - description: Credit management endpoints - - name: Embeddings - description: Text embedding endpoints - - name: Endpoints - description: Endpoint information - - name: Generations - description: Generation history endpoints - - name: Guardrails - description: Guardrails endpoints - - name: Models - description: Model information endpoints - - name: OAuth - description: OAuth authentication endpoints - - name: Organization - description: Organization endpoints - - name: Providers - description: Provider information endpoints - - name: Rerank - description: Reranking endpoints - - name: beta.responses - description: beta.responses endpoints + - description: API key management endpoints + name: API Keys + - description: Analytics and usage endpoints + name: Analytics + - description: Anthropic Messages endpoints + name: Anthropic Messages + - description: Chat completion endpoints + name: Chat + - description: Credit management endpoints + name: Credits + - description: Text embedding endpoints + name: Embeddings + - description: Endpoint information + name: Endpoints + - description: Generation history endpoints + name: Generations + - description: Guardrails endpoints + name: Guardrails + - description: Model information endpoints + name: Models + - description: OAuth authentication endpoints + name: OAuth + - description: Organization endpoints + name: Organization + - description: Provider information endpoints + name: Providers + - description: Rerank endpoints + name: Rerank + - description: Video Generation endpoints + name: Video Generation + - description: beta.responses endpoints + name: beta.responses x-fern-base-path: / x-retry-strategy: - type: exponential initialDelay: 500 - maxDelay: 60000 maxAttempts: 3 + maxDelay: 60000 + type: exponential x-speakeasy-retries: - strategy: backoff backoff: + exponent: 1.5 initialInterval: 500 - maxInterval: 60000 maxElapsedTime: 3600000 - exponent: 1.5 + maxInterval: 60000 + retryConnectionErrors: true statusCodes: - 5XX - retryConnectionErrors: true + strategy: backoff