openapi: 3.1.0 info: title: OpenRouter API version: 1.0.0 description: OpenAI-compatible Chat Completions and Completions 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 components: schemas: OpenAIResponsesResponseStatus: type: string enum: - completed - incomplete - in_progress - failed - cancelled - queued FileCitation: type: object properties: type: type: string enum: - file_citation file_id: type: string filename: type: string index: type: number required: - type - file_id - filename - index example: type: file_citation file_id: file-abc123 filename: research_paper.pdf index: 0 URLCitation: type: object properties: type: type: string enum: - url_citation url: type: string title: type: string start_index: type: number end_index: type: number required: - type - url - title - start_index - end_index example: type: url_citation start_index: 0 end_index: 42 title: OpenRouter Documentation url: https://openrouter.ai/docs FilePath: type: object properties: type: type: string enum: - file_path file_id: type: string index: type: number required: - type - file_id - index example: type: file_path file_id: file-xyz789 index: 0 OpenAIResponsesAnnotation: anyOf: - $ref: '#/components/schemas/FileCitation' - $ref: '#/components/schemas/URLCitation' - $ref: '#/components/schemas/FilePath' ResponseOutputText: type: object properties: type: type: string enum: - output_text text: type: string annotations: type: array items: $ref: '#/components/schemas/OpenAIResponsesAnnotation' 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: type: string enum: - refusal refusal: type: string required: - type - refusal example: type: refusal refusal: I'm sorry, I cannot assist with that request OutputMessage: type: object properties: id: type: string role: 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' 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? ResponsesOutputMessage: 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: type: object properties: type: type: string enum: - reasoning_text text: type: string required: - type - text example: type: reasoning_text text: Let me think step by step about this problem... ReasoningSummaryText: type: object properties: type: type: string enum: - summary_text text: type: string required: - type - text example: type: summary_text text: Analyzed the problem using first principles OutputItemReasoning: type: object properties: type: 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: type: string nullable: true status: anyOf: - type: string enum: - completed - type: string enum: - incomplete - type: string enum: - in_progress required: - type - id - summary example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Analyzed the problem using first principles ResponsesOutputItemReasoning: allOf: - $ref: '#/components/schemas/OutputItemReasoning' - type: object properties: {} 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... description: An output item containing reasoning OutputItemFunctionCall: type: object properties: type: type: string enum: - function_call id: type: string name: type: string arguments: type: string call_id: 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 ResponsesOutputItemFunctionCall: allOf: - $ref: '#/components/schemas/OutputItemFunctionCall' - type: object properties: {} example: type: function_call id: call-abc123 name: get_weather arguments: '{"location":"San Francisco","unit":"celsius"}' call_id: call-abc123 WebSearchStatus: type: string enum: - completed - searching - in_progress - failed example: completed OutputItemWebSearchCall: type: object properties: type: type: string enum: - web_search_call id: type: string status: $ref: '#/components/schemas/WebSearchStatus' required: - type - id - status example: type: web_search_call id: search-abc123 status: completed ResponsesWebSearchCallOutput: allOf: - $ref: '#/components/schemas/OutputItemWebSearchCall' - type: object properties: {} example: type: web_search_call id: search-abc123 status: completed OutputItemFileSearchCall: type: object properties: type: type: string enum: - file_search_call id: 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 ResponsesOutputItemFileSearchCall: allOf: - $ref: '#/components/schemas/OutputItemFileSearchCall' - type: object properties: {} example: type: file_search_call id: filesearch-abc123 queries: - machine learning algorithms - neural networks status: completed ImageGenerationStatus: type: string enum: - in_progress - completed - generating - failed example: completed OutputItemImageGenerationCall: type: object properties: type: type: string enum: - image_generation_call id: type: string result: type: string nullable: true default: null status: $ref: '#/components/schemas/ImageGenerationStatus' required: - type - id - status example: type: image_generation_call id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed ResponsesImageGenerationCall: allOf: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - type: object properties: {} example: type: image_generation_call id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed ResponsesOutputItem: anyOf: - $ref: '#/components/schemas/ResponsesOutputMessage' - $ref: '#/components/schemas/ResponsesOutputItemReasoning' - $ref: '#/components/schemas/ResponsesOutputItemFunctionCall' - $ref: '#/components/schemas/ResponsesWebSearchCallOutput' - $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall' - $ref: '#/components/schemas/ResponsesImageGenerationCall' 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 properties: code: type: string 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: 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. OpenAIResponsesIncompleteDetails: type: object nullable: true properties: reason: type: string enum: - max_output_tokens - content_filter OpenAIResponsesUsage: type: object properties: input_tokens: type: number input_tokens_details: type: object properties: cached_tokens: type: number required: - cached_tokens output_tokens: type: number output_tokens_details: type: object properties: reasoning_tokens: type: number required: - reasoning_tokens total_tokens: type: number required: - input_tokens - input_tokens_details - output_tokens - output_tokens_details - total_tokens OpenResponsesUsage: allOf: - $ref: '#/components/schemas/OpenAIResponsesUsage' - type: object properties: cost: type: number nullable: true 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 nullable: true upstream_inference_input_cost: type: number upstream_inference_output_cost: type: number required: - upstream_inference_input_cost - upstream_inference_output_cost description: Token usage information for the response 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 ResponseInputText: type: object properties: type: type: string enum: - input_text text: type: string required: - type - text description: Text input content item example: type: input_text text: Hello, how can I help you? ResponseInputImage: type: object properties: type: type: string enum: - input_image detail: type: string enum: - auto - high - low image_url: 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 ResponseInputFile: type: object properties: type: type: string enum: - input_file file_id: type: string nullable: true file_data: type: string filename: type: string file_url: type: string required: - type description: File input content item example: type: input_file file_id: file-abc123 filename: document.pdf ResponseInputAudio: type: object properties: type: type: string enum: - input_audio input_audio: type: object properties: data: type: string format: type: string enum: - mp3 - wav required: - data - format required: - type - input_audio description: Audio input content item example: type: input_audio input_audio: data: SGVsbG8gV29ybGQ= format: mp3 ToolCallStatus: type: string nullable: true enum: - in_progress - completed - incomplete example: completed OpenAIResponsesInput: 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/ResponseInputText' - $ref: '#/components/schemas/ResponseInputImage' - $ref: '#/components/schemas/ResponseInputFile' - $ref: '#/components/schemas/ResponseInputAudio' discriminator: propertyName: type mapping: input_text: '#/components/schemas/ResponseInputText' input_image: '#/components/schemas/ResponseInputImage' input_file: '#/components/schemas/ResponseInputFile' input_audio: '#/components/schemas/ResponseInputAudio' - type: string required: - role - content - type: object properties: id: type: string type: 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/ResponseInputText' - $ref: '#/components/schemas/ResponseInputImage' - $ref: '#/components/schemas/ResponseInputFile' - $ref: '#/components/schemas/ResponseInputAudio' discriminator: propertyName: type mapping: input_text: '#/components/schemas/ResponseInputText' input_image: '#/components/schemas/ResponseInputImage' input_file: '#/components/schemas/ResponseInputFile' input_audio: '#/components/schemas/ResponseInputAudio' required: - id - role - content - type: object properties: type: type: string enum: - function_call_output id: type: string nullable: true call_id: type: string output: type: string status: $ref: '#/components/schemas/ToolCallStatus' required: - type - call_id - output - type: object properties: type: type: string enum: - function_call call_id: type: string name: type: string arguments: type: string id: type: string status: $ref: '#/components/schemas/ToolCallStatus' required: - type - call_id - name - arguments - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputMessage' - nullable: true OpenResponsesRequestMetadata: 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 OpenResponsesFunctionTool: type: object properties: type: type: string enum: - function name: type: string description: 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 ResponsesSearchContextSize: type: string enum: - low - medium - high description: Size of the search context for web search tools example: medium WebSearchPreviewToolUserLocation: type: object nullable: true properties: type: type: string enum: - approximate city: type: string nullable: true country: type: string nullable: true region: type: string nullable: true timezone: type: string nullable: true required: - type OpenResponsesWebSearchPreviewTool: type: object properties: type: type: string enum: - web_search_preview search_context_size: $ref: '#/components/schemas/ResponsesSearchContextSize' user_location: $ref: '#/components/schemas/WebSearchPreviewToolUserLocation' required: - type description: Web search preview tool configuration example: type: web_search_preview OpenResponsesWebSearchPreview20250311Tool: type: object properties: type: type: string enum: - web_search_preview_2025_03_11 search_context_size: $ref: '#/components/schemas/ResponsesSearchContextSize' user_location: $ref: '#/components/schemas/WebSearchPreviewToolUserLocation' required: - type description: Web search preview tool configuration (2025-03-11 version) example: type: web_search_preview_2025_03_11 ResponsesWebSearchUserLocation: type: object nullable: true properties: type: type: string enum: - approximate city: type: string nullable: true country: type: string nullable: true region: type: string nullable: true timezone: 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 OpenResponsesWebSearchTool: type: object properties: type: type: string enum: - web_search filters: type: object nullable: true properties: allowed_domains: type: array nullable: true items: type: string search_context_size: $ref: '#/components/schemas/ResponsesSearchContextSize' user_location: $ref: '#/components/schemas/ResponsesWebSearchUserLocation' required: - type description: Web search tool configuration example: type: web_search filters: allowed_domains: - example.com OpenResponsesWebSearch20250826Tool: type: object properties: type: type: string enum: - web_search_2025_08_26 filters: type: object nullable: true properties: allowed_domains: type: array nullable: true items: type: string search_context_size: $ref: '#/components/schemas/ResponsesSearchContextSize' user_location: $ref: '#/components/schemas/ResponsesWebSearchUserLocation' required: - type description: Web search tool configuration (2025-08-26 version) example: type: web_search_2025_08_26 filters: allowed_domains: - example.com OpenAIResponsesToolChoice: anyOf: - type: string enum: - auto - type: string enum: - none - type: string 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 OpenAIResponsesPrompt: type: object nullable: true properties: id: type: string variables: type: object nullable: true additionalProperties: anyOf: - type: string - $ref: '#/components/schemas/ResponseInputText' - $ref: '#/components/schemas/ResponseInputImage' - $ref: '#/components/schemas/ResponseInputFile' required: - id OpenAIResponsesReasoningEffort: type: string nullable: true enum: - high - medium - low - minimal - none ReasoningSummaryVerbosity: type: string enum: - auto - concise - detailed OpenAIResponsesReasoningConfig: type: object nullable: true properties: effort: $ref: '#/components/schemas/OpenAIResponsesReasoningEffort' summary: $ref: '#/components/schemas/ReasoningSummaryVerbosity' OpenAIResponsesServiceTier: type: string nullable: true enum: - auto - default - flex - priority - scale OpenAIResponsesTruncation: type: string nullable: true enum: - auto - disabled ResponsesFormatText: type: object properties: type: type: string enum: - text required: - type description: Plain text response format example: type: text ResponsesFormatJSONObject: type: object properties: type: type: string enum: - json_object required: - type description: JSON object response format example: type: json_object ResponsesFormatTextJSONSchemaConfig: type: object properties: type: type: string enum: - json_schema name: type: string description: 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 ResponseFormatTextConfig: anyOf: - $ref: '#/components/schemas/ResponsesFormatText' - $ref: '#/components/schemas/ResponsesFormatJSONObject' - $ref: '#/components/schemas/ResponsesFormatTextJSONSchemaConfig' description: Text response format configuration example: type: text ResponseTextConfig: type: object properties: format: $ref: '#/components/schemas/ResponseFormatTextConfig' verbosity: type: string nullable: true enum: - high - low - medium description: Text output configuration including format and verbosity example: format: type: text verbosity: medium OpenAIResponsesNonStreamingResponse: type: object properties: id: type: string object: type: string enum: - response created_at: type: number model: type: string status: $ref: '#/components/schemas/OpenAIResponsesResponseStatus' 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: type: string nullable: true output_text: type: string prompt_cache_key: type: string nullable: true safety_identifier: type: string nullable: true error: $ref: '#/components/schemas/ResponsesErrorField' incomplete_details: $ref: '#/components/schemas/OpenAIResponsesIncompleteDetails' usage: $ref: '#/components/schemas/OpenAIResponsesUsage' max_tool_calls: type: number nullable: true top_logprobs: type: number max_output_tokens: type: number nullable: true temperature: type: number nullable: true top_p: type: number nullable: true instructions: $ref: '#/components/schemas/OpenAIResponsesInput' metadata: $ref: '#/components/schemas/OpenResponsesRequestMetadata' tools: type: array items: oneOf: - allOf: - $ref: '#/components/schemas/OpenResponsesFunctionTool' - 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/OpenResponsesWebSearchPreviewTool' - $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool' - $ref: '#/components/schemas/OpenResponsesWebSearchTool' - $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool' tool_choice: $ref: '#/components/schemas/OpenAIResponsesToolChoice' parallel_tool_calls: type: boolean prompt: $ref: '#/components/schemas/OpenAIResponsesPrompt' background: type: boolean nullable: true previous_response_id: type: string nullable: true reasoning: $ref: '#/components/schemas/OpenAIResponsesReasoningConfig' service_tier: $ref: '#/components/schemas/OpenAIResponsesServiceTier' store: type: boolean truncation: $ref: '#/components/schemas/OpenAIResponsesTruncation' text: $ref: '#/components/schemas/ResponseTextConfig' required: - id - object - created_at - model - output - error - incomplete_details - temperature - top_p - instructions - metadata - tools - tool_choice - parallel_tool_calls OpenResponsesNonStreamingResponse: allOf: - $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' - type: object properties: output: type: array items: $ref: '#/components/schemas/ResponsesOutputItem' usage: $ref: '#/components/schemas/OpenResponsesUsage' description: Complete non-streaming response from the Responses API 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 OpenResponsesCreatedEvent: type: object properties: type: type: string enum: - response.created response: $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' sequence_number: type: number required: - type - response - sequence_number 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 OpenResponsesInProgressEvent: type: object properties: type: type: string enum: - response.in_progress response: $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' sequence_number: type: number required: - type - response - sequence_number description: Event emitted when a response is in progress 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 OpenResponsesCompletedEvent: type: object properties: type: type: string enum: - response.completed response: $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' sequence_number: type: number required: - type - response - sequence_number 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: - 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 OpenResponsesIncompleteEvent: type: object properties: type: type: string enum: - response.incomplete response: $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' sequence_number: type: number required: - type - response - 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 OpenResponsesFailedEvent: type: object properties: type: type: string enum: - response.failed response: $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse' sequence_number: type: number required: - type - response - 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 OpenAIResponsesErrorEvent: type: object properties: type: type: string enum: - error code: type: string nullable: true message: type: string param: type: string nullable: true sequence_number: type: number 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 OpenResponsesErrorEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesErrorEvent' - 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 OpenResponsesOutputItemAddedEvent: type: object properties: type: type: string enum: - response.output_item.added output_index: type: number 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: number 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 OpenResponsesOutputItemDoneEvent: type: object properties: type: type: string enum: - response.output_item.done output_index: type: number 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: number required: - type - output_index - item - 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 OpenResponsesContentPartAddedEvent: type: object properties: type: type: string enum: - response.content_part.added output_index: type: number item_id: type: string content_index: type: number part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: number required: - type - output_index - item_id - content_index - part - sequence_number description: Event emitted when a new content part is added to an output item 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 OpenResponsesContentPartDoneEvent: type: object properties: type: type: string enum: - response.content_part.done output_index: type: number item_id: type: string content_index: type: number part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: number required: - 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 OpenResponsesTopLogprobs: type: object properties: token: type: string logprob: type: number description: Alternative token with its log probability example: token: hello logprob: -0.5 OpenResponsesLogProbs: type: object properties: logprob: type: number token: type: string top_logprobs: type: array items: $ref: '#/components/schemas/OpenResponsesTopLogprobs' required: - logprob - token description: Log probability information for a token example: logprob: -0.1 token: world top_logprobs: - token: hello logprob: -0.5 OpenResponsesTextDeltaEvent: type: object properties: type: type: string enum: - response.output_text.delta logprobs: type: array items: $ref: '#/components/schemas/OpenResponsesLogProbs' output_index: type: number item_id: type: string content_index: type: number delta: type: string sequence_number: type: number required: - type - logprobs - output_index - item_id - content_index - delta - sequence_number 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 OpenResponsesTextDoneEvent: type: object properties: type: type: string enum: - response.output_text.done output_index: type: number item_id: type: string content_index: type: number text: type: string sequence_number: type: number logprobs: type: array items: $ref: '#/components/schemas/OpenResponsesLogProbs' required: - type - output_index - item_id - content_index - text - sequence_number - logprobs 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: [] OpenResponsesRefusalDeltaEvent: type: object properties: type: type: string enum: - response.refusal.delta output_index: type: number item_id: type: string content_index: type: number delta: type: string sequence_number: type: number required: - type - output_index - item_id - content_index - delta - sequence_number 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 OpenResponsesRefusalDoneEvent: type: object properties: type: type: string enum: - response.refusal.done output_index: type: number item_id: type: string content_index: type: number refusal: type: string sequence_number: type: number required: - type - output_index - item_id - content_index - refusal - sequence_number 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 OpenResponsesOutputTextAnnotationAddedEvent: type: object properties: type: type: string enum: - response.output_text.annotation.added output_index: type: number item_id: type: string content_index: type: number sequence_number: type: number annotation_index: type: number annotation: $ref: '#/components/schemas/OpenAIResponsesAnnotation' required: - type - output_index - item_id - content_index - sequence_number - annotation_index - annotation 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 OpenResponsesFunctionCallArgumentsDeltaEvent: type: object properties: type: type: string enum: - response.function_call_arguments.delta item_id: type: string output_index: type: number delta: type: string sequence_number: type: number required: - type - item_id - output_index - delta - 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": "San' sequence_number: 4 OpenResponsesFunctionCallArgumentsDoneEvent: type: object properties: type: type: string enum: - response.function_call_arguments.done item_id: type: string output_index: type: number name: type: string arguments: type: string sequence_number: type: number required: - type - item_id - output_index - name - arguments - 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 OpenAIResponsesReasoningDeltaEvent: type: object properties: type: type: string enum: - response.reasoning_text.delta output_index: type: number item_id: type: string content_index: type: number delta: type: string sequence_number: type: number required: - type - output_index - item_id - content_index - delta - 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 OpenResponsesReasoningDeltaEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningDeltaEvent' - 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 OpenAIResponsesReasoningDoneEvent: type: object properties: type: type: string enum: - response.reasoning_text.done output_index: type: number item_id: type: string content_index: type: number text: type: string sequence_number: type: number required: - type - output_index - item_id - content_index - text - sequence_number 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. sequence_number: 6 OpenResponsesReasoningDoneEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningDoneEvent' - 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. sequence_number: 6 OpenAIResponsesReasoningSummaryPartAddedEvent: type: object properties: type: type: string enum: - response.reasoning_summary_part.added output_index: type: number item_id: type: string summary_index: type: number part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: number 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 OpenResponsesReasoningSummaryPartAddedEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryPartAddedEvent' - 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 OpenResponsesReasoningSummaryPartDoneEvent: type: object properties: type: type: string enum: - response.reasoning_summary_part.done output_index: type: number item_id: type: string summary_index: type: number part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: number required: - type - output_index - item_id - summary_index - part - 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 OpenAIResponsesReasoningSummaryTextDeltaEvent: type: object properties: type: type: string enum: - response.reasoning_summary_text.delta item_id: type: string output_index: type: number summary_index: type: number delta: type: string sequence_number: type: number 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 OpenResponsesReasoningSummaryTextDeltaEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDeltaEvent' - type: object properties: {} 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 OpenAIResponsesReasoningSummaryTextDoneEvent: type: object properties: type: type: string enum: - response.reasoning_summary_text.done item_id: type: string output_index: type: number summary_index: type: number text: type: string sequence_number: type: number 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 OpenResponsesReasoningSummaryTextDoneEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDoneEvent' - type: object properties: {} 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 OpenAIResponsesImageGenCallInProgress: type: object properties: type: type: string enum: - response.image_generation_call.in_progress item_id: type: string output_index: type: number sequence_number: type: number required: - type - item_id - output_index - sequence_number OpenResponsesImageGenCallInProgress: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress' - type: object properties: {} description: Image generation call in progress example: type: response.image_generation_call.in_progress output_index: 0 sequence_number: 1 item_id: call-123 OpenAIResponsesImageGenCallGenerating: type: object properties: type: type: string enum: - response.image_generation_call.generating item_id: type: string output_index: type: number sequence_number: type: number required: - type - item_id - output_index - sequence_number OpenResponsesImageGenCallGenerating: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating' - type: object properties: {} description: Image generation call is generating example: type: response.image_generation_call.generating output_index: 0 sequence_number: 2 item_id: call-123 OpenAIResponsesImageGenCallPartialImage: type: object properties: type: type: string enum: - response.image_generation_call.partial_image item_id: type: string output_index: type: number sequence_number: type: number partial_image_b64: type: string partial_image_index: type: number required: - type - item_id - output_index - sequence_number - partial_image_b64 - partial_image_index OpenResponsesImageGenCallPartialImage: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage' - type: object properties: {} description: Image generation call with partial image 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 OpenAIResponsesImageGenCallCompleted: type: object properties: type: type: string enum: - response.image_generation_call.completed item_id: type: string output_index: type: number sequence_number: type: number required: - type - item_id - output_index - sequence_number OpenResponsesImageGenCallCompleted: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted' - type: object properties: {} description: Image generation call completed example: type: response.image_generation_call.completed output_index: 0 sequence_number: 4 item_id: call-123 OpenResponsesStreamEvent: oneOf: - allOf: - $ref: '#/components/schemas/OpenResponsesCreatedEvent' - type: object properties: response: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' 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 - allOf: - $ref: '#/components/schemas/OpenResponsesInProgressEvent' - type: object properties: response: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' description: Event emitted when a response is in progress 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 - allOf: - $ref: '#/components/schemas/OpenResponsesCompletedEvent' - type: object properties: response: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' 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: - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesIncompleteEvent' - type: object properties: response: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' 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 - allOf: - $ref: '#/components/schemas/OpenResponsesFailedEvent' - type: object properties: response: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' 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 - $ref: '#/components/schemas/OpenResponsesErrorEvent' - allOf: - $ref: '#/components/schemas/OpenResponsesOutputItemAddedEvent' - type: object properties: item: $ref: '#/components/schemas/ResponsesOutputItem' 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 - allOf: - $ref: '#/components/schemas/OpenResponsesOutputItemDoneEvent' - type: object properties: item: $ref: '#/components/schemas/ResponsesOutputItem' 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 - allOf: - $ref: '#/components/schemas/OpenResponsesContentPartAddedEvent' - 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 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 - allOf: - $ref: '#/components/schemas/OpenResponsesContentPartDoneEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesTextDeltaEvent' - type: object properties: {} 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 - allOf: - $ref: '#/components/schemas/OpenResponsesTextDoneEvent' - type: object properties: {} 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: [] - allOf: - $ref: '#/components/schemas/OpenResponsesRefusalDeltaEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesRefusalDoneEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesOutputTextAnnotationAddedEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDeltaEvent' - type: object properties: {} 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": "San' sequence_number: 4 - allOf: - $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDoneEvent' - type: object properties: {} 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 - $ref: '#/components/schemas/OpenResponsesReasoningDeltaEvent' - $ref: '#/components/schemas/OpenResponsesReasoningDoneEvent' - $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartAddedEvent' - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartDoneEvent' - type: object properties: {} 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 - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDeltaEvent' - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDoneEvent' - $ref: '#/components/schemas/OpenResponsesImageGenCallInProgress' - $ref: '#/components/schemas/OpenResponsesImageGenCallGenerating' - $ref: '#/components/schemas/OpenResponsesImageGenCallPartialImage' - $ref: '#/components/schemas/OpenResponsesImageGenCallCompleted' description: Union of all possible event types emitted during response streaming 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 properties: code: type: integer message: 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: object properties: error: $ref: '#/components/schemas/BadRequestResponseErrorData' user_id: 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 required: - code - message description: Error data for UnauthorizedResponse example: code: 401 message: Missing Authentication header UnauthorizedResponse: type: object properties: error: $ref: '#/components/schemas/UnauthorizedResponseErrorData' user_id: type: string nullable: true required: - error description: Unauthorized - Authentication required or invalid credentials example: error: code: 401 message: Missing Authentication header PaymentRequiredResponseErrorData: type: object properties: code: type: integer message: 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: 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 example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits NotFoundResponseErrorData: type: object 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: type: object properties: error: $ref: '#/components/schemas/NotFoundResponseErrorData' user_id: type: string nullable: true required: - error description: Not Found - Resource does not exist example: error: code: 404 message: Resource not found RequestTimeoutResponseErrorData: type: object properties: code: type: integer message: 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: 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: object properties: code: type: integer message: 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: object properties: error: $ref: '#/components/schemas/PayloadTooLargeResponseErrorData' user_id: 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: object properties: code: type: integer message: 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: object properties: code: type: integer message: type: string metadata: type: object nullable: true additionalProperties: nullable: true required: - code - message description: Error data for TooManyRequestsResponse 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 example: error: code: 429 message: Rate limit exceeded InternalServerResponseErrorData: type: object properties: code: type: integer message: type: string metadata: type: object nullable: true 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 nullable: true required: - error description: Internal Server Error - Unexpected server error example: error: code: 500 message: Internal Server Error BadGatewayResponseErrorData: type: object properties: code: type: integer message: type: string metadata: type: object nullable: true additionalProperties: nullable: true required: - code - message description: Error data for BadGatewayResponse example: code: 502 message: Provider returned error BadGatewayResponse: type: object properties: error: $ref: '#/components/schemas/BadGatewayResponseErrorData' user_id: type: string nullable: true required: - error description: Bad Gateway - Provider/upstream API failure example: error: code: 502 message: Provider returned error ServiceUnavailableResponseErrorData: type: object properties: code: type: integer message: type: string metadata: type: object nullable: true 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 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 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: integer message: type: string 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 nullable: true required: - error description: Provider Overloaded - Provider is temporarily overloaded example: error: code: 529 message: Provider returned error OpenResponsesReasoning: allOf: - $ref: '#/components/schemas/OutputItemReasoning' - type: object properties: signature: type: string nullable: true format: type: string nullable: true enum: - unknown - openai-responses-v1 - xai-responses-v1 - anthropic-claude-v1 - google-gemini-v1 example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Step by step analysis description: Reasoning output item with signature and format extensions OpenResponsesEasyInputMessage: 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/ResponseInputText' - $ref: '#/components/schemas/ResponseInputImage' - $ref: '#/components/schemas/ResponseInputFile' - $ref: '#/components/schemas/ResponseInputAudio' discriminator: propertyName: type mapping: input_text: '#/components/schemas/ResponseInputText' input_image: '#/components/schemas/ResponseInputImage' input_file: '#/components/schemas/ResponseInputFile' input_audio: '#/components/schemas/ResponseInputAudio' - type: string required: - role - content OpenResponsesInputMessageItem: type: object properties: id: type: string type: 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/ResponseInputText' - $ref: '#/components/schemas/ResponseInputImage' - $ref: '#/components/schemas/ResponseInputFile' - $ref: '#/components/schemas/ResponseInputAudio' discriminator: propertyName: type mapping: input_text: '#/components/schemas/ResponseInputText' input_image: '#/components/schemas/ResponseInputImage' input_file: '#/components/schemas/ResponseInputFile' input_audio: '#/components/schemas/ResponseInputAudio' required: - role - content OpenResponsesFunctionToolCall: type: object properties: type: type: string enum: - function_call call_id: type: string name: type: string arguments: type: string id: type: string status: $ref: '#/components/schemas/ToolCallStatus' required: - type - call_id - name - arguments - id description: A function call initiated by the model example: id: call-abc123 type: function_call call_id: call-abc123 name: get_weather arguments: '{"location":"San Francisco"}' status: completed OpenResponsesFunctionCallOutput: type: object properties: type: type: string enum: - function_call_output id: type: string nullable: true call_id: type: string output: type: string status: $ref: '#/components/schemas/ToolCallStatus' required: - type - call_id - output description: The output from a function call execution example: type: function_call_output id: output-abc123 call_id: call-abc123 output: '{"temperature":72,"conditions":"sunny"}' status: completed OpenResponsesInput: anyOf: - type: string - type: array items: anyOf: - $ref: '#/components/schemas/OpenResponsesReasoning' - $ref: '#/components/schemas/OpenResponsesEasyInputMessage' - $ref: '#/components/schemas/OpenResponsesInputMessageItem' - $ref: '#/components/schemas/OpenResponsesFunctionToolCall' - $ref: '#/components/schemas/OpenResponsesFunctionCallOutput' - $ref: '#/components/schemas/ResponsesOutputMessage' - $ref: '#/components/schemas/ResponsesOutputItemReasoning' - $ref: '#/components/schemas/ResponsesOutputItemFunctionCall' - $ref: '#/components/schemas/ResponsesWebSearchCallOutput' - $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall' - $ref: '#/components/schemas/ResponsesImageGenerationCall' description: Input for a response request - can be a string or array of items example: - role: user content: What is the weather today? OpenResponsesResponseText: allOf: - $ref: '#/components/schemas/ResponseTextConfig' - type: object properties: {} description: Text output configuration including format and verbosity example: format: type: text verbosity: medium OpenResponsesReasoningConfig: allOf: - $ref: '#/components/schemas/OpenAIResponsesReasoningConfig' - type: object nullable: true properties: max_tokens: type: number nullable: true enabled: type: boolean nullable: true description: Configuration for reasoning mode in the response example: summary: auto enabled: true OpenAIResponsesIncludable: 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 DataCollection: type: string nullable: true enum: - deny - 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. example: allow ProviderName: type: string enum: - AI21 - AionLabs - Alibaba - Amazon Bedrock - Anthropic - Arcee - AtlasCloud - Avian - Azure - BaseTen - Black Forest Labs - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - Crusoe - DeepInfra - DeepSeek - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - InferenceNet - Infermatic - Inflection - Liquid - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Perplexity - Phala - Relace - SambaNova - SiliconFlow - Stealth - Switchpoint - Targon - Together - Venice - WandB - xAI - Z.AI - FakeProvider example: OpenAI Quantization: type: string enum: - int4 - int8 - fp4 - fp6 - fp8 - fp16 - bf16 - fp32 - unknown example: fp16 ProviderSort: type: string nullable: true enum: - price - throughput - latency description: >- The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed. example: price BigNumberUnion: anyOf: - type: number - type: string - type: number example: 1000 description: A value in string or number format that is a large number example: 1000 OpenResponsesRequest: type: object properties: input: $ref: '#/components/schemas/OpenResponsesInput' instructions: type: string nullable: true metadata: $ref: '#/components/schemas/OpenResponsesRequestMetadata' tools: type: array items: oneOf: - allOf: - $ref: '#/components/schemas/OpenResponsesFunctionTool' - 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/OpenResponsesWebSearchPreviewTool' - $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool' - $ref: '#/components/schemas/OpenResponsesWebSearchTool' - $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool' tool_choice: $ref: '#/components/schemas/OpenAIResponsesToolChoice' parallel_tool_calls: type: boolean nullable: true model: type: string models: type: array items: type: string text: $ref: '#/components/schemas/OpenResponsesResponseText' reasoning: $ref: '#/components/schemas/OpenResponsesReasoningConfig' max_output_tokens: type: number nullable: true temperature: type: number nullable: true minimum: 0 maximum: 2 top_p: type: number nullable: true minimum: 0 top_k: type: number prompt_cache_key: type: string nullable: true previous_response_id: type: string nullable: true prompt: $ref: '#/components/schemas/OpenAIResponsesPrompt' include: type: array nullable: true items: $ref: '#/components/schemas/OpenAIResponsesIncludable' background: type: boolean nullable: true safety_identifier: type: string nullable: true store: type: boolean nullable: true service_tier: allOf: - $ref: '#/components/schemas/OpenAIResponsesServiceTier' - enum: - auto - default - flex - scale - priority example: auto truncation: allOf: - $ref: '#/components/schemas/OpenAIResponsesTruncation' - example: auto stream: type: boolean default: false provider: type: object 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: $ref: '#/components/schemas/DataCollection' 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 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. only: type: array 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. ignore: type: array nullable: true 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. quantizations: type: array nullable: true items: $ref: '#/components/schemas/Quantization' description: A list of quantization levels to filter the provider by. sort: $ref: '#/components/schemas/ProviderSort' max_price: type: object properties: prompt: $ref: '#/components/schemas/BigNumberUnion' completion: $ref: '#/components/schemas/BigNumberUnion' image: $ref: '#/components/schemas/BigNumberUnion' audio: $ref: '#/components/schemas/BigNumberUnion' request: $ref: '#/components/schemas/BigNumberUnion' additionalProperties: false description: >- The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. additionalProperties: false description: When multiple model providers are available, optionally indicate your routing preference. plugins: type: array items: oneOf: - type: object properties: id: type: string enum: - moderation required: - id - type: object properties: id: type: string enum: - web max_results: type: number search_prompt: type: string engine: type: string enum: - native - exa required: - id - type: object properties: id: type: string enum: - file-parser max_files: type: number pdf: type: object properties: engine: type: string enum: - mistral-ocr - pdf-text - native required: - id description: Plugins you want to enable for this request, including their settings. user: type: string maxLength: 128 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 128 characters. 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 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 description: Total cost in USD (OpenRouter credits spent) example: 0.015 byok_usage_inference: type: number description: BYOK inference cost in USD (external credits spent) example: 0.012 requests: type: number description: Number of requests made example: 5 prompt_tokens: type: number description: Total prompt tokens used example: 50 completion_tokens: type: number description: Total completion tokens generated example: 125 reasoning_tokens: type: number 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 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 provisioning 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 provisioning keys can perform this operation CreateChargeRequest: type: object properties: amount: type: number sender: type: string chain_id: type: integer enum: - 1 - 137 - 8453 required: - amount - sender - chain_id description: Create a Coinbase charge for crypto payment example: amount: 100 sender: '0x1234567890123456789012345678901234567890' chain_id: 1 PublicPricing: type: object properties: prompt: $ref: '#/components/schemas/BigNumberUnion' completion: $ref: '#/components/schemas/BigNumberUnion' request: $ref: '#/components/schemas/BigNumberUnion' image: $ref: '#/components/schemas/BigNumberUnion' image_token: $ref: '#/components/schemas/BigNumberUnion' image_output: $ref: '#/components/schemas/BigNumberUnion' audio: $ref: '#/components/schemas/BigNumberUnion' input_audio_cache: $ref: '#/components/schemas/BigNumberUnion' web_search: $ref: '#/components/schemas/BigNumberUnion' internal_reasoning: $ref: '#/components/schemas/BigNumberUnion' input_cache_read: $ref: '#/components/schemas/BigNumberUnion' input_cache_write: $ref: '#/components/schemas/BigNumberUnion' discount: type: number required: - prompt - completion additionalProperties: false 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 - 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 example: text ModelArchitecture: type: object 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 example: chatml description: Instruction format type modality: type: string nullable: true description: Primary modality of the model example: text->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: - 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: object properties: context_length: type: number nullable: true description: Context length from the top provider example: 8192 max_completion_tokens: type: number nullable: true description: Maximum completion tokens from the top provider example: 4096 is_moderated: type: boolean description: Whether the top provider moderates content example: true 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: 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 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 - logit_bias - logprobs - top_logprobs - seed - response_format - structured_outputs - stop - tools - tool_choice - parallel_tool_calls - include_reasoning - reasoning - web_search_options - verbosity example: temperature DefaultParameters: type: object nullable: true properties: temperature: type: number nullable: true minimum: 0 maximum: 2 top_p: type: number nullable: true minimum: 0 maximum: 1 frequency_penalty: type: number nullable: true minimum: -2 maximum: 2 additionalProperties: false description: Default parameters for this model example: temperature: 0.7 top_p: 0.9 frequency_penalty: 0 Model: type: object 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 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: number description: Unix timestamp of when the model was created example: 1692901234 description: 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: number nullable: true 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 items: $ref: '#/components/schemas/Parameter' description: List of supported parameters for this model default_parameters: $ref: '#/components/schemas/DefaultParameters' required: - id - canonical_slug - name - created - pricing - context_length - architecture - top_provider - per_request_limits - supported_parameters - default_parameters 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 ModelsListResponseData: type: array items: $ref: '#/components/schemas/Model' description: List of available models ModelsListResponse: type: object properties: data: $ref: '#/components/schemas/ModelsListResponseData' required: - data description: List of available models 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 ModelsCountResponse: type: object properties: data: type: object properties: count: type: number 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 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 description: Instruction format type EndpointStatus: type: integer enum: - 0 - -1 - -2 - -3 - -5 - -10 example: 0 PublicEndpoint: type: object properties: name: type: string model_name: type: string context_length: type: number pricing: type: object properties: prompt: $ref: '#/components/schemas/BigNumberUnion' completion: $ref: '#/components/schemas/BigNumberUnion' request: $ref: '#/components/schemas/BigNumberUnion' image: $ref: '#/components/schemas/BigNumberUnion' image_token: $ref: '#/components/schemas/BigNumberUnion' image_output: $ref: '#/components/schemas/BigNumberUnion' audio: $ref: '#/components/schemas/BigNumberUnion' input_audio_cache: $ref: '#/components/schemas/BigNumberUnion' web_search: $ref: '#/components/schemas/BigNumberUnion' internal_reasoning: $ref: '#/components/schemas/BigNumberUnion' input_cache_read: $ref: '#/components/schemas/BigNumberUnion' input_cache_write: $ref: '#/components/schemas/BigNumberUnion' discount: type: number required: - prompt - completion additionalProperties: false provider_name: $ref: '#/components/schemas/ProviderName' tag: type: string quantization: allOf: - $ref: '#/components/schemas/Quantization' - nullable: true max_completion_tokens: type: number nullable: true max_prompt_tokens: type: number nullable: true supported_parameters: type: array items: $ref: '#/components/schemas/Parameter' status: $ref: '#/components/schemas/EndpointStatus' uptime_last_30m: type: number nullable: true supports_implicit_caching: type: boolean required: - name - model_name - context_length - pricing - provider_name - tag - quantization - max_completion_tokens - max_prompt_tokens - supported_parameters - uptime_last_30m - supports_implicit_caching description: Information about a specific model endpoint example: 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 status: 0 uptime_last_30m: 99.5 supports_implicit_caching: true ListEndpointsResponse: type: object 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: number description: Unix timestamp of when the model was created example: 1692901234 description: 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 supports_implicit_caching: true ModelName: type: string ChatMessageContentItemText: type: object properties: type: type: string const: text text: type: string required: - type - text ChatMessageContentItemImage: type: object properties: type: type: string const: image_url image_url: type: object properties: url: type: string detail: type: string enum: - auto - low - high required: - url required: - type - image_url ChatMessageContentItemAudio: type: object properties: type: type: string const: input_audio input_audio: type: object properties: data: type: string format: type: string enum: - wav - mp3 - flac - m4a - ogg - pcm16 - pcm24 required: - data - format required: - type - input_audio ChatMessageContentItemVideo: oneOf: - type: object properties: type: type: string const: input_video video_url: type: object properties: url: type: string required: - url required: - type - video_url - type: object properties: type: type: string const: video_url video_url: type: object properties: url: type: string required: - url required: - type - video_url type: object ChatMessageContentItem: oneOf: - $ref: '#/components/schemas/ChatMessageContentItemText' - $ref: '#/components/schemas/ChatMessageContentItemImage' - $ref: '#/components/schemas/ChatMessageContentItemAudio' - $ref: '#/components/schemas/ChatMessageContentItemVideo' type: object discriminator: propertyName: type mapping: text: '#/components/schemas/ChatMessageContentItemText' image_url: '#/components/schemas/ChatMessageContentItemImage' input_audio: '#/components/schemas/ChatMessageContentItemAudio' input_video: '#/components/schemas/ChatMessageContentItemVideo' video_url: '#/components/schemas/ChatMessageContentItemVideo' ChatMessageToolCall: type: object properties: id: type: string type: type: string const: function function: type: object properties: name: type: string arguments: type: string required: - name - arguments required: - id - type - function ChatMessageTokenLogprob: type: object properties: token: type: string logprob: type: number bytes: anyOf: - type: array items: type: number - type: 'null' top_logprobs: type: array items: type: object properties: token: type: string logprob: type: number bytes: anyOf: - type: array items: type: number - type: 'null' required: - token - logprob - bytes required: - token - logprob - bytes - top_logprobs ChatMessageTokenLogprobs: type: object properties: content: anyOf: - type: array items: $ref: '#/components/schemas/ChatMessageTokenLogprob' - type: 'null' refusal: anyOf: - type: array items: $ref: '#/components/schemas/ChatMessageTokenLogprob' - type: 'null' required: - content - refusal ChatGenerationTokenUsage: type: object properties: completion_tokens: type: number prompt_tokens: type: number total_tokens: type: number completion_tokens_details: anyOf: - type: object properties: reasoning_tokens: anyOf: - type: number - type: 'null' audio_tokens: anyOf: - type: number - type: 'null' accepted_prediction_tokens: anyOf: - type: number - type: 'null' rejected_prediction_tokens: anyOf: - type: number - type: 'null' - type: 'null' prompt_tokens_details: anyOf: - type: object properties: cached_tokens: type: number audio_tokens: type: number video_tokens: type: number - type: 'null' required: - completion_tokens - prompt_tokens - total_tokens ChatCompletionFinishReason: anyOf: - type: string enum: - tool_calls - stop - length - content_filter - error - type: 'null' JSONSchemaConfig: type: object properties: name: type: string maxLength: 64 description: type: string schema: type: object propertyNames: type: string additionalProperties: {} strict: anyOf: - type: boolean - type: 'null' required: - name ResponseFormatJSONSchema: type: object properties: type: type: string const: json_schema json_schema: $ref: '#/components/schemas/JSONSchemaConfig' required: - type - json_schema ResponseFormatTextGrammar: type: object properties: type: type: string const: grammar grammar: type: string required: - type - grammar SystemMessage: type: object properties: role: type: string const: system content: anyOf: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItemText' name: type: string required: - role - content UserMessage: type: object properties: role: type: string const: user content: anyOf: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItem' name: type: string required: - role - content AssistantMessage: type: object properties: role: type: string const: assistant content: anyOf: - anyOf: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItem' - type: 'null' name: type: string tool_calls: type: array items: $ref: '#/components/schemas/ChatMessageToolCall' refusal: anyOf: - type: string - type: 'null' reasoning: anyOf: - type: string - type: 'null' required: - role ToolResponseMessage: type: object properties: role: type: string const: tool content: anyOf: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItem' tool_call_id: type: string required: - role - content - tool_call_id Message: oneOf: - $ref: '#/components/schemas/SystemMessage' - $ref: '#/components/schemas/UserMessage' - type: object properties: role: type: string const: developer content: anyOf: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItemText' name: type: string required: - role - content - $ref: '#/components/schemas/AssistantMessage' - $ref: '#/components/schemas/ToolResponseMessage' type: object ToolDefinitionJson: type: object properties: type: type: string const: function function: type: object properties: name: type: string maxLength: 64 description: type: string parameters: type: object propertyNames: type: string additionalProperties: {} strict: anyOf: - type: boolean - type: 'null' required: - name required: - type - function NamedToolChoice: type: object properties: type: type: string const: function function: type: object properties: name: type: string required: - name required: - type - function ToolChoiceOption: anyOf: - type: string const: none - type: string const: auto - type: string const: required - $ref: '#/components/schemas/NamedToolChoice' ChatStreamOptions: type: object properties: include_usage: type: boolean ChatGenerationParams: type: object properties: messages: minItems: 1 type: array items: $ref: '#/components/schemas/Message' model: $ref: '#/components/schemas/ModelName' models: type: array items: $ref: '#/components/schemas/ModelName' frequency_penalty: anyOf: - type: number minimum: -2 maximum: 2 - type: 'null' logit_bias: anyOf: - type: object propertyNames: type: string additionalProperties: type: number - type: 'null' logprobs: anyOf: - type: boolean - type: 'null' top_logprobs: anyOf: - type: number minimum: 0 maximum: 20 - type: 'null' max_completion_tokens: anyOf: - type: number minimum: 1 - type: 'null' max_tokens: anyOf: - type: number minimum: 1 - type: 'null' metadata: type: object propertyNames: type: string additionalProperties: type: string presence_penalty: anyOf: - type: number minimum: -2 maximum: 2 - type: 'null' reasoning: type: object properties: effort: anyOf: - type: string enum: - none - minimal - low - medium - high - type: 'null' summary: anyOf: - $ref: '#/components/schemas/ReasoningSummaryVerbosity' - type: 'null' response_format: oneOf: - type: object properties: type: type: string const: text required: - type - type: object properties: type: type: string const: json_object required: - type - $ref: '#/components/schemas/ResponseFormatJSONSchema' - $ref: '#/components/schemas/ResponseFormatTextGrammar' - type: object properties: type: type: string const: python required: - type type: object seed: anyOf: - type: integer minimum: -9007199254740991 maximum: 9007199254740991 - type: 'null' stop: anyOf: - anyOf: - type: string - maxItems: 4 type: array items: type: string - type: 'null' stream: default: false type: boolean stream_options: anyOf: - $ref: '#/components/schemas/ChatStreamOptions' - type: 'null' temperature: default: 1 anyOf: - type: number minimum: 0 maximum: 2 - type: 'null' tool_choice: $ref: '#/components/schemas/ToolChoiceOption' tools: type: array items: $ref: '#/components/schemas/ToolDefinitionJson' top_p: default: 1 anyOf: - type: number minimum: 0 maximum: 1 - type: 'null' user: type: string required: - messages ChatResponseChoice: type: object properties: finish_reason: $ref: '#/components/schemas/ChatCompletionFinishReason' index: type: number message: $ref: '#/components/schemas/AssistantMessage' logprobs: anyOf: - $ref: '#/components/schemas/ChatMessageTokenLogprobs' - type: 'null' required: - finish_reason - index - message ChatStreamingMessageToolCall: type: object properties: index: type: number id: type: string type: type: string const: function function: type: object properties: name: type: string arguments: type: string required: - index ChatStreamingMessageChunk: type: object properties: role: type: string enum: - assistant content: anyOf: - type: string - type: 'null' reasoning: anyOf: - type: string - type: 'null' refusal: anyOf: - type: string - type: 'null' tool_calls: type: array items: $ref: '#/components/schemas/ChatStreamingMessageToolCall' ChatStreamingChoice: type: object properties: delta: $ref: '#/components/schemas/ChatStreamingMessageChunk' finish_reason: $ref: '#/components/schemas/ChatCompletionFinishReason' index: type: number logprobs: anyOf: - $ref: '#/components/schemas/ChatMessageTokenLogprobs' - type: 'null' required: - delta - finish_reason - index ChatError: type: object properties: error: type: object properties: code: anyOf: - anyOf: - type: string - type: number - type: 'null' message: type: string param: anyOf: - type: string - type: 'null' type: anyOf: - type: string - type: 'null' required: - code - message additionalProperties: false required: - error additionalProperties: false ChatResponse: type: object properties: id: type: string choices: type: array items: $ref: '#/components/schemas/ChatResponseChoice' created: type: number model: type: string object: type: string const: chat.completion system_fingerprint: anyOf: - type: string - type: 'null' usage: $ref: '#/components/schemas/ChatGenerationTokenUsage' required: - id - choices - created - model - object additionalProperties: false ChatStreamingResponseChunk: type: object properties: data: type: object properties: id: type: string choices: type: array items: $ref: '#/components/schemas/ChatStreamingChoice' created: type: number model: type: string object: type: string const: chat.completion.chunk system_fingerprint: anyOf: - type: string - type: 'null' error: type: object properties: message: type: string code: type: number required: - message - code additionalProperties: false usage: $ref: '#/components/schemas/ChatGenerationTokenUsage' required: - id - choices - created - model - object additionalProperties: false required: - data additionalProperties: false CompletionFinishReason: anyOf: - type: string enum: - stop - length - content_filter - type: 'null' CompletionLogprobs: type: object properties: tokens: type: array items: type: string token_logprobs: type: array items: type: number top_logprobs: anyOf: - type: array items: type: object propertyNames: type: string additionalProperties: type: number - type: 'null' text_offset: type: array items: type: number required: - tokens - token_logprobs - top_logprobs - text_offset CompletionUsage: type: object properties: prompt_tokens: type: number completion_tokens: type: number total_tokens: type: number required: - prompt_tokens - completion_tokens - total_tokens CompletionCreateParams: type: object properties: model: $ref: '#/components/schemas/ModelName' models: type: array items: $ref: '#/components/schemas/ModelName' prompt: anyOf: - type: string - type: array items: type: string - type: array items: type: number - type: array items: type: array items: type: number best_of: anyOf: - type: integer minimum: 1 maximum: 20 - type: 'null' echo: anyOf: - type: boolean - type: 'null' frequency_penalty: anyOf: - type: number minimum: -2 maximum: 2 - type: 'null' logit_bias: anyOf: - type: object propertyNames: type: string additionalProperties: type: number - type: 'null' logprobs: anyOf: - type: integer minimum: 0 maximum: 5 - type: 'null' max_tokens: anyOf: - type: integer minimum: 1 maximum: 9007199254740991 - type: 'null' 'n': anyOf: - type: integer minimum: 1 maximum: 128 - type: 'null' presence_penalty: anyOf: - type: number minimum: -2 maximum: 2 - type: 'null' seed: anyOf: - type: integer minimum: -9007199254740991 maximum: 9007199254740991 - type: 'null' stop: anyOf: - anyOf: - type: string - type: array items: type: string - type: 'null' stream: default: false type: boolean stream_options: anyOf: - type: object properties: include_usage: anyOf: - type: boolean - type: 'null' - type: 'null' suffix: anyOf: - type: string - type: 'null' temperature: anyOf: - type: number minimum: 0 maximum: 2 - type: 'null' top_p: anyOf: - type: number minimum: 0 maximum: 1 - type: 'null' user: type: string metadata: anyOf: - type: object propertyNames: type: string additionalProperties: type: string - type: 'null' response_format: anyOf: - oneOf: - type: object properties: type: type: string const: text required: - type - type: object properties: type: type: string const: json_object required: - type - $ref: '#/components/schemas/ResponseFormatJSONSchema' - $ref: '#/components/schemas/ResponseFormatTextGrammar' - type: object properties: type: type: string const: python required: - type type: object - type: 'null' required: - prompt CompletionChoice: type: object properties: text: type: string index: type: number logprobs: anyOf: - $ref: '#/components/schemas/CompletionLogprobs' - type: 'null' finish_reason: $ref: '#/components/schemas/CompletionFinishReason' required: - text - index - logprobs - finish_reason CompletionResponse: type: object properties: id: type: string object: type: string const: text_completion created: type: number model: type: string system_fingerprint: type: string choices: type: array items: $ref: '#/components/schemas/CompletionChoice' usage: $ref: '#/components/schemas/CompletionUsage' required: - id - object - created - model - choices additionalProperties: false 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/OpenResponsesRequest' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/OpenResponsesNonStreamingResponse' text/event-stream: schema: type: object properties: data: $ref: '#/components/schemas/OpenResponsesStreamEvent' required: - data x-speakeasy-sse-sentinel: '[DONE]' '400': description: Bad Request - Invalid request parameters or malformed input content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '402': description: Payment Required - Insufficient credits or quota to complete request content: application/json: schema: $ref: '#/components/schemas/PaymentRequiredResponse' '404': description: Not Found - Resource does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '408': description: Request Timeout - Operation exceeded time limit content: application/json: schema: $ref: '#/components/schemas/RequestTimeoutResponse' '413': description: Payload Too Large - Request payload exceeds size limits content: application/json: schema: $ref: '#/components/schemas/PayloadTooLargeResponse' '422': description: Unprocessable Entity - Semantic validation failure content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' '502': description: Bad Gateway - Provider/upstream API failure content: application/json: schema: $ref: '#/components/schemas/BadGatewayResponse' '503': description: Service Unavailable - Service temporarily unavailable content: application/json: schema: $ref: '#/components/schemas/ServiceUnavailableResponse' '524': description: Infrastructure Timeout - Request timed out at our edge network content: application/json: schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' '529': description: Provider Overloaded - Provider is temporarily overloaded content: application/json: schema: $ref: '#/components/schemas/ProviderOverloadedResponse' operationId: createResponses /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 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 responses: '200': description: Returns user activity data grouped by endpoint content: application/json: schema: 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 '400': description: Bad Request - Invalid date format or date range content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '403': description: Forbidden - Only provisioning keys can fetch activity content: application/json: schema: $ref: '#/components/schemas/ForbiddenResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /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 responses: '200': description: Returns the total credits purchased and used content: application/json: schema: type: object description: Total credits purchased and used 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' '403': description: Forbidden - Only provisioning keys can fetch credits content: application/json: schema: $ref: '#/components/schemas/ForbiddenResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /credits/coinbase: post: security: - bearer: [] x-speakeasy-name-override: createCoinbaseCharge tags: - Credits summary: Create a Coinbase charge for crypto payment operationId: createCoinbaseCharge description: Create a Coinbase charge for crypto payment requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateChargeRequest' required: true responses: '200': description: Returns the calldata to fulfill the transaction content: application/json: schema: type: object properties: data: type: object properties: id: type: string created_at: type: string expires_at: type: string web3_data: type: object properties: transfer_intent: type: object properties: call_data: type: object properties: deadline: type: string fee_amount: type: string id: type: string operator: type: string prefix: type: string recipient: type: string recipient_amount: type: string recipient_currency: type: string refund_destination: type: string signature: type: string required: - deadline - fee_amount - id - operator - prefix - recipient - recipient_amount - recipient_currency - refund_destination - signature metadata: type: object properties: chain_id: type: number contract_address: type: string sender: type: string required: - chain_id - contract_address - sender required: - call_data - metadata required: - transfer_intent required: - id - created_at - expires_at - web3_data required: - data '400': description: Bad Request - Invalid credit amount or request body content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /embeddings: post: x-speakeasy-name-override: generate tags: - Embeddings summary: Submit an embedding request description: Submits an embedding request to the embeddings router requestBody: content: application/json: schema: type: object 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 model: type: string encoding_format: type: string enum: - float - base64 dimensions: type: integer minimum: 0 exclusiveMinimum: true user: type: string provider: type: object 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: $ref: '#/components/schemas/DataCollection' 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 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. only: type: array 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. ignore: type: array nullable: true 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. quantizations: type: array nullable: true items: $ref: '#/components/schemas/Quantization' description: A list of quantization levels to filter the provider by. sort: $ref: '#/components/schemas/ProviderSort' max_price: type: object properties: prompt: $ref: '#/components/schemas/BigNumberUnion' completion: $ref: '#/components/schemas/BigNumberUnion' image: $ref: '#/components/schemas/BigNumberUnion' audio: $ref: '#/components/schemas/BigNumberUnion' request: $ref: '#/components/schemas/BigNumberUnion' additionalProperties: false description: >- The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. input_type: type: string required: - input - model required: true responses: '200': description: Embedding response content: application/json: schema: type: object properties: id: type: string object: 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 index: type: number required: - object - embedding model: type: string usage: type: object properties: prompt_tokens: type: number total_tokens: type: number cost: type: number required: - prompt_tokens - total_tokens required: - object - data - model text/event-stream: schema: type: string description: Not used for embeddings - embeddings do not support streaming x-speakeasy-sse-sentinel: '[DONE]' '400': description: Bad Request - Invalid request parameters or malformed input content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '402': description: Payment Required - Insufficient credits or quota to complete request content: application/json: schema: $ref: '#/components/schemas/PaymentRequiredResponse' '404': description: Not Found - Resource does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' '502': description: Bad Gateway - Provider/upstream API failure content: application/json: schema: $ref: '#/components/schemas/BadGatewayResponse' '503': description: Service Unavailable - Service temporarily unavailable content: application/json: schema: $ref: '#/components/schemas/ServiceUnavailableResponse' '524': description: Cloudflare Timeout - Provider request timed out at CDN edge content: application/json: schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' '529': description: Provider Overloaded - Provider is temporarily overloaded content: application/json: schema: $ref: '#/components/schemas/ProviderOverloadedResponse' 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 content: application/json: schema: $ref: '#/components/schemas/ModelsListResponse' '400': description: Bad Request - Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: listEmbeddingsModels /generation: get: tags: - Generations summary: Get request & usage metadata for a generation parameters: - schema: type: string minLength: 1 required: true 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 description: Total cost of the generation in USD example: 0.0015 cache_discount: type: number nullable: true description: Discount applied due to caching example: 0.0002 upstream_inference_cost: type: number nullable: true 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: number nullable: true 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 nullable: true description: Total latency in milliseconds example: 1250 moderation_latency: type: number nullable: true description: Moderation latency in milliseconds example: 50 generation_time: type: number nullable: true 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: number nullable: true description: Number of tokens in the prompt example: 10 tokens_completion: type: number nullable: true description: Number of tokens in the completion example: 25 native_tokens_prompt: type: number nullable: true description: Native prompt tokens as reported by provider example: 10 native_tokens_completion: type: number nullable: true description: Native completion tokens as reported by provider example: 25 native_tokens_completion_images: type: number nullable: true description: Native completion image tokens as reported by provider example: 0 native_tokens_reasoning: type: number nullable: true description: Native reasoning tokens as reported by provider example: 5 native_tokens_cached: type: number nullable: true description: Native cached tokens as reported by provider example: 3 num_media_prompt: type: number nullable: true description: Number of media items in the prompt example: 1 num_input_audio_prompt: type: number nullable: true description: Number of audio inputs in the prompt example: 0 num_media_completion: type: number nullable: true description: Number of media items in the completion example: 0 num_search_results: type: number nullable: true description: Number of search results included example: 5 origin: type: string description: Origin URL of the request example: https://openrouter.ai/ usage: type: number 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 description: Type of API used for the generation 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 description: Generation data required: - data description: Generation response '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '402': description: Payment Required - Insufficient credits or quota to complete request content: application/json: schema: $ref: '#/components/schemas/PaymentRequiredResponse' '404': description: Not Found - Generation not found content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' '502': description: Bad Gateway - Provider/upstream API failure content: application/json: schema: $ref: '#/components/schemas/BadGatewayResponse' '524': description: Infrastructure Timeout - Request timed out at our edge network content: application/json: schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' '529': description: Provider Overloaded - Provider is temporarily overloaded content: application/json: schema: $ref: '#/components/schemas/ProviderOverloadedResponse' operationId: getGeneration /models/count: get: tags: - Models x-speakeasy-name-override: count summary: Get total count of available models responses: '200': description: Returns the total count of available models content: application/json: schema: $ref: '#/components/schemas/ModelsCountResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: listModelsCount /models: get: tags: - Models x-speakeasy-name-override: list summary: List all models and their properties parameters: - schema: type: string required: false name: category in: query - schema: type: string required: false name: supported_parameters in: query - schema: type: string required: false name: use_rss in: query - schema: type: string required: false 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' application/rss+xml: schema: type: string '400': description: Bad Request - Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: getModels /models/user: get: tags: - Models x-speakeasy-name-override: listForUser summary: List models filtered by user provider preferences security: - bearer: [] responses: '200': description: Returns a list of models filtered by user provider preferences content: application/json: schema: $ref: '#/components/schemas/ModelsListResponse' '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' 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 required: true name: author in: path - schema: type: string required: true 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 '404': description: Not Found - Model does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /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 '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: listEndpointsZdr /parameters/{author}/{slug}: get: tags: - Parameters summary: Get a model's supported parameters and data about which are most popular security: - bearer: [] parameters: - schema: type: string required: true name: author in: path - schema: type: string required: true name: slug in: path - schema: type: string enum: - AI21 - AionLabs - Alibaba - Amazon Bedrock - Anthropic - Arcee - AtlasCloud - Avian - Azure - BaseTen - Black Forest Labs - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - Crusoe - DeepInfra - DeepSeek - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - InferenceNet - Infermatic - Inflection - Liquid - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Perplexity - Phala - Relace - SambaNova - SiliconFlow - Stealth - Switchpoint - Targon - Together - Venice - WandB - xAI - Z.AI - FakeProvider required: false name: provider in: query responses: '200': description: Returns the parameters for the specified model content: application/json: schema: type: object properties: data: type: object properties: model: type: string description: Model identifier example: openai/gpt-4 supported_parameters: type: array items: type: string enum: - temperature - top_p - top_k - min_p - top_a - frequency_penalty - presence_penalty - repetition_penalty - max_tokens - logit_bias - logprobs - top_logprobs - seed - response_format - structured_outputs - stop - tools - tool_choice - parallel_tool_calls - include_reasoning - reasoning - web_search_options - verbosity description: List of parameters supported by this model example: - temperature - top_p - max_tokens required: - model - supported_parameters example: model: openai/gpt-4 supported_parameters: - temperature - top_p - max_tokens description: Parameter analytics data required: - data example: data: model: openai/gpt-4 supported_parameters: - temperature - top_p - max_tokens '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '404': description: Not Found - Model or provider does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: getParameters /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 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 required: - data '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /keys: get: operationId: list x-speakeasy-name-override: list tags: - API Keys summary: List API keys parameters: - schema: type: string description: Whether to include disabled API keys in the response example: 'false' required: false description: Whether to include disabled API keys in the response name: include_disabled in: query - schema: type: string 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 content: application/json: schema: type: object properties: data: type: array items: type: object properties: hash: type: string description: Unique hash identifier for the API key example: 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 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: Production API Key disabled: type: boolean description: Whether the API key is disabled example: false limit: type: number nullable: true description: Spending limit for the API key in USD example: 100 limit_remaining: type: number nullable: true 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 description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 usage_daily: type: number description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 usage_weekly: type: number description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 usage_monthly: type: number description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 byok_usage: type: number description: Total external BYOK usage (in USD) for the API key example: 17.38 byok_usage_daily: type: number description: External BYOK usage (in USD) for the current UTC day example: 17.38 byok_usage_weekly: type: number description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 byok_usage_monthly: type: number 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' 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 example: hash: 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 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' description: List of API keys required: - data example: data: - hash: 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 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' '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' post: x-speakeasy-name-override: create tags: - API Keys summary: Create a new API key requestBody: content: application/json: schema: type: object properties: name: type: string minLength: 1 description: Name for the new API key example: My New API Key limit: type: number nullable: true description: Optional spending limit for the API key in USD example: 50 limit_reset: type: string nullable: true enum: - daily - weekly - monthly 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' required: - name example: name: My New API Key limit: 50 limit_reset: monthly include_byok_in_limit: true expires_at: '2027-12-31T23:59:59Z' required: true responses: '201': description: API key created successfully content: application/json: schema: type: object properties: data: type: object properties: hash: type: string description: Unique hash identifier for the API key example: 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 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: Production API Key disabled: type: boolean description: Whether the API key is disabled example: false limit: type: number nullable: true description: Spending limit for the API key in USD example: 100 limit_remaining: type: number nullable: true 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 description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 usage_daily: type: number description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 usage_weekly: type: number description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 usage_monthly: type: number description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 byok_usage: type: number description: Total external BYOK usage (in USD) for the API key example: 17.38 byok_usage_daily: type: number description: External BYOK usage (in USD) for the current UTC day example: 17.38 byok_usage_weekly: type: number description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 byok_usage_monthly: type: number 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' 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 example: hash: 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 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' 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: 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 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' key: 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 '400': description: Bad Request - Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: createKeys /keys/{hash}: patch: x-speakeasy-name-override: update tags: - API Keys summary: Update an API key parameters: - schema: type: string description: The hash identifier of the API key to update example: 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 required: true description: The hash identifier of the API key to update name: hash 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 nullable: true description: New spending limit for the API key in USD example: 75 limit_reset: type: string nullable: true enum: - daily - weekly - monthly 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 required: true 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: 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 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: Production API Key disabled: type: boolean description: Whether the API key is disabled example: false limit: type: number nullable: true description: Spending limit for the API key in USD example: 100 limit_remaining: type: number nullable: true 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 description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 usage_daily: type: number description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 usage_weekly: type: number description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 usage_monthly: type: number description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 byok_usage: type: number description: Total external BYOK usage (in USD) for the API key example: 17.38 byok_usage_daily: type: number description: External BYOK usage (in USD) for the current UTC day example: 17.38 byok_usage_weekly: type: number description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 byok_usage_monthly: type: number 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' 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 example: hash: 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 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' description: The updated API key information required: - data example: data: hash: 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 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 '400': description: Bad Request - Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '404': description: Not Found - API key does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: updateKeys delete: x-speakeasy-name-override: delete tags: - API Keys summary: Delete an API key parameters: - schema: type: string description: The hash identifier of the API key to delete example: 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 required: true description: The hash identifier of the API key to delete name: hash in: path responses: '200': description: API key deleted successfully content: application/json: schema: type: object properties: deleted: type: boolean const: true description: Confirmation that the API key was deleted example: true required: - deleted example: deleted: true '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '404': description: Not Found - API key does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: deleteKeys get: operationId: getKey x-speakeasy-name-override: get tags: - API Keys summary: Get a single API key parameters: - schema: type: string description: The hash identifier of the API key to retrieve example: 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 required: true description: The hash identifier of the API key to retrieve name: hash in: path 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: 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 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: Production API Key disabled: type: boolean description: Whether the API key is disabled example: false limit: type: number nullable: true description: Spending limit for the API key in USD example: 100 limit_remaining: type: number nullable: true 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 description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 usage_daily: type: number description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 usage_weekly: type: number description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 usage_monthly: type: number description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 byok_usage: type: number description: Total external BYOK usage (in USD) for the API key example: 17.38 byok_usage_daily: type: number description: External BYOK usage (in USD) for the current UTC day example: 17.38 byok_usage_weekly: type: number description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 byok_usage_monthly: type: number 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' 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 example: hash: 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 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' description: The API key information required: - data example: data: hash: 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 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' '401': description: Unauthorized - Missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '404': description: Not Found - API key does not exist content: application/json: schema: $ref: '#/components/schemas/NotFoundResponse' '429': description: Too Many Requests - Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /key: get: operationId: getCurrentKey x-speakeasy-name-override: getCurrentKeyMetadata tags: - API Keys summary: Get current API key description: Get information on the API key associated with the current authentication session responses: '200': description: API key details content: application/json: schema: type: object properties: data: type: object properties: label: type: string description: Human-readable label for the API key example: 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 limit: type: number nullable: true description: Spending limit for the API key in USD example: 100 usage: type: number description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 usage_daily: type: number description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 usage_weekly: type: number description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 usage_monthly: type: number description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 byok_usage: type: number description: Total external BYOK usage (in USD) for the API key example: 17.38 byok_usage_daily: type: number description: External BYOK usage (in USD) for the current UTC day example: 17.38 byok_usage_weekly: type: number description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 byok_usage_monthly: type: number 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_provisioning_key: type: boolean description: Whether this is a provisioning key example: false limit_remaining: type: number nullable: true 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' rate_limit: type: object properties: requests: type: number 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_provisioning_key - limit_remaining - limit_reset - include_byok_in_limit - rate_limit description: Current API key information example: label: sk-or-v1-au78b3456789012345678901234567890 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_provisioning_key: false limit_remaining: 74.5 limit_reset: monthly include_byok_in_limit: false expires_at: '2027-12-31T23:59:59Z' rate_limit: requests: 1000 interval: 1h note: This field is deprecated and safe to ignore. required: - data example: data: label: sk-or-v1-au78b3456789012345678901234567890 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_provisioning_key: false limit_remaining: 74.5 limit_reset: monthly include_byok_in_limit: false expires_at: '2027-12-31T23:59:59Z' rate_limit: requests: 1000 interval: 1h note: This field is deprecated and safe to ignore. '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /auth/keys: post: operationId: exchangeAuthCodeForAPIKey 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 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 required: true responses: '200': description: Successfully exchanged code for an API key content: application/json: 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 required: - key - user_id example: key: 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 user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah '400': description: Bad Request - Invalid request parameters or malformed input content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '403': description: Forbidden - Authentication successful but insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ForbiddenResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' /auth/keys/code: post: x-speakeasy-name-override: createAuthCode 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 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 required: - callback_url example: callback_url: https://myapp.com/auth/callback code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM code_challenge_method: S256 limit: 100 required: true responses: '200': description: Successfully created authorization code content: application/json: schema: type: object 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: number 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' required: - data '400': description: Bad Request - Invalid request parameters or malformed input content: application/json: schema: $ref: '#/components/schemas/BadRequestResponse' '401': description: Unauthorized - Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' '500': description: Internal Server Error - Unexpected server error content: application/json: schema: $ref: '#/components/schemas/InternalServerResponse' operationId: createAuthKeysCode /chat/completions: post: summary: Create a chat completion operationId: sendChatCompletionRequest x-speakeasy-group: chat x-speakeasy-name-override: send x-speakeasy-stream-request-field: stream description: >- Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. tags: - Chat requestBody: required: true description: Chat completion request parameters content: application/json: schema: $ref: '#/components/schemas/ChatGenerationParams' responses: '200': description: Successful chat completion response content: application/json: schema: $ref: '#/components/schemas/ChatResponse' description: Chat completion response text/event-stream: x-speakeasy-sse-sentinel: '[DONE]' schema: $ref: '#/components/schemas/ChatStreamingResponseChunk' '400': description: Bad request - invalid parameters content: application/json: schema: $ref: '#/components/schemas/ChatError' '401': description: Unauthorized - invalid API key content: application/json: schema: $ref: '#/components/schemas/ChatError' '429': description: Too many requests - rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ChatError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ChatError' /completions: post: summary: Create a completion x-speakeasy-group: completions x-speakeasy-name-override: generate x-speakeasy-stream-request-field: stream description: Creates a completion for the provided prompt and parameters. Supports both streaming and non-streaming modes. tags: - Completions requestBody: required: true description: Completion request parameters content: application/json: schema: $ref: '#/components/schemas/CompletionCreateParams' responses: '200': description: Successful completion response content: application/json: schema: $ref: '#/components/schemas/CompletionResponse' description: Completion response '400': description: Bad request - invalid parameters content: application/json: schema: $ref: '#/components/schemas/ChatError' '401': description: Unauthorized - invalid API key content: application/json: schema: $ref: '#/components/schemas/ChatError' '429': description: Too many requests - rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ChatError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ChatError' operationId: createCompletions 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 tags: - name: API Keys description: API key management endpoints - name: Analytics description: Analytics and usage endpoints - name: Chat description: Chat completion endpoints - name: Completions description: Text 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: Models description: Model information endpoints - name: OAuth description: OAuth authentication endpoints - name: Parameters description: Parameters endpoints - name: Providers description: Provider information endpoints - name: beta.responses description: beta.responses endpoints x-fern-base-path: / x-retry-strategy: type: exponential initialDelay: 500 maxDelay: 60000 maxAttempts: 3