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: FileCitationAnnotation: 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 URLCitationAnnotation: type: object properties: type: type: string enum: - url_citation end_index: type: number start_index: type: number title: type: string url: type: string required: - type - end_index - start_index - title - url example: type: url_citation start_index: 0 end_index: 42 title: OpenRouter Documentation url: https://openrouter.ai/docs FilePathAnnotation: 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 OutputTextContent: type: object properties: type: type: string enum: - output_text text: type: string annotations: type: array items: anyOf: - $ref: '#/components/schemas/FileCitationAnnotation' - $ref: '#/components/schemas/URLCitationAnnotation' - $ref: '#/components/schemas/FilePathAnnotation' 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 RefusalContent: 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/OutputTextContent' - $ref: '#/components/schemas/RefusalContent' required: - id - role - type - status - content example: id: msg-abc123 role: assistant type: message status: completed content: - type: output_text text: Hello! How can I help you today? 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 required: - type - id - summary example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Analyzed the problem using first principles OutputItemFunctionCall: type: object properties: type: type: string enum: - function_call id: type: string name: type: string arguments: type: string call_id: type: string 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 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 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 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 status: $ref: '#/components/schemas/ImageGenerationStatus' required: - type - id - result - status example: type: image_generation_call id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed ResponsesOutputItem: anyOf: - allOf: - $ref: '#/components/schemas/OutputMessage' - type: object properties: {} example: id: msg-abc123 role: assistant type: message status: completed content: - type: output_text text: Hello! How can I help you today? - allOf: - $ref: '#/components/schemas/OutputItemReasoning' - type: object properties: {} example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Analyzed the problem using first principles - 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 - allOf: - $ref: '#/components/schemas/OutputItemWebSearchCall' - type: object properties: {} example: type: web_search_call id: search-abc123 status: completed - allOf: - $ref: '#/components/schemas/OutputItemFileSearchCall' - type: object properties: {} example: type: file_search_call id: filesearch-abc123 queries: - machine learning algorithms - neural networks status: completed - allOf: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - type: object properties: {} example: type: image_generation_call id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed 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 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. ResponsesUsage: 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 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 required: - input_tokens - input_tokens_details - output_tokens - output_tokens_details - total_tokens 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 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 description: Reasoning output item with signature and format extensions example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Step by step analysis OpenResponsesInputText: 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? OpenResponsesInputImage: 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 OpenResponsesInputFile: 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 OpenResponsesInputContent: oneOf: - $ref: '#/components/schemas/OpenResponsesInputText' - $ref: '#/components/schemas/OpenResponsesInputImage' - $ref: '#/components/schemas/OpenResponsesInputFile' discriminator: propertyName: type mapping: input_text: '#/components/schemas/OpenResponsesInputText' input_image: '#/components/schemas/OpenResponsesInputImage' input_file: '#/components/schemas/OpenResponsesInputFile' description: Content item in a response input message example: type: input_text text: Hello, how can I help you? 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: $ref: '#/components/schemas/OpenResponsesInputContent' - type: string required: - role - content description: Simplified input message format that accepts string or array content example: role: user content: What is the weather today? 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: $ref: '#/components/schemas/OpenResponsesInputContent' required: - id - role - content description: Input message item with structured content array example: id: msg-abc123 type: message role: user content: - type: input_text text: What is the weather today? ToolCallStatus: type: string enum: - in_progress - completed - incomplete example: completed 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 call_id: type: string output: type: string status: $ref: '#/components/schemas/ToolCallStatus' required: - type - id - 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 OpenResponsesInputItem: anyOf: - $ref: '#/components/schemas/OpenResponsesReasoning' - $ref: '#/components/schemas/OpenResponsesEasyInputMessage' - $ref: '#/components/schemas/OpenResponsesInputMessageItem' - $ref: '#/components/schemas/OpenResponsesFunctionToolCall' - $ref: '#/components/schemas/OpenResponsesFunctionCallOutput' - allOf: - $ref: '#/components/schemas/OutputMessage' - type: object properties: {} example: id: msg-abc123 role: assistant type: message status: completed content: - type: output_text text: Hello! How can I help you today? - allOf: - $ref: '#/components/schemas/OutputItemReasoning' - type: object properties: {} example: type: reasoning id: reasoning-abc123 summary: - type: summary_text text: Analyzed the problem using first principles - 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 - allOf: - $ref: '#/components/schemas/OutputItemWebSearchCall' - type: object properties: {} example: type: web_search_call id: search-abc123 status: completed - allOf: - $ref: '#/components/schemas/OutputItemFileSearchCall' - type: object properties: {} example: type: file_search_call id: filesearch-abc123 queries: - machine learning algorithms - neural networks status: completed - allOf: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - type: object properties: {} example: type: image_generation_call id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed description: An item in the input array for a response request example: role: user content: What is the weather today? OpenResponsesInput: anyOf: - type: string - type: array items: $ref: '#/components/schemas/OpenResponsesInputItem' - nullable: true description: Input for a response request - can be a string or array of items example: - role: user content: What is the weather today? 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 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 required: - type description: User location information for web search example: type: approximate city: San Francisco country: USA region: California timezone: America/Los_Angeles OpenResponsesWebSearchPreviewTool: type: object properties: type: type: string enum: - web_search_preview search_context_size: $ref: '#/components/schemas/ResponsesSearchContextSize' user_location: $ref: '#/components/schemas/ResponsesWebSearchUserLocation' 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/ResponsesWebSearchUserLocation' required: - type description: Web search preview tool configuration (2025-03-11 version) example: type: web_search_preview_2025_03_11 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 OpenResponsesToolUnion: 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' description: Union of all supported tool definitions 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 ToolChoiceTypes: type: object properties: type: anyOf: - type: string enum: - file_search - type: string enum: - web_search_preview - type: string enum: - web_search_preview_2025_03_11 - type: string enum: - computer_use_preview - type: string enum: - code_interpreter required: - type description: Force the model to call a tool of a specific type example: type: web_search_preview ToolChoiceFunction: type: object properties: type: type: string enum: - function name: type: string required: - type - name description: Force the model to call a specific function example: type: function name: get_weather OpenResponsesToolChoice: anyOf: - type: string enum: - auto - type: string enum: - none - type: string enum: - required - $ref: '#/components/schemas/ToolChoiceTypes' - allOf: - $ref: '#/components/schemas/ToolChoiceFunction' - type: object properties: {} description: Force the model to call a specific function example: type: function name: get_weather description: Controls which tool the model should call example: auto OpenResponsesPrompt: type: object nullable: true properties: id: type: string variables: type: object nullable: true additionalProperties: $ref: '#/components/schemas/OpenResponsesInputContent' required: - id description: Prompt template with variables for the response example: id: prompt-abc123 variables: name: type: input_text text: John ReasoningSummaryVerbosity: type: string enum: - auto - concise - detailed OpenResponsesReasoningConfig: type: object nullable: true properties: effort: type: string nullable: true enum: - high - medium - low - minimal summary: $ref: '#/components/schemas/ReasoningSummaryVerbosity' max_tokens: type: number nullable: true enabled: type: boolean nullable: true description: Configuration for reasoning mode in the response example: summary: auto enabled: true OpenResponsesFormatText: type: object properties: type: type: string enum: - text required: - type description: Plain text response format example: type: text OpenResponsesFormatJSONObject: type: object properties: type: type: string enum: - json_object required: - type description: JSON object response format example: type: json_object OpenResponsesFormatJSONSchema: 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 OpenResponsesFormatTextConfig: anyOf: - $ref: '#/components/schemas/OpenResponsesFormatText' - $ref: '#/components/schemas/OpenResponsesFormatJSONObject' - $ref: '#/components/schemas/OpenResponsesFormatJSONSchema' description: Text response format configuration example: type: text OpenResponsesTextConfig: type: object properties: format: $ref: '#/components/schemas/OpenResponsesFormatTextConfig' verbosity: type: string nullable: true enum: - high - low - medium description: Text output configuration including format and verbosity example: format: type: text verbosity: medium OpenResponsesNonStreamingResponse: type: object properties: id: type: string object: type: string enum: - response created_at: type: number model: type: string status: type: string enum: - completed - incomplete - in_progress - failed - cancelled - queued output: type: array items: $ref: '#/components/schemas/ResponsesOutputItem' 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: type: object nullable: true properties: reason: type: string enum: - max_output_tokens - content_filter usage: $ref: '#/components/schemas/ResponsesUsage' 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/OpenResponsesInput' metadata: $ref: '#/components/schemas/OpenResponsesRequestMetadata' tools: type: array items: $ref: '#/components/schemas/OpenResponsesToolUnion' tool_choice: $ref: '#/components/schemas/OpenResponsesToolChoice' parallel_tool_calls: type: boolean prompt: $ref: '#/components/schemas/OpenResponsesPrompt' background: type: boolean nullable: true previous_response_id: type: string nullable: true reasoning: $ref: '#/components/schemas/OpenResponsesReasoningConfig' service_tier: type: string nullable: true enum: - auto - default - flex - priority - scale store: type: boolean truncation: type: string nullable: true enum: - auto - disabled text: $ref: '#/components/schemas/OpenResponsesTextConfig' required: - object - created_at - model - output - error - incomplete_details - temperature - top_p - instructions - metadata - tools - tool_choice - parallel_tool_calls 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/OpenResponsesNonStreamingResponse' 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/OpenResponsesNonStreamingResponse' 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/OpenResponsesNonStreamingResponse' 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/OpenResponsesNonStreamingResponse' 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/OpenResponsesNonStreamingResponse' 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 OpenResponsesErrorEvent: 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 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 OpenResponsesOutputText: allOf: - $ref: '#/components/schemas/OutputTextContent' - type: object properties: {} 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 OpenResponsesRefusalContent: allOf: - $ref: '#/components/schemas/RefusalContent' - type: object properties: {} example: type: refusal refusal: I'm sorry, I cannot assist with that request 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/OpenResponsesOutputText' - $ref: '#/components/schemas/OpenResponsesRefusalContent' 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/OpenResponsesOutputText' - $ref: '#/components/schemas/OpenResponsesRefusalContent' 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: allOf: - $ref: '#/components/schemas/OpenResponsesTopLogprobs' - type: object properties: {} description: Alternative token with its log probability example: token: hello logprob: -0.5 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: anyOf: - $ref: '#/components/schemas/FileCitationAnnotation' - $ref: '#/components/schemas/URLCitationAnnotation' - $ref: '#/components/schemas/FilePathAnnotation' 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 OpenResponsesReasoningDeltaEvent: 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 OpenResponsesReasoningDoneEvent: 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 OpenResponsesReasoningSummaryPartAddedEventSchema: 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 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 OpenResponsesReasoningSummaryTextDeltaEvent: 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 OpenResponsesReasoningSummaryTextDoneEvent: 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 OpenResponsesImageGenCallInProgress: 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 example: type: response.image_generation_call.in_progress item_id: item-abc123 output_index: 0 sequence_number: 1 OpenResponsesImageGenCallGenerating: 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 example: type: response.image_generation_call.generating item_id: item-abc123 output_index: 0 sequence_number: 2 OpenResponsesImageGenCallPartialImage: 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 example: type: response.image_generation_call.partial_image item_id: item-abc123 output_index: 0 sequence_number: 3 partial_image_b64: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ partial_image_index: 0 OpenResponsesImageGenCallCompleted: 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 example: type: response.image_generation_call.completed item_id: item-abc123 output_index: 0 sequence_number: 4 OpenResponsesStreamEvent: oneOf: - allOf: - $ref: '#/components/schemas/OpenResponsesCreatedEvent' - type: object properties: {} 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: {} 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: {} 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: {} 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: {} 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 - allOf: - $ref: '#/components/schemas/OpenResponsesErrorEvent' - 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 - 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/OpenResponsesOutputText' - $ref: '#/components/schemas/ReasoningTextContent' - $ref: '#/components/schemas/OpenResponsesRefusalContent' 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/OpenResponsesOutputText' - $ref: '#/components/schemas/ReasoningTextContent' - $ref: '#/components/schemas/OpenResponsesRefusalContent' 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 - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningDeltaEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningDoneEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartAddedEventSchema' - 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 - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDeltaEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDoneEvent' - 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 - allOf: - $ref: '#/components/schemas/OpenResponsesImageGenCallInProgress' - type: object properties: {} example: type: response.image_generation_call.in_progress item_id: item-abc123 output_index: 0 sequence_number: 1 - allOf: - $ref: '#/components/schemas/OpenResponsesImageGenCallGenerating' - type: object properties: {} example: type: response.image_generation_call.generating item_id: item-abc123 output_index: 0 sequence_number: 2 - allOf: - $ref: '#/components/schemas/OpenResponsesImageGenCallPartialImage' - type: object properties: {} example: type: response.image_generation_call.partial_image item_id: item-abc123 output_index: 0 sequence_number: 3 partial_image_b64: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ partial_image_index: 0 - allOf: - $ref: '#/components/schemas/OpenResponsesImageGenCallCompleted' - type: object properties: {} example: type: response.image_generation_call.completed item_id: item-abc123 output_index: 0 sequence_number: 4 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 ErrorResponse: type: object properties: error: type: object properties: code: type: integer enum: - 100 - 101 - 102 - 200 - 201 - 202 - 203 - 204 - 205 - 206 - 207 - 208 - 300 - 301 - 302 - 303 - 304 - 305 - 307 - 308 - 400 - 401 - 402 - 403 - 404 - 405 - 406 - 407 - 408 - 409 - 410 - 411 - 412 - 413 - 414 - 415 - 416 - 417 - 418 - 422 - 423 - 424 - 425 - 426 - 428 - 429 - 431 - 451 - 498 - 499 - 500 - 501 - 502 - 503 - 504 - 505 - 506 - 507 - 508 - 510 - 511 - 520 - 521 - 522 - 523 - 524 - 525 - 526 - 529 - 530 message: type: string metadata: type: object nullable: true additionalProperties: nullable: true required: - code - message user_id: type: string nullable: true required: - error description: Error response example: error: code: 400 message: Invalid request parameters metadata: field: temperature reason: Must be between 0 and 2 user_id: user-abc123 OpenResponsesIncludable: 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 description: Fields to include in the response that would normally be omitted example: message.input_image.image_url OpenResponsesServiceTier: type: string nullable: true enum: - auto - default - flex - priority - scale example: auto OpenResponsesTruncation: type: string nullable: true enum: - auto - disabled example: auto 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: deny ProviderName: type: string enum: - AnyScale - Cent-ML - HuggingFace - Hyperbolic 2 - Lepton - Lynn 2 - Lynn - Mancer - Modal - OctoAI - Recursal - Reflection - Replicate - SambaNova 2 - SF Compute - Together 2 - 01.AI - AI21 - AionLabs - Alibaba - Amazon Bedrock - Anthropic - AtlasCloud - Atoma - Avian - Azure - BaseTen - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - CrofAI - Crusoe - DeepInfra - DeepSeek - Enfer - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - InferenceNet - Infermatic - Inflection - InoCloud - Kluster - Lambda - Liquid - Mancer 2 - Meta - Minimax - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - NextBit - Nineteen - Novita - Nvidia - OpenAI - OpenInference - Parasail - Perplexity - Phala - Relace - SambaNova - SiliconFlow - Stealth - Switchpoint - Targon - Together - Ubicloud - 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 OpenResponsesRequest: type: object properties: input: allOf: - $ref: '#/components/schemas/OpenResponsesInput' - anyOf: - type: string - type: array items: $ref: '#/components/schemas/OpenResponsesInputItem' instructions: type: string nullable: true metadata: $ref: '#/components/schemas/OpenResponsesRequestMetadata' tools: type: array items: $ref: '#/components/schemas/OpenResponsesToolUnion' tool_choice: $ref: '#/components/schemas/OpenResponsesToolChoice' parallel_tool_calls: type: boolean nullable: true model: type: string models: type: array items: type: string text: $ref: '#/components/schemas/OpenResponsesTextConfig' 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/OpenResponsesPrompt' include: type: array nullable: true items: $ref: '#/components/schemas/OpenResponsesIncludable' background: type: boolean nullable: true safety_identifier: type: string nullable: true store: type: boolean nullable: true service_tier: $ref: '#/components/schemas/OpenResponsesServiceTier' truncation: $ref: '#/components/schemas/OpenResponsesTruncation' stream: type: boolean nullable: true 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 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: anyOf: - type: number - type: string - {} completion: anyOf: - type: number - type: string - {} image: anyOf: - type: number - type: string - {} audio: anyOf: - type: number - type: string - {} request: anyOf: - type: number - type: string - {} 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. experimental: type: object nullable: true properties: {} 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 ModelGroup: type: string enum: - Router - Media - Other - GPT - Claude - Gemini - Grok - Cohere - Nova - Qwen - Yi - DeepSeek - Mistral - Llama2 - Llama3 - Llama4 - PaLM - RWKV - Qwen3 description: Tokenizer type used by the model example: GPT 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 example: chatml InputModality: type: string enum: - text - image - file - audio example: text OutputModality: type: string enum: - text - image - embeddings example: text ModelArchitecture: type: object properties: tokenizer: $ref: '#/components/schemas/ModelGroup' instruct_type: $ref: '#/components/schemas/InstructType' 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 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: type: object properties: prompt: anyOf: - type: number - type: string - {} completion: anyOf: - type: number - type: string - {} request: anyOf: - type: number - type: string - {} image: anyOf: - type: number - type: string - {} image_output: anyOf: - type: number - type: string - {} audio: anyOf: - type: number - type: string - {} input_audio_cache: anyOf: - type: number - type: string - {} web_search: anyOf: - type: number - type: string - {} internal_reasoning: anyOf: - type: number - type: string - {} input_cache_read: anyOf: - type: number - type: string - {} input_cache_write: anyOf: - type: number - type: string - {} discount: type: number required: - prompt - completion additionalProperties: false description: Pricing information for the model 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: type: object nullable: true properties: prompt_tokens: description: Maximum prompt tokens per request completion_tokens: description: Maximum completion tokens per request required: - prompt_tokens - completion_tokens description: Per-request token limits 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 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: anyOf: - type: number - type: string - {} completion: anyOf: - type: number - type: string - {} request: anyOf: - type: number - type: string - {} image: anyOf: - type: number - type: string - {} image_output: anyOf: - type: number - type: string - {} audio: anyOf: - type: number - type: string - {} input_audio_cache: anyOf: - type: number - type: string - {} web_search: anyOf: - type: number - type: string - {} internal_reasoning: anyOf: - type: number - type: string - {} input_cache_read: anyOf: - type: number - type: string - {} input_cache_write: anyOf: - type: number - type: string - {} 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 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 ChatMessageContentItem: oneOf: - $ref: '#/components/schemas/ChatMessageContentItemText' - $ref: '#/components/schemas/ChatMessageContentItemImage' - $ref: '#/components/schemas/ChatMessageContentItemAudio' discriminator: propertyName: type mapping: text: '#/components/schemas/ChatMessageContentItemText' image_url: '#/components/schemas/ChatMessageContentItemImage' input_audio: '#/components/schemas/ChatMessageContentItemAudio' 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: type: array nullable: true items: type: number top_logprobs: type: array items: type: object properties: token: type: string logprob: type: number bytes: type: array nullable: true items: type: number required: - token - logprob - bytes required: - token - logprob - bytes - top_logprobs ChatMessageTokenLogprobs: type: object properties: content: type: array nullable: true items: $ref: '#/components/schemas/ChatMessageTokenLogprob' refusal: type: array nullable: true items: $ref: '#/components/schemas/ChatMessageTokenLogprob' required: - content - refusal ChatGenerationTokenUsage: type: object properties: completion_tokens: type: number prompt_tokens: type: number total_tokens: type: number completion_tokens_details: type: object properties: reasoning_tokens: type: number audio_tokens: type: number accepted_prediction_tokens: type: number rejected_prediction_tokens: type: number prompt_tokens_details: type: object properties: cached_tokens: type: number audio_tokens: type: number required: - completion_tokens - prompt_tokens - total_tokens ChatCompletionFinishReason: type: string enum: - tool_calls - stop - length - content_filter - error JSONSchemaConfig: type: object properties: name: type: string maxLength: 64 description: type: string schema: type: object additionalProperties: {} strict: type: boolean nullable: true 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: - type: string - type: array items: $ref: '#/components/schemas/ChatMessageContentItem' - type: 'null' name: type: string tool_calls: type: array items: $ref: '#/components/schemas/ChatMessageToolCall' refusal: type: string nullable: true reasoning: type: string nullable: true 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' Tool: type: object properties: type: type: string const: function function: type: object properties: name: type: string maxLength: 64 description: type: string parameters: type: object additionalProperties: {} strict: type: boolean nullable: true 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: type: array items: $ref: '#/components/schemas/Message' minItems: 1 model: type: string frequency_penalty: type: number nullable: true minimum: -2 maximum: 2 logit_bias: type: object nullable: true additionalProperties: type: number logprobs: type: boolean nullable: true top_logprobs: type: number nullable: true minimum: 0 maximum: 20 max_completion_tokens: type: number nullable: true minimum: 1 max_tokens: type: number nullable: true minimum: 1 metadata: type: object additionalProperties: type: string presence_penalty: type: number nullable: true minimum: -2 maximum: 2 reasoning: type: object properties: effort: type: string nullable: true enum: - minimal - low - medium - high - 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 seed: type: integer nullable: true stop: anyOf: - type: string - type: array items: type: string maxItems: 4 - type: 'null' stream: type: boolean nullable: true default: false stream_options: oneOf: - $ref: '#/components/schemas/ChatStreamOptions' - type: 'null' temperature: type: number nullable: true minimum: 0 maximum: 2 default: 1 tool_choice: $ref: '#/components/schemas/ToolChoiceOption' tools: type: array items: $ref: '#/components/schemas/Tool' top_p: type: number nullable: true minimum: 0 maximum: 1 default: 1 user: type: string required: - messages - model ChatResponseChoice: type: object properties: finish_reason: anyOf: - $ref: '#/components/schemas/ChatCompletionFinishReason' - type: 'null' index: type: number message: $ref: '#/components/schemas/AssistantMessage' logprobs: oneOf: - $ref: '#/components/schemas/ChatMessageTokenLogprobs' - type: 'null' required: - finish_reason - index - message 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: type: string nullable: true usage: $ref: '#/components/schemas/ChatGenerationTokenUsage' required: - id - choices - created - model - object ChatError: type: object properties: error: type: object properties: code: anyOf: - type: string - type: number - type: 'null' message: type: string param: type: string nullable: true type: type: string required: - code - message - param - type required: - error 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: type: string nullable: true reasoning: type: string nullable: true refusal: type: string nullable: true tool_calls: type: array items: $ref: '#/components/schemas/ChatStreamingMessageToolCall' ChatStreamingChoice: type: object properties: delta: $ref: '#/components/schemas/ChatStreamingMessageChunk' finish_reason: anyOf: - $ref: '#/components/schemas/ChatCompletionFinishReason' - type: 'null' index: type: number logprobs: oneOf: - $ref: '#/components/schemas/ChatMessageTokenLogprobs' - type: 'null' required: - delta - finish_reason - index 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: type: string nullable: true error: type: object properties: message: type: string code: type: number required: - message - code usage: $ref: '#/components/schemas/ChatGenerationTokenUsage' required: - id - choices - created - model - object required: - data CompletionFinishReason: type: string nullable: true enum: - stop - length - content_filter - null CompletionLogprobs: type: object properties: tokens: type: array items: type: string token_logprobs: type: array items: type: number top_logprobs: type: array nullable: true items: type: object additionalProperties: type: number 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: type: string prompt: anyOf: - type: string - type: array items: type: string - type: array items: type: number - type: array items: type: array items: type: number best_of: type: integer nullable: true minimum: 1 maximum: 20 echo: type: boolean nullable: true frequency_penalty: type: number nullable: true minimum: -2 maximum: 2 logit_bias: type: object nullable: true additionalProperties: type: number logprobs: type: integer nullable: true minimum: 0 maximum: 5 max_tokens: type: integer nullable: true minimum: 1 'n': type: integer nullable: true minimum: 1 maximum: 128 presence_penalty: type: number nullable: true minimum: -2 maximum: 2 seed: type: integer nullable: true stop: anyOf: - type: string - type: array items: type: string - type: 'null' stream: type: boolean nullable: true stream_options: type: object nullable: true properties: include_usage: type: boolean nullable: true suffix: type: string nullable: true temperature: type: number nullable: true minimum: 0 maximum: 2 top_p: type: number nullable: true minimum: 0 maximum: 1 user: type: string metadata: type: object nullable: true additionalProperties: type: string 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: 'null' required: - model - prompt CompletionChoice: type: object properties: text: type: string index: type: number logprobs: oneOf: - $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 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: /api/alpha/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]' default: description: Error Response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' operationId: createApiAlphaResponses /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 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 default: description: Error Response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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 properties: data: type: object properties: total_credits: type: number description: Total credits purchased example: 100.5 total_usage: type: number description: Total credits used example: 25.75 required: - total_credits - total_usage example: total_credits: 100.5 total_usage: 25.75 required: - data example: data: total_credits: 100.5 total_usage: 25.75 default: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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: type: object properties: amount: type: number sender: {} chain_id: type: integer enum: - 1 - 137 - 8453 required: - amount - sender - chain_id 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 default: description: Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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 default: description: Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' operationId: getGeneration /models/count: get: tags: - Models summary: Get total count of available models responses: '200': description: Returns the total count of available models content: application/json: schema: 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 example: data: count: 150 default: description: Error Response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' operationId: listModelsCount /models: get: tags: - Models 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: type: object properties: data: type: array items: $ref: '#/components/schemas/Model' description: List of available models required: - data application/rss+xml: schema: type: string default: description: Error Response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' operationId: getModels /models/user: get: tags: - Models 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: type: object properties: data: type: array items: $ref: '#/components/schemas/Model' description: List of available models required: - data default: description: Error Response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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: 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: type: object 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 description: Model architecture information endpoints: type: array items: $ref: '#/components/schemas/PublicEndpoint' description: List of available endpoints for this model required: - id - name - created - description - architecture - endpoints required: - data default: description: Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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 default: description: Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 - AtlasCloud - Atoma - Avian - Azure - BaseTen - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - CrofAI - Crusoe - DeepInfra - DeepSeek - Enfer - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - InferenceNet - Infermatic - Inflection - Kluster - Lambda - Liquid - Mancer 2 - Meta - Minimax - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - NextBit - Nineteen - Novita - Nvidia - OpenAI - OpenInference - Parasail - Perplexity - Phala - Relace - SambaNova - SiliconFlow - Stealth - Switchpoint - Targon - Together - Ubicloud - 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 description: Parameter analytics data example: model: openai/gpt-4 supported_parameters: - temperature - top_p - max_tokens required: - data example: data: model: openai/gpt-4 supported_parameters: - temperature - top_p - max_tokens default: description: Data not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 content: application/json: schema: type: object properties: error: type: object properties: code: type: number description: Error code example: 400 message: type: string description: Error message example: Bad Request required: - code - message description: Error details example: code: 400 message: Bad Request required: - error example: error: code: 400 message: Bad Request /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 name: include_disabled in: query - schema: type: string description: Number of API keys to skip for pagination example: '0' required: false 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' 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' 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' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 required: - name example: name: My New API Key limit: 50 limit_reset: monthly include_byok_in_limit: true 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' 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 description: The created API key information 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' 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 key: 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 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 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' 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 description: The updated API key information 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' 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' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 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 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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 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' 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 description: The API key information 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' 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' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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 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 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 rate_limit: requests: 1000 interval: 1h note: This field is deprecated and safe to ignore. default: description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /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: schema: $ref: '#/components/schemas/ChatStreamingResponseChunk' x-speakeasy-sse-sentinel: '[DONE]' '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: Endpoints description: Endpoint information - name: Generations description: Generation history endpoints - name: Models description: Model information 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