components: parameters: {} schemas: ActivityItem: example: byok_usage_inference: 0.012 completion_tokens: 125 date: '2025-08-24' endpoint_id: 550e8400-e29b-41d4-a716-446655440000 model: openai/gpt-4.1 model_permaslug: openai/gpt-4.1-2025-04-14 prompt_tokens: 50 provider_name: OpenAI reasoning_tokens: 25 requests: 5 usage: 0.015 properties: byok_usage_inference: description: BYOK inference cost in USD (external credits spent) example: 0.012 format: double type: number completion_tokens: description: Total completion tokens generated example: 125 type: integer date: description: Date of the activity (YYYY-MM-DD format) example: '2025-08-24' type: string endpoint_id: description: Unique identifier for the endpoint example: 550e8400-e29b-41d4-a716-446655440000 type: string model: description: Model slug (e.g., "openai/gpt-4.1") example: openai/gpt-4.1 type: string model_permaslug: description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14") example: openai/gpt-4.1-2025-04-14 type: string prompt_tokens: description: Total prompt tokens used example: 50 type: integer provider_name: description: Name of the provider serving this endpoint example: OpenAI type: string reasoning_tokens: description: Total reasoning tokens used example: 25 type: integer requests: description: Number of requests made example: 5 type: integer usage: description: Total cost in USD (OpenRouter credits spent) example: 0.015 format: double type: number required: - date - model - model_permaslug - endpoint_id - provider_name - usage - byok_usage_inference - requests - prompt_tokens - completion_tokens - reasoning_tokens type: object ActivityResponse: example: data: - byok_usage_inference: 0.012 completion_tokens: 125 date: '2025-08-24' endpoint_id: 550e8400-e29b-41d4-a716-446655440000 model: openai/gpt-4.1 model_permaslug: openai/gpt-4.1-2025-04-14 prompt_tokens: 50 provider_name: OpenAI reasoning_tokens: 25 requests: 5 usage: 0.015 properties: data: description: List of activity items items: $ref: '#/components/schemas/ActivityItem' type: array required: - data type: object AnnotationAddedEvent: allOf: - $ref: '#/components/schemas/BaseAnnotationAddedEvent' - properties: {} type: object description: Event emitted when a text annotation is added to output example: annotation: end_index: 7 start_index: 0 title: Example type: url_citation url: https://example.com annotation_index: 0 content_index: 0 item_id: item-1 output_index: 0 sequence_number: 5 type: response.output_text.annotation.added AnthropicBase64ImageSource: example: data: /9j/4AAQ... media_type: image/jpeg type: base64 properties: data: type: string media_type: $ref: '#/components/schemas/AnthropicImageMimeType' type: enum: - base64 type: string required: - type - media_type - data type: object AnthropicBase64PdfSource: example: data: JVBERi0x... media_type: application/pdf type: base64 properties: data: type: string media_type: enum: - application/pdf type: string type: enum: - base64 type: string required: - type - media_type - data type: object AnthropicBaseUsageIteration: example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 100 output_tokens: 50 properties: cache_creation: $ref: '#/components/schemas/AnthropicIterationCacheCreation' cache_creation_input_tokens: type: integer cache_read_input_tokens: type: integer input_tokens: type: integer output_tokens: type: integer type: object AnthropicBashCodeExecutionContent: discriminator: mapping: bash_code_execution_result: '#/components/schemas/AnthropicBashCodeExecutionResult' bash_code_execution_tool_result_error: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' propertyName: type example: content: [] return_code: 0 stderr: '' stdout: Hello type: bash_code_execution_result oneOf: - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResultError' - $ref: '#/components/schemas/AnthropicBashCodeExecutionResult' AnthropicBashCodeExecutionOutput: example: file_id: file_01abc type: bash_code_execution_output properties: file_id: type: string type: enum: - bash_code_execution_output type: string required: - file_id - type type: object AnthropicBashCodeExecutionResult: example: content: [] return_code: 0 stderr: '' stdout: Hello type: bash_code_execution_result properties: content: items: $ref: '#/components/schemas/AnthropicBashCodeExecutionOutput' type: array return_code: type: integer stderr: type: string stdout: type: string type: enum: - bash_code_execution_result type: string required: - content - return_code - stderr - stdout - type type: object AnthropicBashCodeExecutionToolResult: example: content: content: [] return_code: 0 stderr: '' stdout: Hello type: bash_code_execution_result tool_use_id: srvtoolu_01abc type: bash_code_execution_tool_result properties: content: $ref: '#/components/schemas/AnthropicBashCodeExecutionContent' tool_use_id: type: string type: enum: - bash_code_execution_tool_result type: string required: - type - content - tool_use_id type: object AnthropicBashCodeExecutionToolResultError: example: error_code: unavailable type: bash_code_execution_tool_result_error properties: error_code: enum: - invalid_tool_input - unavailable - too_many_requests - execution_time_exceeded - output_file_too_large type: string type: enum: - bash_code_execution_tool_result_error type: string required: - error_code - type type: object AnthropicCacheControlDirective: example: type: ephemeral properties: ttl: $ref: '#/components/schemas/AnthropicCacheControlTtl' type: enum: - ephemeral type: string required: - type type: object AnthropicCacheControlTtl: enum: - 5m - 1h example: 5m type: string AnthropicCacheCreation: example: ephemeral_1h_input_tokens: 0 ephemeral_5m_input_tokens: 100 nullable: true properties: ephemeral_1h_input_tokens: type: integer ephemeral_5m_input_tokens: type: integer required: - ephemeral_5m_input_tokens - ephemeral_1h_input_tokens type: object AnthropicCaller: discriminator: mapping: code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller' code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller' direct: '#/components/schemas/AnthropicDirectCaller' propertyName: type example: type: direct oneOf: - $ref: '#/components/schemas/AnthropicDirectCaller' - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller' - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller' AnthropicCitationCharLocation: example: cited_text: Example cited text document_index: 0 document_title: null end_char_index: 18 file_id: null start_char_index: 0 type: char_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_char_index: type: integer file_id: nullable: true type: string start_char_index: type: integer type: enum: - char_location type: string required: - type - cited_text - document_index - document_title - start_char_index - end_char_index - file_id type: object AnthropicCitationCharLocationParam: example: cited_text: Example cited text document_index: 0 document_title: null end_char_index: 18 start_char_index: 0 type: char_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_char_index: type: integer start_char_index: type: integer type: enum: - char_location type: string required: - type - cited_text - document_index - document_title - start_char_index - end_char_index type: object AnthropicCitationContentBlockLocation: example: cited_text: Example cited text document_index: 0 document_title: null end_block_index: 1 file_id: null start_block_index: 0 type: content_block_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_block_index: type: integer file_id: nullable: true type: string start_block_index: type: integer type: enum: - content_block_location type: string required: - type - cited_text - document_index - document_title - start_block_index - end_block_index - file_id type: object AnthropicCitationContentBlockLocationParam: example: cited_text: Example cited text document_index: 0 document_title: null end_block_index: 1 start_block_index: 0 type: content_block_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_block_index: type: integer start_block_index: type: integer type: enum: - content_block_location type: string required: - type - cited_text - document_index - document_title - start_block_index - end_block_index type: object AnthropicCitationPageLocation: example: cited_text: Example cited text document_index: 0 document_title: null end_page_number: 2 file_id: null start_page_number: 1 type: page_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_page_number: type: integer file_id: nullable: true type: string start_page_number: type: integer type: enum: - page_location type: string required: - type - cited_text - document_index - document_title - start_page_number - end_page_number - file_id type: object AnthropicCitationPageLocationParam: example: cited_text: Example cited text document_index: 0 document_title: null end_page_number: 2 start_page_number: 1 type: page_location properties: cited_text: type: string document_index: type: integer document_title: nullable: true type: string end_page_number: type: integer start_page_number: type: integer type: enum: - page_location type: string required: - type - cited_text - document_index - document_title - start_page_number - end_page_number type: object AnthropicCitationsConfig: example: enabled: true nullable: true properties: enabled: type: boolean required: - enabled type: object AnthropicCitationSearchResultLocation: example: cited_text: Example cited text end_block_index: 1 search_result_index: 0 source: example_source start_block_index: 0 title: Example Result type: search_result_location properties: cited_text: type: string end_block_index: type: integer search_result_index: type: integer source: type: string start_block_index: type: integer title: nullable: true type: string type: enum: - search_result_location type: string required: - type - cited_text - search_result_index - source - title - start_block_index - end_block_index type: object AnthropicCitationWebSearchResultLocation: example: cited_text: Example cited text encrypted_index: enc_idx_0 title: Example Page type: web_search_result_location url: https://example.com properties: cited_text: type: string encrypted_index: type: string title: nullable: true type: string type: enum: - web_search_result_location type: string url: type: string required: - type - cited_text - encrypted_index - title - url type: object AnthropicCodeExecution20250825Caller: example: tool_id: toolu_01abc type: code_execution_20250825 properties: tool_id: type: string type: enum: - code_execution_20250825 type: string required: - type - tool_id type: object AnthropicCodeExecution20260120Caller: example: tool_id: toolu_01abc type: code_execution_20260120 properties: tool_id: type: string type: enum: - code_execution_20260120 type: string required: - type - tool_id type: object AnthropicCodeExecutionContent: discriminator: mapping: code_execution_result: '#/components/schemas/AnthropicCodeExecutionResult' code_execution_tool_result_error: '#/components/schemas/AnthropicCodeExecutionToolResultError' encrypted_code_execution_result: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' propertyName: type example: content: [] return_code: 0 stderr: '' stdout: Hello type: code_execution_result oneOf: - $ref: '#/components/schemas/AnthropicCodeExecutionToolResultError' - $ref: '#/components/schemas/AnthropicCodeExecutionResult' - $ref: '#/components/schemas/AnthropicEncryptedCodeExecutionResult' AnthropicCodeExecutionOutput: example: file_id: file_01abc type: code_execution_output properties: file_id: type: string type: enum: - code_execution_output type: string required: - file_id - type type: object AnthropicCodeExecutionResult: example: content: [] return_code: 0 stderr: '' stdout: Hello type: code_execution_result properties: content: items: $ref: '#/components/schemas/AnthropicCodeExecutionOutput' type: array return_code: type: integer stderr: type: string stdout: type: string type: enum: - code_execution_result type: string required: - content - return_code - stderr - stdout - type type: object AnthropicCodeExecutionToolResult: example: content: content: [] return_code: 0 stderr: '' stdout: Hello type: code_execution_result tool_use_id: srvtoolu_01abc type: code_execution_tool_result properties: content: $ref: '#/components/schemas/AnthropicCodeExecutionContent' tool_use_id: type: string type: enum: - code_execution_tool_result type: string required: - type - content - tool_use_id type: object AnthropicCodeExecutionToolResultError: example: error_code: unavailable type: code_execution_tool_result_error properties: error_code: $ref: '#/components/schemas/AnthropicServerToolErrorCode' type: enum: - code_execution_tool_result_error type: string required: - error_code - type type: object AnthropicCompactionBlock: example: content: Compacted summary of conversation. type: compaction properties: content: nullable: true type: string type: enum: - compaction type: string required: - type - content type: object AnthropicCompactionUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: type: enum: - compaction type: string required: - type type: object example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 50 output_tokens: 25 type: compaction AnthropicContainer: example: expires_at: '2026-04-08T00:00:00Z' id: ctr_01abc nullable: true properties: expires_at: type: string id: type: string required: - id - expires_at type: object AnthropicContainerUpload: example: file_id: file_01abc type: container_upload properties: file_id: type: string type: enum: - container_upload type: string required: - type - file_id type: object AnthropicDirectCaller: example: type: direct properties: type: enum: - direct type: string required: - type type: object AnthropicDocumentBlock: example: citations: null source: data: Hello, world! media_type: text/plain type: text title: null type: document properties: citations: $ref: '#/components/schemas/AnthropicCitationsConfig' source: anyOf: - $ref: '#/components/schemas/AnthropicBase64PdfSource' - $ref: '#/components/schemas/AnthropicPlainTextSource' title: nullable: true type: string type: enum: - document type: string required: - citations - source - title - type type: object AnthropicDocumentBlockParam: example: source: data: Hello, world! media_type: text/plain type: text type: document properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' citations: nullable: true properties: enabled: type: boolean type: object context: nullable: true type: string source: oneOf: - $ref: '#/components/schemas/AnthropicBase64PdfSource' - $ref: '#/components/schemas/AnthropicPlainTextSource' - properties: content: anyOf: - type: string - items: discriminator: mapping: image: '#/components/schemas/AnthropicImageBlockParam' text: '#/components/schemas/AnthropicTextBlockParam' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' - $ref: '#/components/schemas/AnthropicImageBlockParam' type: array type: enum: - content type: string required: - type - content type: object - $ref: '#/components/schemas/AnthropicUrlPdfSource' title: nullable: true type: string type: enum: - document type: string required: - type - source type: object AnthropicEncryptedCodeExecutionResult: example: content: [] encrypted_stdout: enc_stdout return_code: 0 stderr: '' type: encrypted_code_execution_result properties: content: items: $ref: '#/components/schemas/AnthropicCodeExecutionOutput' type: array encrypted_stdout: type: string return_code: type: integer stderr: type: string type: enum: - encrypted_code_execution_result type: string required: - content - encrypted_stdout - return_code - stderr - type type: object AnthropicImageBlockParam: example: source: data: /9j/4AAQ... media_type: image/jpeg type: base64 type: image properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' source: discriminator: mapping: base64: '#/components/schemas/AnthropicBase64ImageSource' url: '#/components/schemas/AnthropicUrlImageSource' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicBase64ImageSource' - $ref: '#/components/schemas/AnthropicUrlImageSource' type: enum: - image type: string required: - type - source type: object AnthropicImageMimeType: enum: - image/jpeg - image/png - image/gif - image/webp example: image/jpeg type: string AnthropicInputTokensClearAtLeast: example: type: input_tokens value: 50000 nullable: true properties: type: enum: - input_tokens type: string value: type: integer required: - type - value type: object AnthropicInputTokensTrigger: example: type: input_tokens value: 100000 properties: type: enum: - input_tokens type: string value: type: integer required: - type - value type: object AnthropicIterationCacheCreation: default: null example: ephemeral_1h_input_tokens: 0 ephemeral_5m_input_tokens: 0 nullable: true properties: ephemeral_1h_input_tokens: type: integer ephemeral_5m_input_tokens: type: integer type: object AnthropicMessageUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: type: enum: - message type: string required: - type type: object example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 100 output_tokens: 50 type: message AnthropicPlainTextSource: example: data: Hello, world! media_type: text/plain type: text properties: data: type: string media_type: enum: - text/plain type: string type: enum: - text type: string required: - type - media_type - data type: object AnthropicRedactedThinkingBlock: example: data: cmVkYWN0ZWQ= type: redacted_thinking properties: data: type: string type: enum: - redacted_thinking type: string required: - type - data type: object AnthropicRefusalStopDetails: description: Structured information about a refusal example: category: cyber explanation: The request was refused due to policy. type: refusal nullable: true properties: category: enum: - cyber - bio - null nullable: true type: string explanation: nullable: true type: string type: enum: - refusal type: string required: - type - category - explanation type: object AnthropicSearchResultBlockParam: example: content: - text: Result content type: text source: example_source title: Example Result type: search_result properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' citations: properties: enabled: type: boolean type: object content: items: $ref: '#/components/schemas/AnthropicTextBlockParam' type: array source: type: string title: type: string type: enum: - search_result type: string required: - type - source - title - content type: object AnthropicServerToolErrorCode: enum: - invalid_tool_input - unavailable - too_many_requests - execution_time_exceeded example: unavailable type: string AnthropicServerToolName: enum: - web_search - web_fetch - code_execution - bash_code_execution - text_editor_code_execution - tool_search_tool_regex - tool_search_tool_bm25 example: web_search type: string AnthropicServerToolUsage: example: web_fetch_requests: 0 web_search_requests: 1 nullable: true properties: web_fetch_requests: type: integer web_search_requests: type: integer required: - web_search_requests - web_fetch_requests type: object AnthropicServerToolUseBlock: example: caller: type: direct id: srvtoolu_01abc input: query: latest news name: web_search type: server_tool_use properties: caller: $ref: '#/components/schemas/AnthropicCaller' id: type: string input: nullable: true name: $ref: '#/components/schemas/AnthropicServerToolName' type: enum: - server_tool_use type: string required: - type - id - caller - name type: object AnthropicServiceTier: enum: - standard - priority - batch - null example: standard nullable: true type: string AnthropicSpeed: enum: - fast - standard - null example: standard nullable: true type: string AnthropicTextBlock: example: citations: null text: Hello, world! type: text properties: citations: items: $ref: '#/components/schemas/AnthropicTextCitation' nullable: true type: array text: type: string type: enum: - text type: string required: - type - text - citations type: object AnthropicTextBlockParam: example: text: Hello, world! type: text properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' citations: items: discriminator: mapping: char_location: '#/components/schemas/AnthropicCitationCharLocationParam' content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam' page_location: '#/components/schemas/AnthropicCitationPageLocationParam' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocationParam' - $ref: '#/components/schemas/AnthropicCitationPageLocationParam' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam' - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' nullable: true type: array text: type: string type: enum: - text type: string required: - type - text type: object AnthropicTextCitation: discriminator: mapping: char_location: '#/components/schemas/AnthropicCitationCharLocation' content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' page_location: '#/components/schemas/AnthropicCitationPageLocation' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' propertyName: type example: cited_text: Example text document_index: 0 document_title: null end_char_index: 10 file_id: null start_char_index: 0 type: char_location oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocation' - $ref: '#/components/schemas/AnthropicCitationPageLocation' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation' - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' AnthropicTextEditorCodeExecutionContent: discriminator: mapping: text_editor_code_execution_create_result: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' text_editor_code_execution_str_replace_result: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' text_editor_code_execution_tool_result_error: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' text_editor_code_execution_view_result: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' propertyName: type example: content: file content file_type: text num_lines: 10 start_line: 1 total_lines: 10 type: text_editor_code_execution_view_result oneOf: - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult' AnthropicTextEditorCodeExecutionCreateResult: example: is_file_update: false type: text_editor_code_execution_create_result properties: is_file_update: type: boolean type: enum: - text_editor_code_execution_create_result type: string required: - is_file_update - type type: object AnthropicTextEditorCodeExecutionStrReplaceResult: example: lines: null new_lines: null new_start: null old_lines: null old_start: null type: text_editor_code_execution_str_replace_result properties: lines: items: type: string nullable: true type: array new_lines: nullable: true type: integer new_start: nullable: true type: integer old_lines: nullable: true type: integer old_start: nullable: true type: integer type: enum: - text_editor_code_execution_str_replace_result type: string required: - lines - new_lines - new_start - old_lines - old_start - type type: object AnthropicTextEditorCodeExecutionToolResult: example: content: content: file content file_type: text num_lines: 10 start_line: 1 total_lines: 10 type: text_editor_code_execution_view_result tool_use_id: srvtoolu_01abc type: text_editor_code_execution_tool_result properties: content: $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionContent' tool_use_id: type: string type: enum: - text_editor_code_execution_tool_result type: string required: - type - content - tool_use_id type: object AnthropicTextEditorCodeExecutionToolResultError: example: error_code: unavailable error_message: null type: text_editor_code_execution_tool_result_error properties: error_code: enum: - invalid_tool_input - unavailable - too_many_requests - execution_time_exceeded - file_not_found type: string error_message: nullable: true type: string type: enum: - text_editor_code_execution_tool_result_error type: string required: - error_code - error_message - type type: object AnthropicTextEditorCodeExecutionViewResult: example: content: file content file_type: text num_lines: 10 start_line: 1 total_lines: 10 type: text_editor_code_execution_view_result properties: content: type: string file_type: enum: - text - image - pdf type: string num_lines: nullable: true type: integer start_line: nullable: true type: integer total_lines: nullable: true type: integer type: enum: - text_editor_code_execution_view_result type: string required: - content - file_type - num_lines - start_line - total_lines - type type: object AnthropicThinkingBlock: example: signature: sig_abc123 thinking: Let me think about this... type: thinking properties: signature: type: string thinking: type: string type: enum: - thinking type: string required: - type - thinking - signature type: object AnthropicThinkingDisplay: enum: - summarized - omitted - null example: summarized nullable: true type: string AnthropicThinkingTurns: example: type: thinking_turns value: 3 properties: type: enum: - thinking_turns type: string value: type: integer required: - type - value type: object AnthropicToolReference: example: tool_name: my_tool type: tool_reference properties: tool_name: type: string type: enum: - tool_reference type: string required: - tool_name - type type: object AnthropicToolSearchContent: discriminator: mapping: tool_search_tool_result_error: '#/components/schemas/AnthropicToolSearchResultError' tool_search_tool_search_result: '#/components/schemas/AnthropicToolSearchResult' propertyName: type example: tool_references: - tool_name: my_tool type: tool_reference type: tool_search_tool_search_result oneOf: - $ref: '#/components/schemas/AnthropicToolSearchResultError' - $ref: '#/components/schemas/AnthropicToolSearchResult' AnthropicToolSearchResult: example: tool_references: - tool_name: my_tool type: tool_reference type: tool_search_tool_search_result properties: tool_references: items: $ref: '#/components/schemas/AnthropicToolReference' type: array type: enum: - tool_search_tool_search_result type: string required: - tool_references - type type: object AnthropicToolSearchResultError: example: error_code: unavailable error_message: null type: tool_search_tool_result_error properties: error_code: $ref: '#/components/schemas/AnthropicServerToolErrorCode' error_message: nullable: true type: string type: enum: - tool_search_tool_result_error type: string required: - error_code - error_message - type type: object AnthropicToolSearchToolResult: example: content: tool_references: - tool_name: my_tool type: tool_reference type: tool_search_tool_search_result tool_use_id: srvtoolu_01abc type: tool_search_tool_result properties: content: $ref: '#/components/schemas/AnthropicToolSearchContent' tool_use_id: type: string type: enum: - tool_search_tool_result type: string required: - type - content - tool_use_id type: object AnthropicToolUseBlock: example: caller: type: direct id: toolu_01abc input: location: San Francisco name: get_weather type: tool_use properties: caller: $ref: '#/components/schemas/AnthropicCaller' id: type: string input: nullable: true name: type: string type: enum: - tool_use type: string required: - type - id - caller - name type: object AnthropicToolUsesKeep: example: type: tool_uses value: 5 properties: type: enum: - tool_uses type: string value: type: integer required: - type - value type: object AnthropicToolUsesTrigger: example: type: tool_uses value: 10 properties: type: enum: - tool_uses type: string value: type: integer required: - type - value type: object AnthropicUnknownUsageIteration: allOf: - $ref: '#/components/schemas/AnthropicBaseUsageIteration' - properties: type: type: string required: - type type: object example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 100 output_tokens: 50 type: unknown AnthropicUrlImageSource: example: type: url url: https://example.com/image.jpg properties: type: enum: - url type: string url: type: string required: - type - url type: object AnthropicUrlPdfSource: example: type: url url: https://example.com/document.pdf properties: type: enum: - url type: string url: type: string required: - type - url type: object AnthropicUsage: example: cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null inference_geo: null input_tokens: 100 output_tokens: 50 server_tool_use: null service_tier: standard properties: cache_creation: $ref: '#/components/schemas/AnthropicCacheCreation' cache_creation_input_tokens: nullable: true type: integer cache_read_input_tokens: nullable: true type: integer inference_geo: nullable: true type: string input_tokens: type: integer output_tokens: type: integer server_tool_use: $ref: '#/components/schemas/AnthropicServerToolUsage' service_tier: $ref: '#/components/schemas/AnthropicServiceTier' required: - input_tokens - output_tokens - cache_creation_input_tokens - cache_read_input_tokens - cache_creation - inference_geo - server_tool_use - service_tier type: object AnthropicUsageIteration: anyOf: - $ref: '#/components/schemas/AnthropicCompactionUsageIteration' - $ref: '#/components/schemas/AnthropicMessageUsageIteration' - $ref: '#/components/schemas/AnthropicUnknownUsageIteration' example: cache_creation: null cache_creation_input_tokens: 0 cache_read_input_tokens: 0 input_tokens: 100 output_tokens: 50 type: message AnthropicWebFetchBlock: example: content: citations: null source: data: '' media_type: text/plain type: text title: null type: document retrieved_at: null type: web_fetch_result url: https://example.com properties: content: $ref: '#/components/schemas/AnthropicDocumentBlock' retrieved_at: nullable: true type: string type: enum: - web_fetch_result type: string url: type: string required: - content - retrieved_at - type - url type: object AnthropicWebFetchContent: discriminator: mapping: web_fetch_result: '#/components/schemas/AnthropicWebFetchBlock' web_fetch_tool_result_error: '#/components/schemas/AnthropicWebFetchToolResultError' propertyName: type example: content: citations: null source: data: '' media_type: text/plain type: text title: null type: document retrieved_at: null type: web_fetch_result url: https://example.com oneOf: - $ref: '#/components/schemas/AnthropicWebFetchToolResultError' - $ref: '#/components/schemas/AnthropicWebFetchBlock' AnthropicWebFetchToolResult: example: caller: type: direct content: content: citations: null source: data: '' media_type: text/plain type: text title: null type: document retrieved_at: null type: web_fetch_result url: https://example.com tool_use_id: srvtoolu_01abc type: web_fetch_tool_result properties: caller: $ref: '#/components/schemas/AnthropicCaller' content: $ref: '#/components/schemas/AnthropicWebFetchContent' tool_use_id: type: string type: enum: - web_fetch_tool_result type: string required: - type - caller - content - tool_use_id type: object AnthropicWebFetchToolResultError: example: error_code: unavailable type: web_fetch_tool_result_error properties: error_code: enum: - invalid_tool_input - url_too_long - url_not_allowed - url_not_accessible - unsupported_content_type - too_many_requests - max_uses_exceeded - unavailable type: string type: enum: - web_fetch_tool_result_error type: string required: - type - error_code type: object AnthropicWebSearchResult: example: encrypted_content: enc_content_0 page_age: null title: Example Page type: web_search_result url: https://example.com properties: encrypted_content: type: string page_age: nullable: true type: string title: type: string type: enum: - web_search_result type: string url: type: string required: - type - encrypted_content - page_age - title - url type: object AnthropicWebSearchResultBlockParam: example: encrypted_content: enc_content_0 title: Example Page type: web_search_result url: https://example.com properties: encrypted_content: type: string page_age: nullable: true type: string title: type: string type: enum: - web_search_result type: string url: type: string required: - type - encrypted_content - title - url type: object AnthropicWebSearchToolResult: example: caller: type: direct content: [] tool_use_id: srvtoolu_01abc type: web_search_tool_result properties: caller: $ref: '#/components/schemas/AnthropicCaller' content: anyOf: - items: $ref: '#/components/schemas/AnthropicWebSearchResult' type: array - $ref: '#/components/schemas/AnthropicWebSearchToolResultError' tool_use_id: type: string type: enum: - web_search_tool_result type: string required: - type - caller - tool_use_id - content type: object AnthropicWebSearchToolResultError: example: error_code: unavailable type: web_search_tool_result_error properties: error_code: enum: - invalid_tool_input - unavailable - max_uses_exceeded - too_many_requests - query_too_long - request_too_large type: string type: enum: - web_search_tool_result_error type: string required: - type - error_code type: object AnthropicWebSearchToolUserLocation: example: city: San Francisco country: US region: California timezone: America/Los_Angeles type: approximate nullable: true properties: city: nullable: true type: string country: nullable: true type: string region: nullable: true type: string timezone: nullable: true type: string type: enum: - approximate type: string required: - type type: object ApplyPatchServerTool: description: Apply patch tool configuration example: type: apply_patch properties: type: enum: - apply_patch type: string required: - type type: object AutoRouterPlugin: example: allowed_models: - anthropic/* - openai/gpt-4o enabled: true id: auto-router properties: allowed_models: description: >- List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., "anthropic/*" matches all Anthropic models). When not specified, uses the default supported models list. example: - anthropic/* - openai/gpt-4o - google/* items: type: string type: array enabled: description: Set to false to disable the auto-router plugin for this request. Defaults to true. type: boolean id: enum: - auto-router type: string required: - id type: object BadGatewayResponse: description: Bad Gateway - Provider/upstream API failure example: error: code: 502 message: Provider returned error properties: error: $ref: '#/components/schemas/BadGatewayResponseErrorData' user_id: nullable: true type: string required: - error type: object BadGatewayResponseErrorData: description: Error data for BadGatewayResponse example: code: 502 message: Provider returned error properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object BadRequestResponse: description: Bad Request - Invalid request parameters or malformed input example: error: code: 400 message: Invalid request parameters properties: error: $ref: '#/components/schemas/BadRequestResponseErrorData' user_id: nullable: true type: string required: - error type: object BadRequestResponseErrorData: description: Error data for BadRequestResponse example: code: 400 message: Invalid request parameters properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object BaseAnnotationAddedEvent: description: Event emitted when a text annotation is added to output example: annotation: end_index: 7 start_index: 0 title: Example type: url_citation url: https://example.com annotation_index: 0 content_index: 0 item_id: item-1 output_index: 0 sequence_number: 5 type: response.output_text.annotation.added properties: annotation: $ref: '#/components/schemas/OpenAIResponsesAnnotation' annotation_index: type: integer content_index: type: integer item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.output_text.annotation.added type: string required: - type - output_index - item_id - content_index - sequence_number - annotation_index - annotation type: object BaseContentPartAddedEvent: description: Event emitted when a new content part is added to an output item example: content_index: 0 item_id: item-1 output_index: 0 part: annotations: [] text: '' type: output_text sequence_number: 3 type: response.content_part.added properties: content_index: type: integer item_id: type: string output_index: type: integer part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: integer type: enum: - response.content_part.added type: string required: - type - output_index - item_id - content_index - part - sequence_number type: object BaseContentPartDoneEvent: description: Event emitted when a content part is complete example: content_index: 0 item_id: item-1 output_index: 0 part: annotations: [] text: Hello! How can I help you? type: output_text sequence_number: 7 type: response.content_part.done properties: content_index: type: integer item_id: type: string output_index: type: integer part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' sequence_number: type: integer type: enum: - response.content_part.done type: string required: - type - output_index - item_id - content_index - part - sequence_number type: object BaseErrorEvent: description: Event emitted when an error occurs during streaming example: code: rate_limit_exceeded message: Rate limit exceeded. Please try again later. param: null sequence_number: 2 type: error properties: code: nullable: true type: string message: type: string param: nullable: true type: string sequence_number: type: integer type: enum: - error type: string required: - type - code - message - param - sequence_number type: object BaseFunctionCallArgsDeltaEvent: description: Event emitted when function call arguments are being streamed example: delta: '{"city": "..."}' item_id: item-1 output_index: 0 sequence_number: 4 type: response.function_call_arguments.delta properties: delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.function_call_arguments.delta type: string required: - type - item_id - output_index - delta - sequence_number type: object BaseFunctionCallArgsDoneEvent: description: Event emitted when function call arguments streaming is complete example: arguments: '{"city": "San Francisco", "units": "celsius"}' item_id: item-1 name: get_weather output_index: 0 sequence_number: 6 type: response.function_call_arguments.done properties: arguments: type: string item_id: type: string name: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.function_call_arguments.done type: string required: - type - item_id - output_index - name - arguments - sequence_number type: object BaseInputs: anyOf: - type: string - items: anyOf: - properties: content: anyOf: - items: discriminator: mapping: input_audio: '#/components/schemas/InputAudio' input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' propertyName: type oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' type: array - type: string phase: anyOf: - enum: - commentary type: string - enum: - final_answer type: string - nullable: true role: anyOf: - enum: - user type: string - enum: - system type: string - enum: - assistant type: string - enum: - developer type: string type: enum: - message type: string required: - role - content type: object - $ref: '#/components/schemas/OpenAIResponseInputMessageItem' - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' - $ref: '#/components/schemas/OutputMessage' type: array - nullable: true example: - content: What is the weather today? role: user BaseMessagesResult: description: Base Anthropic Messages API response before OpenRouter extensions example: container: null content: - citations: null text: Hello! type: text id: msg_01XFDUDYJgAACzvnptvVoYEL model: claude-sonnet-4-5-20250929 role: assistant stop_details: null stop_reason: end_turn stop_sequence: null type: message usage: cache_creation_input_tokens: null cache_read_input_tokens: null input_tokens: 12 output_tokens: 8 properties: container: $ref: '#/components/schemas/AnthropicContainer' content: items: $ref: '#/components/schemas/ORAnthropicContentBlock' type: array id: type: string model: type: string role: enum: - assistant type: string stop_details: $ref: '#/components/schemas/AnthropicRefusalStopDetails' stop_reason: $ref: '#/components/schemas/ORAnthropicStopReason' stop_sequence: nullable: true type: string type: enum: - message type: string usage: allOf: - $ref: '#/components/schemas/AnthropicUsage' - properties: iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' type: array speed: $ref: '#/components/schemas/AnthropicSpeed' type: object example: cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null inference_geo: null input_tokens: 100 output_tokens: 50 server_tool_use: null service_tier: standard required: - id - type - role - container - content - model - stop_reason - stop_details - stop_sequence - usage type: object BaseReasoningConfig: example: effort: medium summary: auto nullable: true properties: effort: $ref: '#/components/schemas/ReasoningEffort' summary: $ref: '#/components/schemas/ReasoningSummaryVerbosity' type: object BaseReasoningDeltaEvent: description: Event emitted when reasoning text delta is streamed example: content_index: 0 delta: First, we need item_id: item-1 output_index: 0 sequence_number: 4 type: response.reasoning_text.delta properties: content_index: type: integer delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.reasoning_text.delta type: string required: - type - output_index - item_id - content_index - delta - sequence_number type: object BaseReasoningDoneEvent: description: Event emitted when reasoning text streaming is complete example: content_index: 0 item_id: item-1 output_index: 0 sequence_number: 6 text: First, we need to identify the key components and then combine them logically. type: response.reasoning_text.done properties: content_index: type: integer item_id: type: string output_index: type: integer sequence_number: type: integer text: type: string type: enum: - response.reasoning_text.done type: string required: - type - output_index - item_id - content_index - text - sequence_number type: object BaseReasoningSummaryPartAddedEvent: description: Event emitted when a reasoning summary part is added example: item_id: item-1 output_index: 0 part: text: '' type: summary_text sequence_number: 3 summary_index: 0 type: response.reasoning_summary_part.added properties: item_id: type: string output_index: type: integer part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: integer summary_index: type: integer type: enum: - response.reasoning_summary_part.added type: string required: - type - output_index - item_id - summary_index - part - sequence_number type: object BaseReasoningSummaryPartDoneEvent: description: Event emitted when a reasoning summary part is complete example: item_id: item-1 output_index: 0 part: text: Analyzing the problem step by step to find the optimal solution. type: summary_text sequence_number: 7 summary_index: 0 type: response.reasoning_summary_part.done properties: item_id: type: string output_index: type: integer part: $ref: '#/components/schemas/ReasoningSummaryText' sequence_number: type: integer summary_index: type: integer type: enum: - response.reasoning_summary_part.done type: string required: - type - output_index - item_id - summary_index - part - sequence_number type: object BaseReasoningSummaryTextDeltaEvent: description: Event emitted when reasoning summary text delta is streamed example: delta: Analyzing item_id: item-1 output_index: 0 sequence_number: 4 summary_index: 0 type: response.reasoning_summary_text.delta properties: delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer summary_index: type: integer type: enum: - response.reasoning_summary_text.delta type: string required: - type - item_id - output_index - summary_index - delta - sequence_number type: object BaseReasoningSummaryTextDoneEvent: description: Event emitted when reasoning summary text streaming is complete example: item_id: item-1 output_index: 0 sequence_number: 6 summary_index: 0 text: Analyzing the problem step by step to find the optimal solution. type: response.reasoning_summary_text.done properties: item_id: type: string output_index: type: integer sequence_number: type: integer summary_index: type: integer text: type: string type: enum: - response.reasoning_summary_text.done type: string required: - type - item_id - output_index - summary_index - text - sequence_number type: object BaseRefusalDeltaEvent: description: Event emitted when a refusal delta is streamed example: content_index: 0 delta: I'm sorry item_id: item-1 output_index: 0 sequence_number: 4 type: response.refusal.delta properties: content_index: type: integer delta: type: string item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.refusal.delta type: string required: - type - output_index - item_id - content_index - delta - sequence_number type: object BaseRefusalDoneEvent: description: Event emitted when refusal streaming is complete example: content_index: 0 item_id: item-1 output_index: 0 refusal: I'm sorry, but I can't assist with that request. sequence_number: 6 type: response.refusal.done properties: content_index: type: integer item_id: type: string output_index: type: integer refusal: type: string sequence_number: type: integer type: enum: - response.refusal.done type: string required: - type - output_index - item_id - content_index - refusal - sequence_number type: object BaseResponsesResult: example: completed_at: 1704067210 created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: completed temperature: null tool_choice: auto tools: [] top_p: null properties: background: nullable: true type: boolean completed_at: nullable: true type: integer created_at: type: integer error: $ref: '#/components/schemas/ResponsesErrorField' frequency_penalty: format: double nullable: true type: number id: type: string incomplete_details: $ref: '#/components/schemas/IncompleteDetails' instructions: $ref: '#/components/schemas/BaseInputs' max_output_tokens: nullable: true type: integer max_tool_calls: nullable: true type: integer metadata: $ref: '#/components/schemas/RequestMetadata' model: type: string object: enum: - response type: string output: items: discriminator: mapping: file_search_call: '#/components/schemas/OutputItemFileSearchCall' function_call: '#/components/schemas/OutputItemFunctionCall' image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' propertyName: type oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' - $ref: '#/components/schemas/OutputItemFunctionCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' type: array output_text: type: string parallel_tool_calls: type: boolean presence_penalty: format: double nullable: true type: number previous_response_id: nullable: true type: string prompt: $ref: '#/components/schemas/StoredPromptTemplate' prompt_cache_key: nullable: true type: string reasoning: $ref: '#/components/schemas/BaseReasoningConfig' safety_identifier: nullable: true type: string service_tier: $ref: '#/components/schemas/ServiceTier' status: $ref: '#/components/schemas/OpenAIResponsesResponseStatus' store: type: boolean temperature: format: double nullable: true type: number text: $ref: '#/components/schemas/TextConfig' tool_choice: $ref: '#/components/schemas/OpenAIResponsesToolChoice' tools: items: oneOf: - allOf: - $ref: '#/components/schemas/FunctionTool' - properties: {} type: object description: Function tool definition example: description: Get the current weather in a location name: get_weather parameters: properties: location: description: The city and state type: string unit: enum: - celsius - fahrenheit type: string required: - location type: object type: function - $ref: '#/components/schemas/Preview_WebSearchServerTool' - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - $ref: '#/components/schemas/Legacy_WebSearchServerTool' - $ref: '#/components/schemas/WebSearchServerTool' - $ref: '#/components/schemas/FileSearchServerTool' - $ref: '#/components/schemas/ComputerUseServerTool' - $ref: '#/components/schemas/CodeInterpreterServerTool' - $ref: '#/components/schemas/McpServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool' - $ref: '#/components/schemas/CodexLocalShellTool' - $ref: '#/components/schemas/ShellServerTool' - $ref: '#/components/schemas/ApplyPatchServerTool' - $ref: '#/components/schemas/CustomTool' type: array top_logprobs: type: integer top_p: format: double nullable: true type: number truncation: $ref: '#/components/schemas/Truncation' usage: $ref: '#/components/schemas/OpenAIResponsesUsage' user: nullable: true type: string required: - id - object - created_at - model - status - completed_at - output - error - incomplete_details - temperature - top_p - presence_penalty - frequency_penalty - instructions - metadata - tools - tool_choice - parallel_tool_calls type: object BaseTextDeltaEvent: description: Event emitted when a text delta is streamed example: content_index: 0 delta: Hello item_id: item-1 logprobs: [] output_index: 0 sequence_number: 4 type: response.output_text.delta properties: content_index: type: integer delta: type: string item_id: type: string logprobs: items: $ref: '#/components/schemas/OpenResponsesLogProbs' type: array output_index: type: integer sequence_number: type: integer type: enum: - response.output_text.delta type: string required: - type - logprobs - output_index - item_id - content_index - delta - sequence_number type: object BaseTextDoneEvent: description: Event emitted when text streaming is complete example: content_index: 0 item_id: item-1 logprobs: [] output_index: 0 sequence_number: 6 text: Hello! How can I help you? type: response.output_text.done properties: content_index: type: integer item_id: type: string logprobs: items: $ref: '#/components/schemas/OpenResponsesLogProbs' type: array output_index: type: integer sequence_number: type: integer text: type: string type: enum: - response.output_text.done type: string required: - type - output_index - item_id - content_index - text - sequence_number - logprobs type: object BigNumberUnion: description: Price per million prompt tokens example: 1000 type: string BulkAddWorkspaceMembersRequest: example: user_ids: - user_abc123 - user_def456 properties: user_ids: description: List of user IDs to add to the workspace. Members are assigned the same role they hold in the organization. example: - user_abc123 - user_def456 items: type: string maxItems: 100 minItems: 1 type: array required: - user_ids type: object BulkAddWorkspaceMembersResponse: example: added_count: 1 data: - created_at: '2025-08-24T10:30:00Z' id: 660e8400-e29b-41d4-a716-446655440000 role: member user_id: user_abc123 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: added_count: description: Number of workspace memberships created or updated example: 2 type: integer data: description: List of added workspace memberships items: $ref: '#/components/schemas/WorkspaceMember' type: array required: - data - added_count type: object BulkAssignKeysRequest: example: key_hashes: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 properties: key_hashes: description: Array of API key hashes to assign to the guardrail example: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 items: minLength: 1 type: string minItems: 1 type: array required: - key_hashes type: object BulkAssignKeysResponse: example: assigned_count: 3 properties: assigned_count: description: Number of keys successfully assigned example: 3 type: integer required: - assigned_count type: object BulkAssignMembersRequest: example: member_user_ids: - user_abc123 - user_def456 properties: member_user_ids: description: Array of member user IDs to assign to the guardrail example: - user_abc123 - user_def456 items: minLength: 1 type: string minItems: 1 type: array required: - member_user_ids type: object BulkAssignMembersResponse: example: assigned_count: 2 properties: assigned_count: description: Number of members successfully assigned example: 2 type: integer required: - assigned_count type: object BulkRemoveWorkspaceMembersRequest: example: user_ids: - user_abc123 - user_def456 properties: user_ids: description: List of user IDs to remove from the workspace example: - user_abc123 - user_def456 items: type: string maxItems: 100 minItems: 1 type: array required: - user_ids type: object BulkRemoveWorkspaceMembersResponse: example: removed_count: 2 properties: removed_count: description: Number of members removed example: 2 type: integer required: - removed_count type: object BulkUnassignKeysRequest: example: key_hashes: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 properties: key_hashes: description: Array of API key hashes to unassign from the guardrail example: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 items: minLength: 1 type: string minItems: 1 type: array required: - key_hashes type: object BulkUnassignKeysResponse: example: unassigned_count: 3 properties: unassigned_count: description: Number of keys successfully unassigned example: 3 type: integer required: - unassigned_count type: object BulkUnassignMembersRequest: example: member_user_ids: - user_abc123 - user_def456 properties: member_user_ids: description: Array of member user IDs to unassign from the guardrail example: - user_abc123 - user_def456 items: minLength: 1 type: string minItems: 1 type: array required: - member_user_ids type: object BulkUnassignMembersResponse: example: unassigned_count: 2 properties: unassigned_count: description: Number of members successfully unassigned example: 2 type: integer required: - unassigned_count type: object ChatAssistantImages: description: Generated images from image generation models example: - image_url: url: data:image/png;base64,iVBORw0KGgo... items: properties: image_url: properties: url: description: URL or base64-encoded data of the generated image type: string required: - url type: object required: - image_url type: object type: array ChatAssistantMessage: description: Assistant message for requests and responses example: content: The capital of France is Paris. role: assistant properties: audio: $ref: '#/components/schemas/ChatAudioOutput' content: anyOf: - type: string - items: $ref: '#/components/schemas/ChatContentItems' type: array - nullable: true description: Assistant message content images: $ref: '#/components/schemas/ChatAssistantImages' name: description: Optional name for the assistant type: string reasoning: description: Reasoning output nullable: true type: string reasoning_details: $ref: '#/components/schemas/ChatReasoningDetails' refusal: description: Refusal message if content was refused nullable: true type: string role: enum: - assistant type: string tool_calls: description: Tool calls made by the assistant items: $ref: '#/components/schemas/ChatToolCall' type: array required: - role type: object ChatAudioOutput: description: Audio output data or reference example: data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f expires_at: 1677652400 id: audio_abc123 transcript: Hello! How can I help you today? properties: data: description: Base64 encoded audio data type: string expires_at: description: Audio expiration timestamp type: integer id: description: Audio output identifier type: string transcript: description: Audio transcript type: string type: object ChatChoice: description: Chat completion choice example: finish_reason: stop index: 0 logprobs: null message: content: The capital of France is Paris. role: assistant properties: finish_reason: $ref: '#/components/schemas/ChatFinishReasonEnum' index: description: Choice index example: 0 type: integer logprobs: $ref: '#/components/schemas/ChatTokenLogprobs' message: $ref: '#/components/schemas/ChatAssistantMessage' required: - finish_reason - index - message type: object ChatContentAudio: description: Audio input content part. Supported audio formats vary by provider. example: input_audio: data: SGVsbG8gV29ybGQ= format: wav type: input_audio properties: input_audio: properties: data: description: Base64 encoded audio data type: string format: description: >- Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by provider. type: string required: - data - format type: object type: enum: - input_audio type: string required: - type - input_audio type: object ChatContentCacheControl: allOf: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - properties: {} type: object description: Cache control for the content part example: ttl: 5m type: ephemeral ChatContentFile: description: File content part for document processing example: file: file_data: https://example.com/document.pdf filename: document.pdf type: file properties: file: properties: file_data: description: File content as base64 data URL or URL type: string file_id: description: File ID for previously uploaded files type: string filename: description: Original filename type: string type: object type: enum: - file type: string required: - type - file type: object ChatContentImage: description: Image content part for vision models example: image_url: detail: auto url: https://example.com/image.jpg type: image_url properties: image_url: properties: detail: description: Image detail level for vision models enum: - auto - low - high type: string url: description: 'URL of the image (data: URLs supported)' type: string required: - url type: object type: enum: - image_url type: string required: - type - image_url type: object ChatContentItems: description: Content part for chat completion messages discriminator: mapping: file: '#/components/schemas/ChatContentFile' image_url: '#/components/schemas/ChatContentImage' input_audio: '#/components/schemas/ChatContentAudio' input_video: '#/components/schemas/Legacy_ChatContentVideo' text: '#/components/schemas/ChatContentText' video_url: '#/components/schemas/ChatContentVideo' propertyName: type example: text: Hello, world! type: text oneOf: - $ref: '#/components/schemas/ChatContentText' - $ref: '#/components/schemas/ChatContentImage' - $ref: '#/components/schemas/ChatContentAudio' - $ref: '#/components/schemas/Legacy_ChatContentVideo' - $ref: '#/components/schemas/ChatContentVideo' - $ref: '#/components/schemas/ChatContentFile' ChatContentText: description: Text content part example: text: Hello, world! type: text properties: cache_control: $ref: '#/components/schemas/ChatContentCacheControl' text: type: string type: enum: - text type: string required: - type - text type: object ChatContentVideo: description: Video input content part example: type: video_url video_url: url: https://example.com/video.mp4 properties: type: enum: - video_url type: string video_url: $ref: '#/components/schemas/ChatContentVideoInput' required: - type - video_url type: object ChatContentVideoInput: description: Video input object example: url: https://example.com/video.mp4 properties: url: description: 'URL of the video (data: URLs supported)' type: string required: - url type: object ChatDebugOptions: description: Debug options for inspecting request transformations (streaming only) example: echo_upstream_body: true properties: echo_upstream_body: description: >- If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only works with streaming mode. example: true type: boolean type: object ChatDeveloperMessage: description: Developer message example: content: This is a message from the developer. role: developer properties: content: anyOf: - type: string - items: $ref: '#/components/schemas/ChatContentText' type: array description: Developer message content example: This is a message from the developer. name: description: Optional name for the developer message example: Developer type: string role: enum: - developer type: string required: - role - content type: object ChatFinishReasonEnum: enum: - tool_calls - stop - length - content_filter - error - null example: stop nullable: true type: string ChatFormatGrammarConfig: description: Custom grammar response format example: grammar: root ::= "yes" | "no" type: grammar properties: grammar: description: Custom grammar for text generation example: root ::= "yes" | "no" type: string type: enum: - grammar type: string required: - type - grammar type: object ChatFormatJsonSchemaConfig: description: JSON Schema response format for structured outputs example: json_schema: name: math_response schema: properties: answer: type: number required: - answer type: object type: json_schema properties: json_schema: $ref: '#/components/schemas/ChatJsonSchemaConfig' type: enum: - json_schema type: string required: - type - json_schema type: object ChatFormatPythonConfig: description: Python code response format example: type: python properties: type: enum: - python type: string required: - type type: object ChatFormatTextConfig: description: Default text response format example: type: text properties: type: enum: - text type: string required: - type type: object ChatFunctionTool: anyOf: - properties: cache_control: $ref: '#/components/schemas/ChatContentCacheControl' function: description: Function definition for tool calling example: description: Get the current weather for a location name: get_weather parameters: properties: location: description: City name type: string required: - location type: object properties: description: description: Function description for the model example: Get the current weather for a location type: string name: description: Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) example: get_weather maxLength: 64 type: string parameters: additionalProperties: nullable: true description: Function parameters as JSON Schema object example: properties: location: description: City name type: string required: - location type: object type: object strict: description: Enable strict schema adherence example: false nullable: true type: boolean required: - name type: object type: enum: - function type: string required: - type - function type: object - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - $ref: '#/components/schemas/ChatWebSearchShorthand' description: Tool definition for function calling (regular function or OpenRouter built-in server tool) example: function: description: Get the current weather for a location name: get_weather parameters: properties: location: description: City name type: string unit: enum: - celsius - fahrenheit type: string required: - location type: object type: function ChatJsonSchemaConfig: description: JSON Schema configuration object example: description: A mathematical response name: math_response schema: properties: answer: type: number required: - answer type: object strict: true properties: description: description: Schema description for the model example: A mathematical response type: string name: description: Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) example: math_response maxLength: 64 type: string schema: additionalProperties: nullable: true description: JSON Schema object example: properties: answer: type: number required: - answer type: object type: object strict: description: Enable strict schema adherence example: false nullable: true type: boolean required: - name type: object ChatMessages: description: Chat completion message with role-based discrimination discriminator: mapping: assistant: '#/components/schemas/ChatAssistantMessage' developer: '#/components/schemas/ChatDeveloperMessage' system: '#/components/schemas/ChatSystemMessage' tool: '#/components/schemas/ChatToolMessage' user: '#/components/schemas/ChatUserMessage' propertyName: role example: content: What is the capital of France? role: user oneOf: - $ref: '#/components/schemas/ChatSystemMessage' - $ref: '#/components/schemas/ChatUserMessage' - $ref: '#/components/schemas/ChatDeveloperMessage' - $ref: '#/components/schemas/ChatAssistantMessage' - $ref: '#/components/schemas/ChatToolMessage' ChatModelNames: description: Models to use for completion example: - openai/gpt-4 - openai/gpt-4o items: allOf: - $ref: '#/components/schemas/ModelName' - description: Available OpenRouter chat completion models type: array ChatNamedToolChoice: description: Named tool choice for specific function example: function: name: get_weather type: function properties: function: properties: name: description: Function name to call example: get_weather type: string required: - name type: object type: enum: - function type: string required: - type - function type: object ChatReasoningDetails: description: Reasoning details for extended thinking models example: - thinking: Let me work through this step by step... type: thinking items: $ref: '#/components/schemas/ReasoningDetailUnion' type: array ChatReasoningSummaryVerbosityEnum: enum: - auto - concise - detailed - null example: concise nullable: true type: string ChatRequest: description: Chat completion request parameters example: max_tokens: 150 messages: - content: You are a helpful assistant. role: system - content: What is the capital of France? role: user model: openai/gpt-4 temperature: 0.7 properties: cache_control: allOf: - $ref: '#/components/schemas/AnthropicCacheControlDirective' - description: >- Enable automatic prompt caching. When set, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. debug: $ref: '#/components/schemas/ChatDebugOptions' frequency_penalty: description: Frequency penalty (-2.0 to 2.0) example: 0 format: double nullable: true type: number image_config: $ref: '#/components/schemas/ImageConfig' logit_bias: additionalProperties: format: double type: number description: Token logit bias adjustments example: '50256': -100 nullable: true type: object logprobs: description: Return log probabilities example: false nullable: true type: boolean max_completion_tokens: description: Maximum tokens in completion example: 100 nullable: true type: integer max_tokens: description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.' example: 100 nullable: true type: integer messages: description: List of messages for the conversation example: - content: Hello! role: user items: $ref: '#/components/schemas/ChatMessages' minItems: 1 type: array metadata: additionalProperties: type: string description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) example: session_id: session-456 user_id: user-123 type: object modalities: description: Output modalities for the response. Supported values are "text", "image", and "audio". example: - text - image items: enum: - text - image - audio type: string type: array model: $ref: '#/components/schemas/ModelName' models: $ref: '#/components/schemas/ChatModelNames' parallel_tool_calls: description: >- Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. example: true nullable: true type: boolean plugins: description: Plugins you want to enable for this request, including their settings. items: discriminator: mapping: auto-router: '#/components/schemas/AutoRouterPlugin' context-compression: '#/components/schemas/ContextCompressionPlugin' file-parser: '#/components/schemas/FileParserPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' type: array presence_penalty: description: Presence penalty (-2.0 to 2.0) example: 0 format: double nullable: true type: number provider: $ref: '#/components/schemas/ProviderPreferences' reasoning: description: Configuration options for reasoning models example: effort: medium summary: concise properties: effort: description: Constrains effort on reasoning for reasoning models enum: - xhigh - high - medium - low - minimal - none - null example: medium nullable: true type: string summary: $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum' type: object response_format: description: Response format configuration discriminator: mapping: grammar: '#/components/schemas/ChatFormatGrammarConfig' json_object: '#/components/schemas/FormatJsonObjectConfig' json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig' python: '#/components/schemas/ChatFormatPythonConfig' text: '#/components/schemas/ChatFormatTextConfig' propertyName: type example: type: json_object oneOf: - $ref: '#/components/schemas/ChatFormatTextConfig' - $ref: '#/components/schemas/FormatJsonObjectConfig' - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig' - $ref: '#/components/schemas/ChatFormatGrammarConfig' - $ref: '#/components/schemas/ChatFormatPythonConfig' route: $ref: '#/components/schemas/DeprecatedRoute' seed: description: Random seed for deterministic outputs example: 42 nullable: true type: integer service_tier: description: The service tier to use for processing this request. enum: - auto - default - flex - priority - scale - null example: auto nullable: true type: string session_id: description: >- A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for observability. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. maxLength: 256 type: string stop: anyOf: - type: string - items: type: string maxItems: 4 type: array - nullable: true description: Stop sequences (up to 4) example: - |+ stream: default: false description: Enable streaming response example: false type: boolean stream_options: $ref: '#/components/schemas/ChatStreamOptions' temperature: description: Sampling temperature (0-2) example: 0.7 format: double nullable: true type: number tool_choice: $ref: '#/components/schemas/ChatToolChoice' tools: description: Available tools for function calling example: - function: description: Get weather name: get_weather type: function items: $ref: '#/components/schemas/ChatFunctionTool' type: array top_logprobs: description: Number of top log probabilities to return (0-20) example: 5 nullable: true type: integer top_p: description: Nucleus sampling parameter (0-1) example: 1 format: double nullable: true type: number trace: $ref: '#/components/schemas/TraceConfig' user: description: Unique user identifier example: user-123 type: string required: - messages type: object ChatResult: description: Chat completion response example: choices: - finish_reason: stop index: 0 message: content: The capital of France is Paris. role: assistant created: 1677652288 id: chatcmpl-123 model: openai/gpt-4 object: chat.completion usage: completion_tokens: 15 prompt_tokens: 10 total_tokens: 25 properties: choices: description: List of completion choices items: $ref: '#/components/schemas/ChatChoice' type: array created: description: Unix timestamp of creation example: 1677652288 type: integer id: description: Unique completion identifier example: chatcmpl-123 type: string model: description: Model used for completion example: openai/gpt-4 type: string object: enum: - chat.completion type: string service_tier: description: The service tier used by the upstream provider for this request example: default nullable: true type: string system_fingerprint: description: System fingerprint example: fp_44709d6fcb nullable: true type: string usage: $ref: '#/components/schemas/ChatUsage' required: - id - choices - created - model - object - system_fingerprint type: object ChatSearchModelsServerTool: description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter' example: parameters: max_results: 5 type: openrouter:experimental__search_models properties: parameters: $ref: '#/components/schemas/SearchModelsServerToolConfig' type: enum: - openrouter:experimental__search_models type: string required: - type type: object ChatStreamChoice: description: Streaming completion choice chunk example: delta: content: Hello role: assistant finish_reason: null index: 0 properties: delta: $ref: '#/components/schemas/ChatStreamDelta' finish_reason: $ref: '#/components/schemas/ChatFinishReasonEnum' index: description: Choice index example: 0 type: integer logprobs: $ref: '#/components/schemas/ChatTokenLogprobs' required: - delta - finish_reason - index type: object ChatStreamChunk: description: Streaming chat completion chunk example: choices: - delta: content: Hello role: assistant finish_reason: null index: 0 created: 1677652288 id: chatcmpl-123 model: openai/gpt-4 object: chat.completion.chunk properties: choices: description: List of streaming chunk choices items: $ref: '#/components/schemas/ChatStreamChoice' type: array created: description: Unix timestamp of creation example: 1677652288 type: integer error: description: Error information example: code: 429 message: Rate limit exceeded properties: code: description: Error code example: 429 format: int32 type: integer message: description: Error message example: Rate limit exceeded type: string required: - message - code type: object id: description: Unique chunk identifier example: chatcmpl-123 type: string model: description: Model used for completion example: openai/gpt-4 type: string object: enum: - chat.completion.chunk type: string service_tier: description: The service tier used by the upstream provider for this request example: default nullable: true type: string system_fingerprint: description: System fingerprint example: fp_44709d6fcb type: string usage: $ref: '#/components/schemas/ChatUsage' required: - id - choices - created - model - object type: object x-speakeasy-entity: ChatStreamChunk ChatStreamDelta: description: Delta changes in streaming response example: content: Hello role: assistant properties: audio: allOf: - $ref: '#/components/schemas/ChatAudioOutput' - description: Audio output data content: description: Message content delta example: Hello nullable: true type: string reasoning: description: Reasoning content delta example: I need to nullable: true type: string reasoning_details: $ref: '#/components/schemas/ChatStreamReasoningDetails' refusal: description: Refusal message delta example: null nullable: true type: string role: description: The role of the message author enum: - assistant example: assistant type: string tool_calls: description: Tool calls delta items: $ref: '#/components/schemas/ChatStreamToolCall' type: array type: object ChatStreamOptions: description: Streaming configuration options example: include_usage: true nullable: true properties: include_usage: deprecated: true description: 'Deprecated: This field has no effect. Full usage details are always included.' example: true type: boolean type: object ChatStreamReasoningDetails: description: Reasoning details for extended thinking models example: - text: Let me think about this... type: text items: $ref: '#/components/schemas/ReasoningDetailUnion' type: array ChatStreamToolCall: description: Tool call delta for streaming responses example: function: arguments: '{"location": "..."}' name: get_weather id: call_abc123 index: 0 type: function properties: function: description: Function call details properties: arguments: description: Function arguments as JSON string example: '{"location": "..."}' type: string name: description: Function name example: get_weather type: string type: object id: description: Tool call identifier example: call_abc123 type: string index: description: Tool call index in the array example: 0 type: integer type: description: Tool call type enum: - function example: function type: string required: - index type: object ChatSystemMessage: description: System message for setting behavior example: content: You are a helpful assistant. name: Assistant Config role: system properties: content: anyOf: - type: string - items: $ref: '#/components/schemas/ChatContentText' type: array description: System message content example: You are a helpful assistant. name: description: Optional name for the system message example: Assistant Config type: string role: enum: - system type: string required: - role - content type: object ChatTokenLogprob: description: Token log probability information example: bytes: null logprob: -0.612345 token: ' Hello' top_logprobs: - bytes: null logprob: -0.612345 token: ' Hello' properties: bytes: description: UTF-8 bytes of the token items: type: integer nullable: true type: array logprob: description: Log probability of the token format: double type: number token: description: The token type: string top_logprobs: description: Top alternative tokens with probabilities items: properties: bytes: items: type: integer nullable: true type: array logprob: format: double type: number token: type: string required: - token - logprob - bytes type: object type: array required: - token - logprob - bytes - top_logprobs type: object ChatTokenLogprobs: description: Log probabilities for the completion example: content: - bytes: null logprob: -0.612345 token: ' Hello' top_logprobs: [] refusal: null nullable: true properties: content: description: Log probabilities for content tokens items: $ref: '#/components/schemas/ChatTokenLogprob' nullable: true type: array refusal: description: Log probabilities for refusal tokens items: $ref: '#/components/schemas/ChatTokenLogprob' nullable: true type: array required: - content type: object ChatToolCall: description: Tool call made by the assistant example: function: arguments: '{"location": "Boston, MA"}' name: get_current_weather id: call_abc123 type: function properties: function: properties: arguments: description: Function arguments as JSON string type: string name: description: Function name to call type: string required: - name - arguments type: object id: description: Tool call identifier type: string type: enum: - function type: string required: - id - type - function type: object ChatToolChoice: anyOf: - enum: - none type: string - enum: - auto type: string - enum: - required type: string - $ref: '#/components/schemas/ChatNamedToolChoice' description: Tool choice configuration example: auto ChatToolMessage: description: Tool response message example: content: The weather in San Francisco is 72°F and sunny. role: tool tool_call_id: call_abc123 properties: content: anyOf: - type: string - items: $ref: '#/components/schemas/ChatContentItems' type: array description: Tool response content example: The weather in San Francisco is 72°F and sunny. role: enum: - tool type: string tool_call_id: description: ID of the assistant message tool call this message responds to example: call_abc123 type: string required: - role - content - tool_call_id type: object ChatUsage: description: Token usage statistics example: completion_tokens: 15 completion_tokens_details: reasoning_tokens: 5 cost: 0.0012 cost_details: upstream_inference_completions_cost: 0.0004 upstream_inference_cost: null upstream_inference_prompt_cost: 0.0008 is_byok: false prompt_tokens: 10 prompt_tokens_details: cached_tokens: 2 total_tokens: 25 properties: completion_tokens: description: Number of tokens in the completion type: integer completion_tokens_details: description: Detailed completion token usage nullable: true properties: accepted_prediction_tokens: description: Accepted prediction tokens nullable: true type: integer audio_tokens: description: Tokens used for audio output nullable: true type: integer reasoning_tokens: description: Tokens used for reasoning nullable: true type: integer rejected_prediction_tokens: description: Rejected prediction tokens nullable: true type: integer type: object cost: description: Cost of the completion format: double nullable: true type: number cost_details: $ref: '#/components/schemas/CostDetails' is_byok: description: Whether a request was made using a Bring Your Own Key configuration type: boolean prompt_tokens: description: Number of tokens in the prompt type: integer prompt_tokens_details: description: Detailed prompt token usage nullable: true properties: audio_tokens: description: Audio input tokens type: integer cache_write_tokens: description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing. type: integer cached_tokens: description: Cached prompt tokens type: integer video_tokens: description: Video input tokens type: integer type: object total_tokens: description: Total number of tokens type: integer required: - completion_tokens - prompt_tokens - total_tokens type: object ChatUserMessage: description: User message example: content: What is the capital of France? role: user properties: content: anyOf: - type: string - items: $ref: '#/components/schemas/ChatContentItems' type: array description: User message content example: What is the capital of France? name: description: Optional name for the user example: User type: string role: enum: - user type: string required: - role - content type: object ChatWebSearchShorthand: description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search. example: type: web_search_preview properties: allowed_domains: description: >- Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, OpenAI, xAI). Not supported with Firecrawl or Perplexity. items: type: string type: array engine: $ref: '#/components/schemas/WebSearchEngineEnum' excluded_domains: description: >- Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported with Firecrawl, OpenAI (silently ignored), or Perplexity. items: type: string type: array max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer max_total_results: description: >- Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. example: 20 type: integer parameters: $ref: '#/components/schemas/WebSearchConfig' search_context_size: $ref: '#/components/schemas/SearchQualityLevel' type: enum: - web_search - web_search_preview - web_search_preview_2025_03_11 - web_search_2025_08_26 type: string user_location: $ref: '#/components/schemas/WebSearchUserLocationServerTool' required: - type type: object CodeInterpreterCallItem: description: A code interpreter execution call with outputs example: code: print("Hello, World!") container_id: container-xyz789 id: code-abc123 outputs: - logs: Hello, World! type: logs status: completed type: code_interpreter_call properties: code: nullable: true type: string container_id: type: string id: type: string outputs: items: anyOf: - properties: type: enum: - image type: string url: type: string required: - type - url type: object - properties: logs: type: string type: enum: - logs type: string required: - type - logs type: object nullable: true type: array status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - code_interpreter_call type: string required: - type - id - code - outputs - status - container_id type: object CodeInterpreterServerTool: description: Code interpreter tool configuration example: container: auto type: code_interpreter properties: container: anyOf: - type: string - properties: file_ids: items: type: string type: array memory_limit: enum: - 1g - 4g - 16g - 64g - null nullable: true type: string type: enum: - auto type: string required: - type type: object type: enum: - code_interpreter type: string required: - type - container type: object CodexLocalShellTool: description: Local shell tool configuration example: type: local_shell properties: type: enum: - local_shell type: string required: - type type: object CompletedEvent: description: Event emitted when a response has completed successfully example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: - content: - annotations: [] text: Hello! How can I help you? type: output_text id: item-1 role: assistant status: completed type: message parallel_tool_calls: true status: completed temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 10 type: response.completed properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: type: integer type: enum: - response.completed type: string required: - type - response - sequence_number type: object CompoundFilter: description: A compound filter that combines multiple comparison or compound filters example: filters: - key: author type: eq value: Alice type: and properties: filters: items: additionalProperties: nullable: true type: object type: array type: enum: - and - or type: string required: - type - filters type: object ComputerUseServerTool: description: Computer use preview tool configuration example: display_height: 768 display_width: 1024 environment: linux type: computer_use_preview properties: display_height: type: integer display_width: type: integer environment: enum: - windows - mac - linux - ubuntu - browser type: string type: enum: - computer_use_preview type: string required: - type - display_height - display_width - environment type: object ConflictResponse: description: Conflict - Resource conflict or concurrent modification example: error: code: 409 message: Resource conflict. Please try again later. properties: error: $ref: '#/components/schemas/ConflictResponseErrorData' user_id: nullable: true type: string required: - error type: object ConflictResponseErrorData: description: Error data for ConflictResponse example: code: 409 message: Resource conflict. Please try again later. properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object ContentPartAddedEvent: allOf: - $ref: '#/components/schemas/BaseContentPartAddedEvent' - properties: part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/ReasoningTextContent' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' type: object description: Event emitted when a new content part is added to an output item example: content_index: 0 item_id: item-1 output_index: 0 part: annotations: [] text: '' type: output_text sequence_number: 3 type: response.content_part.added ContentPartDoneEvent: allOf: - $ref: '#/components/schemas/BaseContentPartDoneEvent' - properties: part: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/ReasoningTextContent' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' type: object description: Event emitted when a content part is complete example: content_index: 0 item_id: item-1 output_index: 0 part: annotations: [] text: Hello! How can I help you? type: output_text sequence_number: 7 type: response.content_part.done ContentPartImage: example: image_url: url: https://example.com/image.png type: image_url properties: image_url: properties: url: type: string required: - url type: object type: enum: - image_url type: string required: - type - image_url type: object ContextCompressionEngine: description: The compression engine to use. Defaults to "middle-out". enum: - middle-out example: middle-out type: string ContextCompressionPlugin: example: enabled: true engine: middle-out id: context-compression properties: enabled: description: Set to false to disable the context-compression plugin for this request. Defaults to true. type: boolean engine: $ref: '#/components/schemas/ContextCompressionEngine' id: enum: - context-compression type: string required: - id type: object CostDetails: description: Breakdown of upstream inference costs example: upstream_inference_completions_cost: 0.0004 upstream_inference_cost: null upstream_inference_prompt_cost: 0.0008 nullable: true properties: upstream_inference_completions_cost: format: double type: number upstream_inference_cost: format: double nullable: true type: number upstream_inference_prompt_cost: format: double type: number required: - upstream_inference_prompt_cost - upstream_inference_completions_cost type: object CreatedEvent: description: Event emitted when a response is created example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: in_progress temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 0 type: response.created properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: type: integer type: enum: - response.created type: string required: - type - response - sequence_number type: object CreateGuardrailRequest: example: allowed_models: null allowed_providers: - openai - anthropic - deepseek description: A guardrail for limiting API usage enforce_zdr: false ignored_models: null ignored_providers: null limit_usd: 50 name: My New Guardrail reset_interval: monthly properties: allowed_models: description: Array of model identifiers (slug or canonical_slug accepted) example: - openai/gpt-5.2 - anthropic/claude-4.5-opus-20251124 - deepseek/deepseek-r1-0528:free items: type: string minItems: 1 nullable: true type: array allowed_providers: description: List of allowed provider IDs example: - openai - anthropic - deepseek items: type: string minItems: 1 nullable: true type: array description: description: Description of the guardrail example: A guardrail for limiting API usage maxLength: 1000 nullable: true type: string enforce_zdr: description: Whether to enforce zero data retention example: false nullable: true type: boolean ignored_models: description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted) example: - openai/gpt-4o-mini items: type: string minItems: 1 nullable: true type: array ignored_providers: description: List of provider IDs to exclude from routing example: - azure items: type: string minItems: 1 nullable: true type: array limit_usd: description: Spending limit in USD example: 50 format: double nullable: true type: number name: description: Name for the new guardrail example: My New Guardrail maxLength: 200 minLength: 1 type: string reset_interval: $ref: '#/components/schemas/GuardrailInterval' workspace_id: description: The workspace to create the guardrail in. Defaults to the default workspace if not provided. example: 0df9e665-d932-5740-b2c7-b52af166bc11 format: uuid type: string required: - name type: object CreateGuardrailResponse: example: data: allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: A guardrail for limiting API usage enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 50 name: My New Guardrail reset_interval: monthly updated_at: null workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - description: The created guardrail required: - data type: object CreateWorkspaceRequest: example: default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace name: Production slug: production properties: default_image_model: description: Default image model for this workspace example: openai/dall-e-3 nullable: true type: string default_provider_sort: description: Default provider sort preference (price, throughput, latency, exacto) example: price nullable: true type: string default_text_model: description: Default text model for this workspace example: openai/gpt-4o nullable: true type: string description: description: Description of the workspace example: Production environment workspace maxLength: 500 nullable: true type: string io_logging_api_key_ids: description: Optional array of API key IDs to filter I/O logging example: null items: type: integer nullable: true type: array io_logging_sampling_rate: description: Sampling rate for I/O logging (0.0001-1) example: 1 format: double type: number is_data_discount_logging_enabled: description: Whether data discount logging is enabled example: true type: boolean is_observability_broadcast_enabled: description: Whether broadcast is enabled example: false type: boolean is_observability_io_logging_enabled: description: Whether private logging is enabled example: false type: boolean name: description: Name for the new workspace example: Production maxLength: 100 minLength: 1 type: string slug: description: URL-friendly slug (lowercase alphanumeric and hyphens only) example: production maxLength: 50 minLength: 1 pattern: ^[a-z0-9-]+$ type: string required: - name - slug type: object CreateWorkspaceResponse: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: null properties: data: allOf: - $ref: '#/components/schemas/Workspace' - description: The created workspace required: - data type: object CustomTool: description: Custom tool configuration example: name: my_tool type: custom properties: description: type: string format: anyOf: - properties: type: enum: - text type: string required: - type type: object - properties: definition: type: string syntax: enum: - lark - regex type: string type: enum: - grammar type: string required: - type - definition - syntax type: object name: type: string type: enum: - custom type: string required: - type - name type: object DatetimeServerTool: description: 'OpenRouter built-in server tool: returns the current date and time' example: parameters: timezone: America/New_York type: openrouter:datetime properties: parameters: $ref: '#/components/schemas/DatetimeServerToolConfig' type: enum: - openrouter:datetime type: string required: - type type: object DatetimeServerToolConfig: description: Configuration for the openrouter:datetime server tool example: timezone: America/New_York properties: timezone: description: IANA timezone name (e.g. "America/New_York"). Defaults to UTC. example: America/New_York type: string type: object DefaultParameters: additionalProperties: false description: Default parameters for this model example: frequency_penalty: 0 presence_penalty: 0 repetition_penalty: 1 temperature: 0.7 top_k: 0 top_p: 0.9 nullable: true properties: frequency_penalty: format: double nullable: true type: number presence_penalty: format: double nullable: true type: number repetition_penalty: format: double nullable: true type: number temperature: format: double nullable: true type: number top_k: nullable: true type: integer top_p: format: double nullable: true type: number type: object DeleteGuardrailResponse: example: deleted: true properties: deleted: const: true description: Confirmation that the guardrail was deleted example: true type: boolean required: - deleted type: object DeleteWorkspaceResponse: example: deleted: true properties: deleted: const: true description: Confirmation that the workspace was deleted example: true type: boolean required: - deleted type: object DeprecatedRoute: deprecated: true description: >- **DEPRECATED** Use providers.sort.partition instead. Backwards-compatible alias for providers.sort.partition. Accepts legacy values: "fallback" (maps to "model"), "sort" (maps to "none"). enum: - fallback - sort - null example: fallback nullable: true type: string x-fern-ignore: true x-speakeasy-deprecation-message: Use providers.sort.partition instead. x-speakeasy-ignore: true EasyInputMessage: example: content: What is the weather today? role: user properties: content: anyOf: - items: oneOf: - $ref: '#/components/schemas/InputText' - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} type: object description: Image input content item example: detail: auto image_url: https://example.com/image.jpg type: input_image - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' - $ref: '#/components/schemas/InputVideo' type: array - type: string - nullable: true phase: anyOf: - enum: - commentary type: string - enum: - final_answer type: string - nullable: true description: >- The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. example: final_answer role: anyOf: - enum: - user type: string - enum: - system type: string - enum: - assistant type: string - enum: - developer type: string type: enum: - message type: string required: - role type: object EdgeNetworkTimeoutResponse: description: Infrastructure Timeout - Provider request timed out at edge network example: error: code: 524 message: Request timed out. Please try again later. properties: error: $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData' user_id: nullable: true type: string required: - error type: object EdgeNetworkTimeoutResponseErrorData: description: Error data for EdgeNetworkTimeoutResponse example: code: 524 message: Request timed out. Please try again later. properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object EndpointStatus: enum: - 0 - -1 - -2 - -3 - -5 - -10 example: 0 type: integer ErrorEvent: allOf: - $ref: '#/components/schemas/BaseErrorEvent' - properties: {} type: object description: Event emitted when an error occurs during streaming example: code: rate_limit_exceeded message: Rate limit exceeded. Please try again later. param: null sequence_number: 2 type: error FailedEvent: description: Event emitted when a response has failed example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: failed temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 3 type: response.failed properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: type: integer type: enum: - response.failed type: string required: - type - response - sequence_number type: object FileCitation: example: file_id: file-abc123 filename: research_paper.pdf index: 0 type: file_citation properties: file_id: type: string filename: type: string index: type: integer type: enum: - file_citation type: string required: - type - file_id - filename - index type: object FileParserPlugin: example: enabled: true id: file-parser pdf: engine: cloudflare-ai properties: enabled: description: Set to false to disable the file-parser plugin for this request. Defaults to true. type: boolean id: enum: - file-parser type: string pdf: $ref: '#/components/schemas/PDFParserOptions' required: - id type: object FilePath: example: file_id: file-xyz789 index: 0 type: file_path properties: file_id: type: string index: type: integer type: enum: - file_path type: string required: - type - file_id - index type: object FileSearchServerTool: description: File search tool configuration example: type: file_search vector_store_ids: - vs_abc123 properties: filters: anyOf: - properties: key: type: string type: enum: - eq - ne - gt - gte - lt - lte type: string value: anyOf: - type: string - format: double type: number - type: boolean - items: anyOf: - type: string - format: double type: number type: array required: - key - type - value type: object - $ref: '#/components/schemas/CompoundFilter' - nullable: true max_num_results: type: integer ranking_options: properties: ranker: enum: - auto - default-2024-11-15 type: string score_threshold: format: double type: number type: object type: enum: - file_search type: string vector_store_ids: items: type: string type: array required: - type - vector_store_ids type: object ForbiddenResponse: description: Forbidden - Authentication successful but insufficient permissions example: error: code: 403 message: Only management keys can perform this operation properties: error: $ref: '#/components/schemas/ForbiddenResponseErrorData' user_id: nullable: true type: string required: - error type: object ForbiddenResponseErrorData: description: Error data for ForbiddenResponse example: code: 403 message: Only management keys can perform this operation properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object FormatJsonObjectConfig: description: JSON object response format example: type: json_object properties: type: enum: - json_object type: string required: - type type: object FormatJsonSchemaConfig: description: JSON schema constrained response format example: description: User information schema name: user_info schema: properties: age: type: number name: type: string required: - name type: object type: json_schema properties: description: type: string name: type: string schema: additionalProperties: nullable: true type: object strict: nullable: true type: boolean type: enum: - json_schema type: string required: - type - name - schema type: object Formats: anyOf: - $ref: '#/components/schemas/FormatTextConfig' - $ref: '#/components/schemas/FormatJsonObjectConfig' - $ref: '#/components/schemas/FormatJsonSchemaConfig' description: Text response format configuration example: type: text FormatTextConfig: description: Plain text response format example: type: text properties: type: enum: - text type: string required: - type type: object FrameImage: allOf: - $ref: '#/components/schemas/ContentPartImage' - properties: frame_type: description: Whether this image represents the first or last frame of the video enum: - first_frame - last_frame example: first_frame type: string required: - frame_type type: object example: image_url: url: https://example.com/image.png type: image_url FunctionCallArgsDeltaEvent: allOf: - $ref: '#/components/schemas/BaseFunctionCallArgsDeltaEvent' - properties: {} type: object description: Event emitted when function call arguments are being streamed example: delta: '{"city": "..."}' item_id: item-1 output_index: 0 sequence_number: 4 type: response.function_call_arguments.delta FunctionCallArgsDoneEvent: allOf: - $ref: '#/components/schemas/BaseFunctionCallArgsDoneEvent' - properties: {} type: object description: Event emitted when function call arguments streaming is complete example: arguments: '{"city": "San Francisco", "units": "celsius"}' item_id: item-1 name: get_weather output_index: 0 sequence_number: 6 type: response.function_call_arguments.done FunctionCallItem: allOf: - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall' - properties: {} required: - id type: object description: A function call initiated by the model example: arguments: '{"location":"San Francisco"}' call_id: call-abc123 id: call-abc123 name: get_weather status: completed type: function_call FunctionCallOutputItem: allOf: - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput' - properties: output: anyOf: - type: string - items: oneOf: - $ref: '#/components/schemas/InputText' - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} type: object description: Image input content item example: detail: auto image_url: https://example.com/image.jpg type: input_image - $ref: '#/components/schemas/InputFile' type: array type: object description: The output from a function call execution example: call_id: call-abc123 id: output-abc123 output: '{"temperature":72,"conditions":"sunny"}' status: completed type: function_call_output FunctionTool: description: Function tool definition example: description: Get the current weather in a location name: get_weather parameters: properties: location: description: The city and state type: string unit: enum: - celsius - fahrenheit type: string required: - location type: object type: function properties: description: nullable: true type: string name: type: string parameters: additionalProperties: nullable: true nullable: true type: object strict: nullable: true type: boolean type: enum: - function type: string required: - type - name - parameters type: object GenerationContentData: description: Stored prompt and completion content example: input: messages: - content: What is the meaning of life? role: user output: completion: The meaning of life is a philosophical question... reasoning: null properties: input: anyOf: - properties: prompt: example: What is the meaning of life? type: string required: - prompt type: object - properties: messages: example: - content: What is the meaning of life? role: user items: nullable: true type: array required: - messages type: object description: The input to the generation — either a prompt string or an array of messages output: description: The output from the generation properties: completion: description: The completion output example: The meaning of life is a philosophical question... nullable: true type: string reasoning: description: Reasoning/thinking output, if any example: null nullable: true type: string required: - reasoning - completion type: object required: - input - output type: object GenerationContentResponse: description: Stored prompt and completion content for a generation example: data: input: messages: - content: What is the meaning of life? role: user output: completion: The meaning of life is a philosophical question... reasoning: null properties: data: $ref: '#/components/schemas/GenerationContentData' required: - data type: object GenerationResponse: description: Generation response example: data: api_type: completions app_id: 12345 cache_discount: null cancelled: false created_at: '2024-07-15T23:33:19.433273+00:00' external_user: user-123 finish_reason: stop generation_time: 1200 http_referer: https://openrouter.ai/ id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG is_byok: false latency: 1250 model: sao10k/l3-stheno-8b moderation_latency: 50 native_finish_reason: stop native_tokens_cached: 3 native_tokens_completion: 25 native_tokens_completion_images: 0 native_tokens_prompt: 10 native_tokens_reasoning: 5 num_input_audio_prompt: 0 num_media_completion: 0 num_media_prompt: 1 num_search_results: 5 origin: https://openrouter.ai/ provider_name: Infermatic provider_responses: null request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT router: openrouter/auto session_id: null streamed: true tokens_completion: 25 tokens_prompt: 10 total_cost: 0.0015 upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 upstream_inference_cost: 0.0012 usage: 0.0015 user_agent: Mozilla/5.0 properties: data: description: Generation data properties: api_type: description: Type of API used for the generation enum: - completions - embeddings - rerank - tts - stt - video - null nullable: true type: string app_id: description: ID of the app that made the request example: 12345 nullable: true type: integer cache_discount: description: Discount applied due to caching example: 0.0002 format: double nullable: true type: number cancelled: description: Whether the generation was cancelled example: false nullable: true type: boolean created_at: description: ISO 8601 timestamp of when the generation was created example: '2024-07-15T23:33:19.433273+00:00' type: string external_user: description: External user identifier example: user-123 nullable: true type: string finish_reason: description: Reason the generation finished example: stop nullable: true type: string generation_time: description: Time taken for generation in milliseconds example: 1200 format: double nullable: true type: number http_referer: description: Referer header from the request nullable: true type: string id: description: Unique identifier for the generation example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG type: string is_byok: description: Whether this used bring-your-own-key example: false type: boolean latency: description: Total latency in milliseconds example: 1250 format: double nullable: true type: number model: description: Model used for the generation example: sao10k/l3-stheno-8b type: string moderation_latency: description: Moderation latency in milliseconds example: 50 format: double nullable: true type: number native_finish_reason: description: Native finish reason as reported by provider example: stop nullable: true type: string native_tokens_cached: description: Native cached tokens as reported by provider example: 3 nullable: true type: integer native_tokens_completion: description: Native completion tokens as reported by provider example: 25 nullable: true type: integer native_tokens_completion_images: description: Native completion image tokens as reported by provider example: 0 nullable: true type: integer native_tokens_prompt: description: Native prompt tokens as reported by provider example: 10 nullable: true type: integer native_tokens_reasoning: description: Native reasoning tokens as reported by provider example: 5 nullable: true type: integer num_fetches: description: Number of web fetches performed example: 0 nullable: true type: integer num_input_audio_prompt: description: Number of audio inputs in the prompt example: 0 nullable: true type: integer num_media_completion: description: Number of media items in the completion example: 0 nullable: true type: integer num_media_prompt: description: Number of media items in the prompt example: 1 nullable: true type: integer num_search_results: description: Number of search results included example: 5 nullable: true type: integer origin: description: Origin URL of the request example: https://openrouter.ai/ type: string provider_name: description: Name of the provider that served the request example: Infermatic nullable: true type: string provider_responses: description: List of provider responses for this generation, including fallback attempts items: $ref: '#/components/schemas/ProviderResponse' nullable: true type: array request_id: description: Unique identifier grouping all generations from a single API request example: req-1727282430-aBcDeFgHiJkLmNoPqRsT nullable: true type: string response_cache_source_id: description: If this generation was served from response cache, contains the original generation ID. Null otherwise. nullable: true type: string router: description: Router used for the request (e.g., openrouter/auto) example: openrouter/auto nullable: true type: string session_id: description: Session identifier grouping multiple generations in the same session nullable: true type: string streamed: description: Whether the response was streamed example: true nullable: true type: boolean tokens_completion: description: Number of tokens in the completion example: 25 nullable: true type: integer tokens_prompt: description: Number of tokens in the prompt example: 10 nullable: true type: integer total_cost: description: Total cost of the generation in USD example: 0.0015 format: double type: number upstream_id: description: Upstream provider's identifier for this generation example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 nullable: true type: string upstream_inference_cost: description: Cost charged by the upstream provider example: 0.0012 format: double nullable: true type: number usage: description: Usage amount in USD example: 0.0015 format: double type: number user_agent: description: User-Agent header from the request nullable: true type: string web_search_engine: description: The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel) example: exa nullable: true type: string required: - id - upstream_id - total_cost - cache_discount - upstream_inference_cost - created_at - model - app_id - streamed - cancelled - provider_name - latency - moderation_latency - generation_time - finish_reason - tokens_prompt - tokens_completion - native_tokens_prompt - native_tokens_completion - native_tokens_completion_images - native_tokens_reasoning - native_tokens_cached - num_media_prompt - num_input_audio_prompt - num_media_completion - num_search_results - num_fetches - web_search_engine - origin - usage - is_byok - native_finish_reason - external_user - api_type - router - provider_responses - user_agent - http_referer type: object required: - data type: object GetGuardrailResponse: example: data: allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 100 name: Production Guardrail reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - description: The guardrail required: - data type: object GetWorkspaceResponse: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: '2025-08-24T15:45:00Z' properties: data: allOf: - $ref: '#/components/schemas/Workspace' - description: The workspace required: - data type: object GoneResponse: description: Gone - Endpoint has been permanently removed or deprecated example: error: code: 410 message: >- The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been removed. Use the web credits purchase flow instead. properties: error: $ref: '#/components/schemas/GoneResponseErrorData' user_id: nullable: true type: string required: - error type: object GoneResponseErrorData: description: Error data for GoneResponse example: code: 410 message: >- The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been removed. Use the web credits purchase flow instead. properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object Guardrail: example: allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 100 name: Production Guardrail reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: allowed_models: description: Array of model canonical_slugs (immutable identifiers) example: - openai/gpt-5.2-20251211 - anthropic/claude-4.5-opus-20251124 - deepseek/deepseek-r1-0528:free items: type: string nullable: true type: array allowed_providers: description: List of allowed provider IDs example: - openai - anthropic - google items: type: string nullable: true type: array created_at: description: ISO 8601 timestamp of when the guardrail was created example: '2025-08-24T10:30:00Z' type: string description: description: Description of the guardrail example: Guardrail for production environment nullable: true type: string enforce_zdr: description: Whether to enforce zero data retention example: false nullable: true type: boolean id: description: Unique identifier for the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string ignored_models: description: Array of model canonical_slugs to exclude from routing example: - openai/gpt-4o-mini-2024-07-18 items: type: string nullable: true type: array ignored_providers: description: List of provider IDs to exclude from routing example: - azure items: type: string nullable: true type: array limit_usd: description: Spending limit in USD example: 100 format: double nullable: true type: number name: description: Name of the guardrail example: Production Guardrail type: string reset_interval: $ref: '#/components/schemas/GuardrailInterval' updated_at: description: ISO 8601 timestamp of when the guardrail was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string workspace_id: description: The workspace ID this guardrail belongs to. example: 0df9e665-d932-5740-b2c7-b52af166bc11 type: string required: - id - name - created_at - workspace_id type: object GuardrailInterval: description: Interval at which the limit resets (daily, weekly, monthly) enum: - daily - weekly - monthly - null example: monthly nullable: true type: string ImageConfig: additionalProperties: anyOf: - type: string - format: double type: number - items: nullable: true type: array description: >- Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. example: aspect_ratio: '16:9' quality: high type: object ImageGenCallCompletedEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted' - properties: {} type: object description: Image generation call completed example: item_id: call-123 output_index: 0 sequence_number: 4 type: response.image_generation_call.completed ImageGenCallGeneratingEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating' - properties: {} type: object description: Image generation call is generating example: item_id: call-123 output_index: 0 sequence_number: 2 type: response.image_generation_call.generating ImageGenCallInProgressEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress' - properties: {} type: object description: Image generation call in progress example: item_id: call-123 output_index: 0 sequence_number: 1 type: response.image_generation_call.in_progress ImageGenCallPartialImageEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage' - properties: {} type: object description: Image generation call with partial image example: item_id: call-123 output_index: 0 partial_image_b64: base64encodedimage... partial_image_index: 0 sequence_number: 3 type: response.image_generation_call.partial_image ImageGenerationServerTool: description: Image generation tool configuration example: quality: high type: image_generation properties: background: enum: - transparent - opaque - auto type: string input_fidelity: enum: - high - low - null nullable: true type: string input_image_mask: properties: file_id: type: string image_url: type: string type: object model: enum: - gpt-image-1 - gpt-image-1-mini type: string moderation: enum: - auto - low type: string output_compression: type: integer output_format: enum: - png - webp - jpeg type: string partial_images: type: integer quality: enum: - low - medium - high - auto type: string size: enum: - 1024x1024 - 1024x1536 - 1536x1024 - auto type: string type: enum: - image_generation type: string required: - type type: object ImageGenerationServerTool_OpenRouter: description: 'OpenRouter built-in server tool: generates images from text prompts using an image generation model' example: parameters: model: openai/gpt-image-1 quality: high size: 1024x1024 type: openrouter:image_generation properties: parameters: $ref: '#/components/schemas/ImageGenerationServerToolConfig' type: enum: - openrouter:image_generation type: string required: - type type: object ImageGenerationServerToolConfig: additionalProperties: anyOf: - type: string - format: double type: number - items: nullable: true type: array description: >- Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio, quality, size, background, output_format, output_compression, moderation, etc.) plus a model field. example: aspect_ratio: '16:9' model: openai/gpt-5-image quality: high properties: model: description: Which image generation model to use (e.g. "openai/gpt-5-image"). Defaults to "openai/gpt-5-image". example: openai/gpt-5-image type: string type: object ImageGenerationStatus: enum: - in_progress - completed - generating - failed example: completed type: string IncompleteDetails: example: reason: max_output_tokens nullable: true properties: reason: enum: - max_output_tokens - content_filter type: string type: object IncompleteEvent: description: Event emitted when a response is incomplete example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: incomplete temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 5 type: response.incomplete properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: type: integer type: enum: - response.incomplete type: string required: - type - response - sequence_number type: object InProgressEvent: description: Event emitted when a response is in progress example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: in_progress temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 1 type: response.in_progress properties: response: $ref: '#/components/schemas/BaseResponsesResult' sequence_number: type: integer type: enum: - response.in_progress type: string required: - type - response - sequence_number type: object InputAudio: description: Audio input content item example: input_audio: data: SGVsbG8gV29ybGQ= format: mp3 type: input_audio properties: input_audio: properties: data: type: string format: enum: - mp3 - wav type: string required: - data - format type: object type: enum: - input_audio type: string required: - type - input_audio type: object InputFile: description: File input content item example: file_id: file-abc123 filename: document.pdf type: input_file properties: file_data: type: string file_id: nullable: true type: string file_url: type: string filename: type: string type: enum: - input_file type: string required: - type type: object InputImage: description: Image input content item example: detail: auto image_url: https://example.com/image.jpg type: input_image properties: detail: enum: - auto - high - low type: string image_url: nullable: true type: string type: enum: - input_image type: string required: - type - detail type: object InputMessageItem: example: content: - text: Hello, how are you? type: input_text id: msg-abc123 role: user type: message properties: content: items: oneOf: - $ref: '#/components/schemas/InputText' - allOf: - $ref: '#/components/schemas/InputImage' - properties: {} type: object description: Image input content item example: detail: auto image_url: https://example.com/image.jpg type: input_image - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' - $ref: '#/components/schemas/InputVideo' nullable: true type: array id: type: string role: anyOf: - enum: - user type: string - enum: - system type: string - enum: - developer type: string type: enum: - message type: string required: - role type: object InputModality: enum: - text - image - file - audio - video example: text type: string Inputs: anyOf: - type: string - items: anyOf: - $ref: '#/components/schemas/ReasoningItem' - $ref: '#/components/schemas/EasyInputMessage' - $ref: '#/components/schemas/InputMessageItem' - $ref: '#/components/schemas/FunctionCallItem' - $ref: '#/components/schemas/FunctionCallOutputItem' - allOf: - $ref: '#/components/schemas/OutputMessageItem' - properties: content: anyOf: - items: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' type: array - type: string - nullable: true type: object description: An output message item example: content: - annotations: [] text: Hello! How can I help you? type: output_text id: msg-123 role: assistant status: completed type: message - allOf: - $ref: '#/components/schemas/OutputReasoningItem' - properties: summary: items: $ref: '#/components/schemas/ReasoningSummaryText' nullable: true type: array type: object description: An output item containing reasoning example: content: - text: First, we analyze the problem... type: reasoning_text format: anthropic-claude-v1 id: reasoning-123 signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... status: completed summary: - text: Analyzed the problem and found the optimal solution. type: summary_text type: reasoning - $ref: '#/components/schemas/OutputFunctionCallItem' - $ref: '#/components/schemas/OutputWebSearchCallItem' - $ref: '#/components/schemas/OutputFileSearchCallItem' - $ref: '#/components/schemas/OutputImageGenerationCallItem' - $ref: '#/components/schemas/OutputCodeInterpreterCallItem' - $ref: '#/components/schemas/OutputComputerCallItem' - $ref: '#/components/schemas/OutputDatetimeItem' - $ref: '#/components/schemas/OutputWebSearchServerToolItem' - $ref: '#/components/schemas/OutputCodeInterpreterServerToolItem' - $ref: '#/components/schemas/OutputFileSearchServerToolItem' - $ref: '#/components/schemas/OutputImageGenerationServerToolItem' - $ref: '#/components/schemas/OutputBrowserUseServerToolItem' - $ref: '#/components/schemas/OutputBashServerToolItem' - $ref: '#/components/schemas/OutputTextEditorServerToolItem' - $ref: '#/components/schemas/OutputApplyPatchServerToolItem' - $ref: '#/components/schemas/OutputWebFetchServerToolItem' - $ref: '#/components/schemas/OutputToolSearchServerToolItem' - $ref: '#/components/schemas/OutputMemoryServerToolItem' - $ref: '#/components/schemas/OutputMcpServerToolItem' - $ref: '#/components/schemas/OutputSearchModelsServerToolItem' type: array description: Input for a response request - can be a string or array of items example: - content: What is the weather today? role: user InputText: description: Text input content item example: text: Hello, how can I help you? type: input_text properties: text: type: string type: enum: - input_text type: string required: - type - text type: object InputVideo: description: Video input content item example: type: input_video video_url: https://example.com/video.mp4 properties: type: enum: - input_video type: string video_url: description: A base64 data URL or remote URL that resolves to a video file type: string required: - type - video_url type: object InstructType: description: Instruction format type enum: - none - airoboros - alpaca - alpaca-modif - chatml - claude - code-llama - gemma - llama2 - llama3 - mistral - nemotron - neural - openchat - phi3 - rwkv - vicuna - zephyr - deepseek-r1 - deepseek-v3.1 - qwq - qwen3 - null example: chatml nullable: true type: string InternalServerResponse: description: Internal Server Error - Unexpected server error example: error: code: 500 message: Internal Server Error properties: error: $ref: '#/components/schemas/InternalServerResponseErrorData' user_id: nullable: true type: string required: - error type: object InternalServerResponseErrorData: description: Error data for InternalServerResponse example: code: 500 message: Internal Server Error properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object KeyAssignment: example: assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 key_label: prod-key key_name: Production Key properties: assigned_by: description: User ID of who made the assignment example: user_abc123 nullable: true type: string created_at: description: ISO 8601 timestamp of when the assignment was created example: '2025-08-24T10:30:00Z' type: string guardrail_id: description: ID of the guardrail example: 550e8400-e29b-41d4-a716-446655440001 format: uuid type: string id: description: Unique identifier for the assignment example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string key_hash: description: Hash of the assigned API key example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 type: string key_label: description: Label of the API key example: prod-key type: string key_name: description: Name of the API key example: Production Key type: string required: - id - key_hash - guardrail_id - key_name - key_label - assigned_by - created_at type: object Legacy_ChatContentVideo: deprecated: true description: Video input content part (legacy format - deprecated) example: type: input_video video_url: url: https://example.com/video.mp4 properties: type: enum: - input_video type: string video_url: $ref: '#/components/schemas/ChatContentVideoInput' required: - type - video_url type: object Legacy_WebSearchServerTool: description: Web search tool configuration example: engine: auto filters: allowed_domains: - example.com type: web_search properties: engine: $ref: '#/components/schemas/WebSearchEngineEnum' filters: $ref: '#/components/schemas/WebSearchDomainFilter' max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - web_search type: string user_location: $ref: '#/components/schemas/WebSearchUserLocation' required: - type type: object ListEndpointsResponse: description: List of available endpoints for a model example: architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT created: 1692901234 description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. endpoints: - context_length: 8192 latency_last_30m: p50: 0.25 p75: 0.35 p90: 0.48 p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 model_name: GPT-4 name: 'OpenAI: GPT-4' pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' provider_name: OpenAI quantization: fp16 status: default supported_parameters: - temperature - top_p - max_tokens - frequency_penalty - presence_penalty supports_implicit_caching: true tag: openai throughput_last_30m: p50: 45.2 p75: 38.5 p90: 28.3 p99: 15.1 uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 id: openai/gpt-4 name: GPT-4 properties: architecture: allOf: - $ref: '#/components/schemas/ModelArchitecture' - example: instruct_type: chatml modality: text tokenizer: GPT properties: input_modalities: description: Supported input modalities items: $ref: '#/components/schemas/InputModality' type: array instruct_type: $ref: '#/components/schemas/InstructType' modality: description: Primary modality of the model example: text nullable: true type: string output_modalities: description: Supported output modalities items: $ref: '#/components/schemas/OutputModality' type: array tokenizer: allOf: - $ref: '#/components/schemas/ModelGroup' - nullable: true required: - tokenizer - instruct_type - modality - input_modalities - output_modalities created: description: Unix timestamp of when the model was created example: 1692901234 type: integer description: description: Description of the model example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. type: string endpoints: description: List of available endpoints for this model items: $ref: '#/components/schemas/PublicEndpoint' type: array id: description: Unique identifier for the model example: openai/gpt-4 type: string name: description: Display name of the model example: GPT-4 type: string required: - id - name - created - description - architecture - endpoints type: object ListGuardrailsResponse: example: data: - allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 100 name: Production Guardrail reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 total_count: 1 properties: data: description: List of guardrails items: $ref: '#/components/schemas/Guardrail' type: array total_count: description: Total number of guardrails example: 25 type: integer required: - data - total_count type: object ListKeyAssignmentsResponse: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 key_label: prod-key key_name: Production Key total_count: 1 properties: data: description: List of key assignments items: $ref: '#/components/schemas/KeyAssignment' type: array total_count: description: Total number of key assignments for this guardrail example: 25 type: integer required: - data - total_count type: object ListMemberAssignmentsResponse: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 organization_id: org_xyz789 user_id: user_abc123 total_count: 1 properties: data: description: List of member assignments items: $ref: '#/components/schemas/MemberAssignment' type: array total_count: description: Total number of member assignments example: 10 type: integer required: - data - total_count type: object ListWorkspacesResponse: example: data: - created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: '2025-08-24T15:45:00Z' total_count: 1 properties: data: description: List of workspaces items: $ref: '#/components/schemas/Workspace' type: array total_count: description: Total number of workspaces example: 5 type: integer required: - data - total_count type: object McpServerTool: description: MCP (Model Context Protocol) tool configuration example: server_label: my-server server_url: https://example.com/mcp type: mcp properties: allowed_tools: anyOf: - items: type: string type: array - properties: read_only: type: boolean tool_names: items: type: string type: array type: object - nullable: true authorization: type: string connector_id: enum: - connector_dropbox - connector_gmail - connector_googlecalendar - connector_googledrive - connector_microsoftteams - connector_outlookcalendar - connector_outlookemail - connector_sharepoint type: string headers: additionalProperties: type: string nullable: true type: object require_approval: anyOf: - properties: always: properties: tool_names: items: type: string type: array type: object never: properties: tool_names: items: type: string type: array type: object type: object - enum: - always type: string - enum: - never type: string - nullable: true server_description: type: string server_label: type: string server_url: type: string type: enum: - mcp type: string required: - type - server_label type: object MemberAssignment: example: assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 organization_id: org_xyz789 user_id: user_abc123 properties: assigned_by: description: User ID of who made the assignment example: user_abc123 nullable: true type: string created_at: description: ISO 8601 timestamp of when the assignment was created example: '2025-08-24T10:30:00Z' type: string guardrail_id: description: ID of the guardrail example: 550e8400-e29b-41d4-a716-446655440001 format: uuid type: string id: description: Unique identifier for the assignment example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string organization_id: description: Organization ID example: org_xyz789 type: string user_id: description: Clerk user ID of the assigned member example: user_abc123 type: string required: - id - user_id - organization_id - guardrail_id - assigned_by - created_at type: object MessagesContentBlockDeltaEvent: description: Event sent when content is added to a content block example: delta: text: Hello type: text_delta index: 0 type: content_block_delta properties: delta: oneOf: - properties: text: type: string type: enum: - text_delta type: string required: - type - text type: object - properties: partial_json: type: string type: enum: - input_json_delta type: string required: - type - partial_json type: object - properties: thinking: type: string type: enum: - thinking_delta type: string required: - type - thinking type: object - properties: signature: type: string type: enum: - signature_delta type: string required: - type - signature type: object - properties: citation: discriminator: mapping: char_location: '#/components/schemas/AnthropicCitationCharLocation' content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation' page_location: '#/components/schemas/AnthropicCitationPageLocation' search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocation' - $ref: '#/components/schemas/AnthropicCitationPageLocation' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation' - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' type: enum: - citations_delta type: string required: - type - citation type: object - properties: content: nullable: true type: string type: enum: - compaction_delta type: string required: - type - content type: object index: type: integer type: enum: - content_block_delta type: string required: - type - index - delta type: object MessagesContentBlockStartEvent: description: Event sent when a new content block starts example: content_block: text: '' type: text index: 0 type: content_block_start properties: content_block: anyOf: - $ref: '#/components/schemas/AnthropicTextBlock' - $ref: '#/components/schemas/AnthropicToolUseBlock' - $ref: '#/components/schemas/AnthropicThinkingBlock' - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' - $ref: '#/components/schemas/AnthropicServerToolUseBlock' - $ref: '#/components/schemas/AnthropicWebSearchToolResult' - $ref: '#/components/schemas/AnthropicWebFetchToolResult' - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicToolSearchToolResult' - $ref: '#/components/schemas/AnthropicContainerUpload' - $ref: '#/components/schemas/AnthropicCompactionBlock' - properties: content: nullable: true type: string type: enum: - compaction type: string required: - type - content type: object index: type: integer type: enum: - content_block_start type: string required: - type - index - content_block type: object MessagesContentBlockStopEvent: description: Event sent when a content block is complete example: index: 0 type: content_block_stop properties: index: type: integer type: enum: - content_block_stop type: string required: - type - index type: object MessagesDeltaEvent: description: Event sent when the message metadata changes (e.g., stop_reason) example: delta: stop_details: null stop_reason: end_turn stop_sequence: null type: message_delta usage: output_tokens: 15 properties: delta: properties: container: $ref: '#/components/schemas/AnthropicContainer' stop_details: $ref: '#/components/schemas/AnthropicRefusalStopDetails' stop_reason: $ref: '#/components/schemas/ORAnthropicStopReason' stop_sequence: nullable: true type: string required: - container - stop_details - stop_reason - stop_sequence type: object type: enum: - message_delta type: string usage: properties: cache_creation_input_tokens: nullable: true type: integer cache_read_input_tokens: nullable: true type: integer input_tokens: nullable: true type: integer iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' type: array output_tokens: type: integer server_tool_use: nullable: true properties: web_fetch_requests: type: integer web_search_requests: type: integer required: - web_search_requests - web_fetch_requests type: object required: - input_tokens - output_tokens - cache_creation_input_tokens - cache_read_input_tokens - server_tool_use type: object required: - type - delta - usage type: object MessagesErrorDetail: example: message: Invalid request parameters type: invalid_request_error properties: message: type: string type: type: string required: - type - message type: object MessagesErrorEvent: description: Error event in the stream example: error: message: Overloaded type: overloaded_error type: error properties: error: properties: message: type: string type: type: string required: - type - message type: object type: enum: - error type: string required: - type - error type: object MessagesErrorResponse: example: error: message: Invalid request parameters type: invalid_request_error type: error properties: error: $ref: '#/components/schemas/MessagesErrorDetail' type: enum: - error type: string required: - type - error type: object MessagesMessageParam: description: Anthropic message with OpenRouter extensions example: content: Hello, how are you? role: user properties: content: anyOf: - type: string - items: oneOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' - $ref: '#/components/schemas/AnthropicImageBlockParam' - $ref: '#/components/schemas/AnthropicDocumentBlockParam' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' id: type: string input: nullable: true name: type: string type: enum: - tool_use type: string required: - type - id - name type: object - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' content: anyOf: - type: string - items: anyOf: - $ref: '#/components/schemas/AnthropicTextBlockParam' - $ref: '#/components/schemas/AnthropicImageBlockParam' - properties: tool_name: type: string type: enum: - tool_reference type: string required: - type - tool_name type: object - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - $ref: '#/components/schemas/AnthropicDocumentBlockParam' type: array is_error: type: boolean tool_use_id: type: string type: enum: - tool_result type: string required: - type - tool_use_id type: object - properties: signature: type: string thinking: type: string type: enum: - thinking type: string required: - type - thinking - signature type: object - properties: data: type: string type: enum: - redacted_thinking type: string required: - type - data type: object - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' id: type: string input: nullable: true name: $ref: '#/components/schemas/AnthropicServerToolName' type: enum: - server_tool_use type: string required: - type - id - name type: object - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' content: anyOf: - items: $ref: '#/components/schemas/AnthropicWebSearchResultBlockParam' type: array - properties: error_code: enum: - invalid_tool_input - unavailable - max_uses_exceeded - too_many_requests - query_too_long type: string type: enum: - web_search_tool_result_error type: string required: - type - error_code type: object tool_use_id: type: string type: enum: - web_search_tool_result type: string required: - type - tool_use_id - content type: object - $ref: '#/components/schemas/AnthropicSearchResultBlockParam' - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' content: nullable: true type: string type: enum: - compaction type: string required: - type - content type: object type: array role: enum: - user - assistant type: string required: - role - content type: object MessagesOutputConfig: description: Configuration for controlling output behavior. Supports the effort parameter and structured output format. example: effort: medium properties: effort: description: >- How much effort the model should put into its response. Higher effort levels may result in more thorough analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`. enum: - low - medium - high - xhigh - max - null example: medium nullable: true type: string format: description: >- A schema to specify Claude's output format in responses. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs). nullable: true properties: schema: additionalProperties: nullable: true type: object type: enum: - json_schema type: string required: - type - schema type: object task_budget: description: >- Task budget for an agentic turn. The model sees a countdown of remaining tokens and uses it to prioritize work and wind down gracefully. Advisory — does not enforce a hard cap. example: total: 400000 type: tokens nullable: true properties: remaining: minimum: 0 nullable: true type: integer total: minimum: 20000 type: integer type: enum: - tokens type: string required: - type - total type: object type: object MessagesPingEvent: description: Keep-alive ping event example: type: ping properties: type: enum: - ping type: string required: - type type: object MessagesRequest: description: Request schema for Anthropic Messages API endpoint example: max_tokens: 1024 messages: - content: Hello, how are you? role: user model: anthropic/claude-4.5-sonnet-20250929 temperature: 0.7 properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' context_management: nullable: true properties: edits: items: oneOf: - properties: clear_at_least: $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast' clear_tool_inputs: anyOf: - type: boolean - items: type: string type: array - nullable: true exclude_tools: items: type: string nullable: true type: array keep: $ref: '#/components/schemas/AnthropicToolUsesKeep' trigger: discriminator: mapping: input_tokens: '#/components/schemas/AnthropicInputTokensTrigger' tool_uses: '#/components/schemas/AnthropicToolUsesTrigger' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - $ref: '#/components/schemas/AnthropicToolUsesTrigger' type: enum: - clear_tool_uses_20250919 type: string required: - type type: object - properties: keep: anyOf: - $ref: '#/components/schemas/AnthropicThinkingTurns' - properties: type: enum: - all type: string required: - type type: object - enum: - all type: string type: enum: - clear_thinking_20251015 type: string required: - type type: object - properties: instructions: nullable: true type: string pause_after_compaction: type: boolean trigger: allOf: - $ref: '#/components/schemas/AnthropicInputTokensTrigger' - nullable: true properties: {} type: object example: type: input_tokens value: 100000 type: enum: - compact_20260112 type: string required: - type type: object type: array type: object max_tokens: type: integer messages: items: $ref: '#/components/schemas/MessagesMessageParam' nullable: true type: array metadata: properties: user_id: nullable: true type: string type: object model: type: string models: items: type: string type: array output_config: $ref: '#/components/schemas/MessagesOutputConfig' plugins: description: Plugins you want to enable for this request, including their settings. items: discriminator: mapping: auto-router: '#/components/schemas/AutoRouterPlugin' context-compression: '#/components/schemas/ContextCompressionPlugin' file-parser: '#/components/schemas/FileParserPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' type: array provider: $ref: '#/components/schemas/ProviderPreferences' route: $ref: '#/components/schemas/DeprecatedRoute' service_tier: enum: - auto - standard_only type: string session_id: description: >- A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for observability. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. maxLength: 256 type: string speed: allOf: - $ref: '#/components/schemas/AnthropicSpeed' - description: >- Controls output generation speed. When set to `fast`, uses a higher-speed inference configuration at premium pricing. Defaults to `standard` when omitted. example: fast stop_sequences: items: type: string type: array stream: type: boolean system: anyOf: - type: string - items: $ref: '#/components/schemas/AnthropicTextBlockParam' type: array temperature: format: double type: number thinking: oneOf: - properties: budget_tokens: type: integer display: $ref: '#/components/schemas/AnthropicThinkingDisplay' type: enum: - enabled type: string required: - type - budget_tokens type: object - properties: type: enum: - disabled type: string required: - type type: object - properties: display: $ref: '#/components/schemas/AnthropicThinkingDisplay' type: enum: - adaptive type: string required: - type type: object tool_choice: oneOf: - properties: disable_parallel_tool_use: type: boolean type: enum: - auto type: string required: - type type: object - properties: disable_parallel_tool_use: type: boolean type: enum: - any type: string required: - type type: object - properties: type: enum: - none type: string required: - type type: object - properties: disable_parallel_tool_use: type: boolean name: type: string type: enum: - tool type: string required: - type - name type: object tools: items: anyOf: - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' description: type: string input_schema: additionalProperties: nullable: true properties: properties: nullable: true required: items: type: string nullable: true type: array type: default: object type: string type: object name: type: string type: enum: - custom type: string required: - name - input_schema type: object - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' name: enum: - bash type: string type: enum: - bash_20250124 type: string required: - type - name type: object - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' name: enum: - str_replace_editor type: string type: enum: - text_editor_20250124 type: string required: - type - name type: object - properties: allowed_domains: items: type: string nullable: true type: array blocked_domains: items: type: string nullable: true type: array cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' max_uses: nullable: true type: integer name: enum: - web_search type: string type: enum: - web_search_20250305 type: string user_location: $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' required: - type - name type: object - properties: allowed_callers: items: enum: - direct - code_execution_20250825 - code_execution_20260120 type: string type: array allowed_domains: items: type: string nullable: true type: array blocked_domains: items: type: string nullable: true type: array cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' max_uses: nullable: true type: integer name: enum: - web_search type: string type: enum: - web_search_20260209 type: string user_location: $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation' required: - type - name type: object - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' type: array top_k: type: integer top_p: format: double type: number trace: $ref: '#/components/schemas/TraceConfig' user: description: >- A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. maxLength: 256 type: string required: - model - messages type: object MessagesResult: allOf: - $ref: '#/components/schemas/BaseMessagesResult' - properties: context_management: nullable: true properties: applied_edits: items: additionalProperties: nullable: true properties: type: type: string required: - type type: object type: array required: - applied_edits type: object provider: $ref: '#/components/schemas/ProviderName' usage: allOf: - $ref: '#/components/schemas/AnthropicUsage' - properties: cost: format: double nullable: true type: number cost_details: $ref: '#/components/schemas/CostDetails' is_byok: type: boolean iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' type: array service_tier: nullable: true type: string speed: $ref: '#/components/schemas/AnthropicSpeed' type: object example: cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null inference_geo: null input_tokens: 100 output_tokens: 50 server_tool_use: null service_tier: standard type: object description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions example: container: null content: - citations: null text: Hello! I'm doing well, thank you for asking. type: text id: msg_01XFDUDYJgAACzvnptvVoYEL model: claude-sonnet-4-5-20250929 role: assistant stop_details: null stop_reason: end_turn stop_sequence: null type: message usage: cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null inference_geo: null input_tokens: 12 output_tokens: 15 server_tool_use: null service_tier: standard MessagesStartEvent: description: Event sent at the start of a streaming message example: message: content: [] id: msg_01XFDUDYJgAACzvnptvVoYEL model: claude-sonnet-4-5-20250929 role: assistant stop_details: null stop_reason: null stop_sequence: null type: message usage: input_tokens: 12 output_tokens: 0 type: message_start properties: message: properties: container: $ref: '#/components/schemas/AnthropicContainer' content: items: $ref: '#/components/schemas/ORAnthropicContentBlock' type: array id: type: string model: type: string provider: enum: - AnyScale - Atoma - Cent-ML - CrofAI - Enfer - GoPomelo - HuggingFace - Hyperbolic 2 - InoCloud - Kluster - Lambda - Lepton - Lynn 2 - Lynn - Mancer - Meta - Modal - Nineteen - OctoAI - Recursal - Reflection - Replicate - SambaNova 2 - SF Compute - Targon - Together 2 - Ubicloud - 01.AI - AkashML - AI21 - AionLabs - Alibaba - Ambient - Baidu - Amazon Bedrock - Amazon Nova - Anthropic - Arcee AI - AtlasCloud - Avian - Azure - BaseTen - BytePlus - Black Forest Labs - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - Crusoe - DeepInfra - DeepSeek - DekaLLM - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perplexity - Phala - Recraft - Reka - Relace - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Together - Upstage - Venice - WandB - Xiaomi - xAI - Z.AI - FakeProvider type: string role: enum: - assistant type: string stop_details: $ref: '#/components/schemas/AnthropicRefusalStopDetails' stop_reason: nullable: true stop_sequence: nullable: true type: enum: - message type: string usage: allOf: - $ref: '#/components/schemas/AnthropicUsage' - properties: iterations: items: $ref: '#/components/schemas/AnthropicUsageIteration' type: array speed: $ref: '#/components/schemas/AnthropicSpeed' type: object example: cache_creation: null cache_creation_input_tokens: null cache_read_input_tokens: null inference_geo: null input_tokens: 100 output_tokens: 50 server_tool_use: null service_tier: standard required: - id - type - role - container - content - model - stop_reason - stop_details - stop_sequence - usage type: object type: enum: - message_start type: string required: - type - message type: object MessagesStopEvent: description: Event sent when the message is complete example: type: message_stop properties: type: enum: - message_stop type: string required: - type type: object MessagesStreamEvents: description: Union of all possible streaming events discriminator: mapping: content_block_delta: '#/components/schemas/MessagesContentBlockDeltaEvent' content_block_start: '#/components/schemas/MessagesContentBlockStartEvent' content_block_stop: '#/components/schemas/MessagesContentBlockStopEvent' error: '#/components/schemas/MessagesErrorEvent' message_delta: '#/components/schemas/MessagesDeltaEvent' message_start: '#/components/schemas/MessagesStartEvent' message_stop: '#/components/schemas/MessagesStopEvent' ping: '#/components/schemas/MessagesPingEvent' propertyName: type example: delta: text: Hello type: text_delta index: 0 type: content_block_delta oneOf: - $ref: '#/components/schemas/MessagesStartEvent' - $ref: '#/components/schemas/MessagesDeltaEvent' - $ref: '#/components/schemas/MessagesStopEvent' - $ref: '#/components/schemas/MessagesContentBlockStartEvent' - $ref: '#/components/schemas/MessagesContentBlockDeltaEvent' - $ref: '#/components/schemas/MessagesContentBlockStopEvent' - $ref: '#/components/schemas/MessagesPingEvent' - $ref: '#/components/schemas/MessagesErrorEvent' Model: description: Information about an AI model available on OpenRouter example: architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT canonical_slug: openai/gpt-4 context_length: 8192 created: 1692901234 default_parameters: null description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. expiration_date: null id: openai/gpt-4 knowledge_cutoff: null links: details: /api/v1/models/openai/gpt-5.4/endpoints name: GPT-4 per_request_limits: null pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' supported_parameters: - temperature - top_p - max_tokens supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 properties: architecture: $ref: '#/components/schemas/ModelArchitecture' canonical_slug: description: Canonical slug for the model example: openai/gpt-4 type: string context_length: description: Maximum context length in tokens example: 8192 nullable: true type: integer created: description: Unix timestamp of when the model was created example: 1692901234 type: integer default_parameters: $ref: '#/components/schemas/DefaultParameters' description: description: Description of the model example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. type: string expiration_date: description: The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration. example: '2025-06-01' nullable: true type: string hugging_face_id: description: Hugging Face model identifier, if applicable example: microsoft/DialoGPT-medium nullable: true type: string id: description: Unique identifier for the model example: openai/gpt-4 type: string knowledge_cutoff: description: The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown. example: '2024-10-01' nullable: true type: string links: $ref: '#/components/schemas/ModelLinks' name: description: Display name of the model example: GPT-4 type: string per_request_limits: $ref: '#/components/schemas/PerRequestLimits' pricing: $ref: '#/components/schemas/PublicPricing' supported_parameters: description: List of supported parameters for this model items: $ref: '#/components/schemas/Parameter' type: array supported_voices: description: List of supported voice identifiers for TTS models. Null for non-TTS models. example: null items: type: string nullable: true type: array top_provider: $ref: '#/components/schemas/TopProviderInfo' required: - id - canonical_slug - name - created - pricing - context_length - architecture - top_provider - per_request_limits - supported_parameters - default_parameters - supported_voices - links type: object ModelArchitecture: description: Model architecture information example: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT properties: input_modalities: description: Supported input modalities items: $ref: '#/components/schemas/InputModality' type: array instruct_type: description: Instruction format type enum: - none - airoboros - alpaca - alpaca-modif - chatml - claude - code-llama - gemma - llama2 - llama3 - mistral - nemotron - neural - openchat - phi3 - rwkv - vicuna - zephyr - deepseek-r1 - deepseek-v3.1 - qwq - qwen3 - null example: chatml nullable: true type: string modality: description: Primary modality of the model example: text->text nullable: true type: string output_modalities: description: Supported output modalities items: $ref: '#/components/schemas/OutputModality' type: array tokenizer: $ref: '#/components/schemas/ModelGroup' required: - modality - input_modalities - output_modalities type: object ModelGroup: description: Tokenizer type used by the model enum: - Router - Media - Other - GPT - Claude - Gemini - Gemma - Grok - Cohere - Nova - Qwen - Yi - DeepSeek - Mistral - Llama2 - Llama3 - Llama4 - PaLM - RWKV - Qwen3 example: GPT type: string ModelLinks: description: Related API endpoints and resources for this model. example: details: /api/v1/models/openai/gpt-5.4/endpoints properties: details: description: URL for the model details/endpoints API example: /api/v1/models/openai/gpt-5.4/endpoints type: string required: - details type: object ModelName: description: Model to use for completion example: openai/gpt-4 type: string ModelsCountResponse: description: Model count data example: data: count: 150 properties: data: description: Model count data example: count: 150 properties: count: description: Total number of available models example: 150 type: integer required: - count type: object required: - data type: object ModelsListResponse: description: List of available models example: data: - architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT canonical_slug: openai/gpt-4 context_length: 8192 created: 1692901234 default_parameters: null description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. expiration_date: null id: openai/gpt-4 knowledge_cutoff: null links: details: /api/v1/models/openai/gpt-5.4/endpoints name: GPT-4 per_request_limits: null pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' supported_parameters: - temperature - top_p - max_tokens - frequency_penalty - presence_penalty supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 properties: data: $ref: '#/components/schemas/ModelsListResponseData' required: - data type: object ModelsListResponseData: description: List of available models example: - architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT canonical_slug: openai/gpt-4 context_length: 8192 created: 1692901234 default_parameters: null description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. expiration_date: null id: openai/gpt-4 knowledge_cutoff: null links: details: /api/v1/models/openai/gpt-5.4/endpoints name: GPT-4 per_request_limits: null pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' supported_parameters: - temperature - top_p - max_tokens supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 items: $ref: '#/components/schemas/Model' type: array ModerationPlugin: example: id: moderation properties: id: enum: - moderation type: string required: - id type: object NotFoundResponse: description: Not Found - Resource does not exist example: error: code: 404 message: Resource not found properties: error: $ref: '#/components/schemas/NotFoundResponseErrorData' user_id: nullable: true type: string required: - error type: object NotFoundResponseErrorData: description: Error data for NotFoundResponse example: code: 404 message: Resource not found properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object OpenAIResponseFunctionToolCall: example: arguments: '{"location":"San Francisco"}' call_id: call-abc123 id: fc-abc123 name: get_weather status: completed type: function_call properties: arguments: type: string call_id: type: string id: type: string name: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - function_call type: string required: - type - call_id - name - arguments type: object OpenAIResponseFunctionToolCallOutput: example: call_id: call-abc123 output: '{"temperature":72,"conditions":"sunny"}' type: function_call_output properties: call_id: type: string id: nullable: true type: string output: anyOf: - type: string - items: discriminator: mapping: input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' propertyName: type oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' type: array status: allOf: - $ref: '#/components/schemas/ToolCallStatus' - nullable: true type: enum: - function_call_output type: string required: - type - call_id - output type: object OpenAIResponseInputMessageItem: example: content: - text: Hello, how are you? type: input_text id: msg-abc123 role: user type: message properties: content: items: discriminator: mapping: input_audio: '#/components/schemas/InputAudio' input_file: '#/components/schemas/InputFile' input_image: '#/components/schemas/InputImage' input_text: '#/components/schemas/InputText' propertyName: type oneOf: - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' - $ref: '#/components/schemas/InputAudio' type: array id: type: string role: anyOf: - enum: - user type: string - enum: - system type: string - enum: - developer type: string type: enum: - message type: string required: - id - role - content type: object OpenAIResponsesAnnotation: anyOf: - $ref: '#/components/schemas/FileCitation' - $ref: '#/components/schemas/URLCitation' - $ref: '#/components/schemas/FilePath' example: file_id: file-abc123 filename: research_paper.pdf index: 0 type: file_citation OpenAIResponsesImageGenCallCompleted: example: item_id: ig_abc123 output_index: 0 sequence_number: 4 type: response.image_generation_call.completed properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.image_generation_call.completed type: string required: - type - item_id - output_index - sequence_number type: object OpenAIResponsesImageGenCallGenerating: example: item_id: ig_abc123 output_index: 0 sequence_number: 2 type: response.image_generation_call.generating properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.image_generation_call.generating type: string required: - type - item_id - output_index - sequence_number type: object OpenAIResponsesImageGenCallInProgress: example: item_id: ig_abc123 output_index: 0 sequence_number: 1 type: response.image_generation_call.in_progress properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.image_generation_call.in_progress type: string required: - type - item_id - output_index - sequence_number type: object OpenAIResponsesImageGenCallPartialImage: example: item_id: ig_abc123 output_index: 0 partial_image_b64: iVBORw0KGgo... partial_image_index: 0 sequence_number: 3 type: response.image_generation_call.partial_image properties: item_id: type: string output_index: type: integer partial_image_b64: type: string partial_image_index: type: integer sequence_number: type: integer type: enum: - response.image_generation_call.partial_image type: string required: - type - item_id - output_index - sequence_number - partial_image_b64 - partial_image_index type: object OpenAIResponsesRefusalContent: example: refusal: I'm sorry, I cannot assist with that request type: refusal properties: refusal: type: string type: enum: - refusal type: string required: - type - refusal type: object OpenAIResponsesResponseStatus: enum: - completed - incomplete - in_progress - failed - cancelled - queued example: completed type: string OpenAIResponsesSearchCompleted: example: item_id: ws_abc123 output_index: 0 sequence_number: 5 type: response.web_search_call.completed properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.web_search_call.completed type: string required: - type - item_id - output_index - sequence_number type: object OpenAIResponsesToolChoice: anyOf: - enum: - auto type: string - enum: - none type: string - enum: - required type: string - properties: name: type: string type: enum: - function type: string required: - type - name type: object - properties: type: anyOf: - enum: - web_search_preview_2025_03_11 type: string - enum: - web_search_preview type: string required: - type type: object - $ref: '#/components/schemas/ToolChoiceAllowed' example: auto OpenAIResponsesTruncation: enum: - auto - disabled - null example: auto nullable: true type: string OpenAIResponsesUsage: example: input_tokens: 100 input_tokens_details: cached_tokens: 0 output_tokens: 50 output_tokens_details: reasoning_tokens: 0 total_tokens: 150 properties: input_tokens: type: integer input_tokens_details: properties: cached_tokens: type: integer required: - cached_tokens type: object output_tokens: type: integer output_tokens_details: properties: reasoning_tokens: type: integer required: - reasoning_tokens type: object total_tokens: type: integer required: - input_tokens - input_tokens_details - output_tokens - output_tokens_details - total_tokens type: object OpenAIResponsesWebSearchCallInProgress: example: item_id: ws_abc123 output_index: 0 sequence_number: 1 type: response.web_search_call.in_progress properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.web_search_call.in_progress type: string required: - type - item_id - output_index - sequence_number type: object OpenAIResponsesWebSearchCallSearching: example: item_id: ws_abc123 output_index: 0 sequence_number: 2 type: response.web_search_call.searching properties: item_id: type: string output_index: type: integer sequence_number: type: integer type: enum: - response.web_search_call.searching type: string required: - type - item_id - output_index - sequence_number type: object OpenResponsesCreatedEvent: allOf: - $ref: '#/components/schemas/CreatedEvent' - properties: response: $ref: '#/components/schemas/OpenResponsesResult' type: object description: Event emitted when a response is created example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: in_progress temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 0 type: response.created OpenResponsesInProgressEvent: allOf: - $ref: '#/components/schemas/InProgressEvent' - properties: response: $ref: '#/components/schemas/OpenResponsesResult' type: object description: Event emitted when a response is in progress example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: in_progress temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 1 type: response.in_progress OpenResponsesLogProbs: description: Log probability information for a token example: logprob: -0.1 token: world top_logprobs: - logprob: -0.5 token: hello properties: bytes: items: type: integer type: array logprob: format: double type: number token: type: string top_logprobs: items: $ref: '#/components/schemas/OpenResponsesTopLogprobs' type: array required: - logprob - token type: object OpenResponsesResult: allOf: - $ref: '#/components/schemas/BaseResponsesResult' - properties: output: items: $ref: '#/components/schemas/OutputItems' type: array service_tier: nullable: true type: string text: $ref: '#/components/schemas/TextExtendedConfig' usage: $ref: '#/components/schemas/Usage' type: object description: Complete non-streaming response from the Responses API example: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: - content: - annotations: [] text: Hello! How can I help you today? type: output_text id: msg-abc123 role: assistant status: completed type: message parallel_tool_calls: true status: completed temperature: null tool_choice: auto tools: [] top_p: null usage: input_tokens: 10 input_tokens_details: cached_tokens: 0 output_tokens: 25 output_tokens_details: reasoning_tokens: 0 total_tokens: 35 OpenResponsesTopLogprobs: description: Alternative token with its log probability example: logprob: -0.5 token: hello properties: bytes: items: type: integer type: array logprob: format: double type: number token: type: string type: object OpenRouterWebSearchServerTool: description: 'OpenRouter built-in server tool: searches the web for current information' example: parameters: max_results: 5 type: openrouter:web_search properties: parameters: $ref: '#/components/schemas/WebSearchConfig' type: enum: - openrouter:web_search type: string required: - type type: object ORAnthropicContentBlock: discriminator: mapping: bash_code_execution_tool_result: '#/components/schemas/AnthropicBashCodeExecutionToolResult' code_execution_tool_result: '#/components/schemas/AnthropicCodeExecutionToolResult' compaction: '#/components/schemas/AnthropicCompactionBlock' container_upload: '#/components/schemas/AnthropicContainerUpload' redacted_thinking: '#/components/schemas/AnthropicRedactedThinkingBlock' server_tool_use: '#/components/schemas/AnthropicServerToolUseBlock' text: '#/components/schemas/AnthropicTextBlock' text_editor_code_execution_tool_result: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' thinking: '#/components/schemas/AnthropicThinkingBlock' tool_search_tool_result: '#/components/schemas/AnthropicToolSearchToolResult' tool_use: '#/components/schemas/AnthropicToolUseBlock' web_fetch_tool_result: '#/components/schemas/AnthropicWebFetchToolResult' web_search_tool_result: '#/components/schemas/AnthropicWebSearchToolResult' propertyName: type example: citations: null text: Hello, world! type: text oneOf: - $ref: '#/components/schemas/AnthropicTextBlock' - $ref: '#/components/schemas/AnthropicToolUseBlock' - $ref: '#/components/schemas/AnthropicThinkingBlock' - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock' - $ref: '#/components/schemas/AnthropicServerToolUseBlock' - $ref: '#/components/schemas/AnthropicWebSearchToolResult' - $ref: '#/components/schemas/AnthropicWebFetchToolResult' - $ref: '#/components/schemas/AnthropicCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicBashCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResult' - $ref: '#/components/schemas/AnthropicToolSearchToolResult' - $ref: '#/components/schemas/AnthropicContainerUpload' - $ref: '#/components/schemas/AnthropicCompactionBlock' ORAnthropicStopReason: enum: - end_turn - max_tokens - stop_sequence - tool_use - pause_turn - refusal - compaction - null example: end_turn nullable: true type: string OutputApplyPatchServerToolItem: description: An openrouter:apply_patch server tool output item example: filePath: /src/main.ts id: ap_tmp_abc123 status: completed type: openrouter:apply_patch properties: filePath: type: string id: type: string patch: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:apply_patch type: string required: - status - type type: object OutputBashServerToolItem: description: An openrouter:bash server tool output item example: command: ls -la exitCode: 0 id: bash_tmp_abc123 status: completed stdout: | total 0 type: openrouter:bash properties: command: type: string exitCode: type: integer id: type: string status: $ref: '#/components/schemas/ToolCallStatus' stderr: type: string stdout: type: string type: enum: - openrouter:bash type: string required: - status - type type: object OutputBrowserUseServerToolItem: description: An openrouter:browser_use server tool output item example: action: screenshot id: bu_tmp_abc123 status: completed type: openrouter:browser_use properties: action: type: string id: type: string screenshotB64: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:browser_use type: string required: - status - type type: object OutputCodeInterpreterCallItem: allOf: - $ref: '#/components/schemas/CodeInterpreterCallItem' - properties: {} type: object description: A code interpreter execution call with outputs example: code: print("hello") container_id: ctr-xyz789 id: ci-abc123 outputs: - logs: | hello type: logs status: completed type: code_interpreter_call OutputCodeInterpreterServerToolItem: description: An openrouter:code_interpreter server tool output item example: code: print("hello") id: ci_tmp_abc123 language: python status: completed stdout: | hello type: openrouter:code_interpreter properties: code: type: string exitCode: type: integer id: type: string language: type: string status: $ref: '#/components/schemas/ToolCallStatus' stderr: type: string stdout: type: string type: enum: - openrouter:code_interpreter type: string required: - status - type type: object OutputComputerCallItem: example: action: type: screenshot call_id: call-abc123 id: cu-abc123 pending_safety_checks: [] status: completed type: computer_call properties: action: nullable: true call_id: type: string id: type: string pending_safety_checks: items: properties: code: type: string id: type: string message: type: string required: - id - code - message type: object type: array status: enum: - completed - incomplete - in_progress type: string type: enum: - computer_call type: string required: - type - call_id - status - pending_safety_checks type: object OutputDatetimeItem: description: An openrouter:datetime server tool output item example: datetime: '2026-03-12T14:30:00.000Z' id: dt_tmp_abc123 status: completed timezone: UTC type: openrouter:datetime properties: datetime: description: ISO 8601 datetime string type: string id: type: string status: $ref: '#/components/schemas/ToolCallStatus' timezone: description: IANA timezone name type: string type: enum: - openrouter:datetime type: string required: - status - type - datetime - timezone type: object OutputFileSearchCallItem: allOf: - $ref: '#/components/schemas/OutputItemFileSearchCall' - properties: {} type: object example: id: fs-abc123 queries: - search term results: [] status: completed type: file_search_call OutputFileSearchServerToolItem: description: An openrouter:file_search server tool output item example: id: fs_tmp_abc123 queries: - search term status: completed type: openrouter:file_search properties: id: type: string queries: items: type: string type: array status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:file_search type: string required: - status - type type: object OutputFunctionCallItem: allOf: - $ref: '#/components/schemas/OutputItemFunctionCall' - properties: {} type: object example: arguments: '{"location":"San Francisco"}' call_id: call-abc123 id: fc-abc123 name: get_weather status: completed type: function_call OutputImageGenerationCallItem: allOf: - $ref: '#/components/schemas/OutputItemImageGenerationCall' - properties: {} type: object example: id: img-abc123 result: null status: completed type: image_generation_call OutputImageGenerationServerToolItem: description: An openrouter:image_generation server tool output item example: id: ig_tmp_abc123 imageUrl: https://example.com/image.png result: https://example.com/image.png status: completed type: openrouter:image_generation properties: id: type: string imageB64: type: string imageUrl: type: string result: description: The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format nullable: true type: string revisedPrompt: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:image_generation type: string required: - status - type type: object OutputItemAddedEvent: description: Event emitted when a new output item is added to the response example: item: content: [] id: item-1 role: assistant status: in_progress type: message output_index: 0 sequence_number: 2 type: response.output_item.added properties: item: discriminator: mapping: file_search_call: '#/components/schemas/OutputItemFileSearchCall' function_call: '#/components/schemas/OutputItemFunctionCall' image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' propertyName: type oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' - $ref: '#/components/schemas/OutputItemFunctionCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' output_index: type: integer sequence_number: type: integer type: enum: - response.output_item.added type: string required: - type - output_index - item - sequence_number type: object OutputItemDoneEvent: description: Event emitted when an output item is complete example: item: content: - annotations: [] text: Hello! How can I help you? type: output_text id: item-1 role: assistant status: completed type: message output_index: 0 sequence_number: 8 type: response.output_item.done properties: item: discriminator: mapping: file_search_call: '#/components/schemas/OutputItemFileSearchCall' function_call: '#/components/schemas/OutputItemFunctionCall' image_generation_call: '#/components/schemas/OutputItemImageGenerationCall' message: '#/components/schemas/OutputMessage' reasoning: '#/components/schemas/OutputItemReasoning' web_search_call: '#/components/schemas/OutputItemWebSearchCall' propertyName: type oneOf: - $ref: '#/components/schemas/OutputMessage' - $ref: '#/components/schemas/OutputItemReasoning' - $ref: '#/components/schemas/OutputItemFunctionCall' - $ref: '#/components/schemas/OutputItemWebSearchCall' - $ref: '#/components/schemas/OutputItemFileSearchCall' - $ref: '#/components/schemas/OutputItemImageGenerationCall' output_index: type: integer sequence_number: type: integer type: enum: - response.output_item.done type: string required: - type - output_index - item - sequence_number type: object OutputItemFileSearchCall: example: id: filesearch-abc123 queries: - machine learning algorithms - neural networks status: completed type: file_search_call properties: id: type: string queries: items: type: string type: array status: $ref: '#/components/schemas/WebSearchStatus' type: enum: - file_search_call type: string required: - type - id - queries - status type: object OutputItemFunctionCall: example: arguments: '{"location":"San Francisco","unit":"celsius"}' call_id: call-abc123 id: call-abc123 name: get_weather type: function_call properties: arguments: type: string call_id: type: string id: type: string name: type: string status: anyOf: - enum: - completed type: string - enum: - incomplete type: string - enum: - in_progress type: string type: enum: - function_call type: string required: - type - name - arguments - call_id type: object OutputItemImageGenerationCall: example: id: imagegen-abc123 result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== status: completed type: image_generation_call properties: id: type: string result: default: null nullable: true type: string status: $ref: '#/components/schemas/ImageGenerationStatus' type: enum: - image_generation_call type: string required: - type - id - status type: object OutputItemReasoning: example: id: reasoning-abc123 summary: - text: Analyzed the problem using first principles type: summary_text type: reasoning properties: content: items: $ref: '#/components/schemas/ReasoningTextContent' type: array encrypted_content: nullable: true type: string id: type: string status: anyOf: - enum: - completed type: string - enum: - incomplete type: string - enum: - in_progress type: string summary: items: $ref: '#/components/schemas/ReasoningSummaryText' type: array type: enum: - reasoning type: string required: - type - id - summary type: object OutputItems: description: An output item from the response discriminator: mapping: code_interpreter_call: '#/components/schemas/OutputCodeInterpreterCallItem' computer_call: '#/components/schemas/OutputComputerCallItem' file_search_call: '#/components/schemas/OutputFileSearchCallItem' function_call: '#/components/schemas/OutputFunctionCallItem' image_generation_call: '#/components/schemas/OutputImageGenerationCallItem' message: '#/components/schemas/OutputMessageItem' openrouter:apply_patch: '#/components/schemas/OutputApplyPatchServerToolItem' openrouter:bash: '#/components/schemas/OutputBashServerToolItem' openrouter:browser_use: '#/components/schemas/OutputBrowserUseServerToolItem' openrouter:code_interpreter: '#/components/schemas/OutputCodeInterpreterServerToolItem' openrouter:datetime: '#/components/schemas/OutputDatetimeItem' openrouter:experimental__search_models: '#/components/schemas/OutputSearchModelsServerToolItem' openrouter:file_search: '#/components/schemas/OutputFileSearchServerToolItem' openrouter:image_generation: '#/components/schemas/OutputImageGenerationServerToolItem' openrouter:mcp: '#/components/schemas/OutputMcpServerToolItem' openrouter:memory: '#/components/schemas/OutputMemoryServerToolItem' openrouter:text_editor: '#/components/schemas/OutputTextEditorServerToolItem' openrouter:tool_search: '#/components/schemas/OutputToolSearchServerToolItem' openrouter:web_fetch: '#/components/schemas/OutputWebFetchServerToolItem' openrouter:web_search: '#/components/schemas/OutputWebSearchServerToolItem' reasoning: '#/components/schemas/OutputReasoningItem' web_search_call: '#/components/schemas/OutputWebSearchCallItem' propertyName: type example: content: - text: Hello! How can I help you today? type: output_text id: msg-abc123 role: assistant status: completed type: message oneOf: - $ref: '#/components/schemas/OutputMessageItem' - $ref: '#/components/schemas/OutputReasoningItem' - $ref: '#/components/schemas/OutputFunctionCallItem' - $ref: '#/components/schemas/OutputWebSearchCallItem' - $ref: '#/components/schemas/OutputFileSearchCallItem' - $ref: '#/components/schemas/OutputImageGenerationCallItem' - $ref: '#/components/schemas/OutputCodeInterpreterCallItem' - $ref: '#/components/schemas/OutputComputerCallItem' - $ref: '#/components/schemas/OutputDatetimeItem' - $ref: '#/components/schemas/OutputWebSearchServerToolItem' - $ref: '#/components/schemas/OutputCodeInterpreterServerToolItem' - $ref: '#/components/schemas/OutputFileSearchServerToolItem' - $ref: '#/components/schemas/OutputImageGenerationServerToolItem' - $ref: '#/components/schemas/OutputBrowserUseServerToolItem' - $ref: '#/components/schemas/OutputBashServerToolItem' - $ref: '#/components/schemas/OutputTextEditorServerToolItem' - $ref: '#/components/schemas/OutputApplyPatchServerToolItem' - $ref: '#/components/schemas/OutputWebFetchServerToolItem' - $ref: '#/components/schemas/OutputToolSearchServerToolItem' - $ref: '#/components/schemas/OutputMemoryServerToolItem' - $ref: '#/components/schemas/OutputMcpServerToolItem' - $ref: '#/components/schemas/OutputSearchModelsServerToolItem' OutputItemWebSearchCall: example: action: query: OpenAI API type: search id: search-abc123 status: completed type: web_search_call properties: action: oneOf: - properties: queries: items: type: string type: array query: type: string sources: items: $ref: '#/components/schemas/WebSearchSource' type: array type: enum: - search type: string required: - type - query type: object - properties: type: enum: - open_page type: string url: nullable: true type: string required: - type type: object - properties: pattern: type: string type: enum: - find_in_page type: string url: type: string required: - type - pattern - url type: object id: type: string status: $ref: '#/components/schemas/WebSearchStatus' type: enum: - web_search_call type: string required: - type - id - action - status type: object OutputMcpServerToolItem: description: An openrouter:mcp server tool output item example: id: mcp_tmp_abc123 serverLabel: my-server status: completed toolName: get_data type: openrouter:mcp properties: id: type: string serverLabel: type: string status: $ref: '#/components/schemas/ToolCallStatus' toolName: type: string type: enum: - openrouter:mcp type: string required: - status - type type: object OutputMemoryServerToolItem: description: An openrouter:memory server tool output item example: action: read id: mem_tmp_abc123 key: user_preference status: completed type: openrouter:memory properties: action: enum: - read - write - delete type: string id: type: string key: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:memory type: string value: nullable: true required: - status - type type: object OutputMessage: example: content: - text: Hello! How can I help you today? type: output_text id: msg-abc123 role: assistant status: completed type: message properties: content: items: anyOf: - $ref: '#/components/schemas/ResponseOutputText' - $ref: '#/components/schemas/OpenAIResponsesRefusalContent' type: array id: type: string phase: anyOf: - enum: - commentary type: string - enum: - final_answer type: string - nullable: true description: >- The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. role: enum: - assistant type: string status: anyOf: - enum: - completed type: string - enum: - incomplete type: string - enum: - in_progress type: string type: enum: - message type: string required: - id - role - type - content type: object OutputMessageItem: allOf: - $ref: '#/components/schemas/OutputMessage' - properties: {} type: object description: An output message item example: content: - annotations: [] text: Hello! How can I help you? type: output_text id: msg-123 role: assistant status: completed type: message OutputModality: enum: - text - image - embeddings - audio - video - rerank - speech - transcription example: text type: string OutputModalityEnum: enum: - text - image example: text type: string OutputReasoningItem: allOf: - $ref: '#/components/schemas/OutputItemReasoning' - properties: content: items: $ref: '#/components/schemas/ReasoningTextContent' nullable: true type: array format: $ref: '#/components/schemas/ReasoningFormat' signature: description: A signature for the reasoning content, used for verification example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... nullable: true type: string type: object description: An output item containing reasoning example: content: - text: First, we analyze the problem... type: reasoning_text format: anthropic-claude-v1 id: reasoning-123 signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... status: completed summary: - text: Analyzed the problem and found the optimal solution. type: summary_text type: reasoning OutputSearchModelsServerToolItem: description: An openrouter:experimental__search_models server tool output item example: arguments: '{"query":"Claude Opus"}' id: sm_tmp_abc123 query: Claude Opus status: completed type: openrouter:experimental__search_models properties: arguments: description: The JSON arguments submitted to the search tool (e.g. {"query":"Claude"}) type: string id: type: string query: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:experimental__search_models type: string required: - status - type type: object OutputTextEditorServerToolItem: description: An openrouter:text_editor server tool output item example: command: view filePath: /src/main.ts id: te_tmp_abc123 status: completed type: openrouter:text_editor properties: command: enum: - view - create - str_replace - insert type: string filePath: type: string id: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:text_editor type: string required: - status - type type: object OutputToolSearchServerToolItem: description: An openrouter:tool_search server tool output item example: id: ts_tmp_abc123 query: weather tools status: completed type: openrouter:tool_search properties: id: type: string query: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:tool_search type: string required: - status - type type: object OutputWebFetchServerToolItem: description: An openrouter:web_fetch server tool output item example: httpStatus: 200 id: wf_tmp_abc123 status: completed title: Example Domain type: openrouter:web_fetch url: https://example.com properties: content: type: string error: description: The error message if the fetch failed. type: string httpStatus: description: The HTTP status code returned by the upstream URL fetch. type: integer id: type: string status: $ref: '#/components/schemas/ToolCallStatus' title: type: string type: enum: - openrouter:web_fetch type: string url: type: string required: - status - type type: object OutputWebSearchCallItem: allOf: - $ref: '#/components/schemas/OutputItemWebSearchCall' - properties: {} type: object example: id: ws-abc123 status: completed type: web_search_call OutputWebSearchServerToolItem: description: An openrouter:web_search server tool output item example: action: query: latest AI news type: search id: ws_tmp_abc123 status: completed type: openrouter:web_search properties: action: description: >- The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model issued and optional source URLs returned by the search provider. properties: query: type: string sources: items: properties: type: enum: - url type: string url: type: string required: - type - url type: object type: array type: enum: - search type: string required: - type - query type: object id: type: string status: $ref: '#/components/schemas/ToolCallStatus' type: enum: - openrouter:web_search type: string required: - status - type type: object Parameter: enum: - temperature - top_p - top_k - min_p - top_a - frequency_penalty - presence_penalty - repetition_penalty - max_tokens - max_completion_tokens - logit_bias - logprobs - top_logprobs - seed - response_format - structured_outputs - stop - tools - tool_choice - parallel_tool_calls - include_reasoning - reasoning - reasoning_effort - web_search_options - verbosity example: temperature type: string ParetoRouterPlugin: example: enabled: true id: pareto-router min_coding_score: 0.8 properties: enabled: description: Set to false to disable the pareto-router plugin for this request. Defaults to true. type: boolean id: enum: - pareto-router type: string min_coding_score: description: >- Minimum desired coding score between 0 and 1, where 1 is best. Higher values select from stronger coding models (sourced from Artificial Analysis coding percentiles). Maps internally to one of three tiers (low, medium, high). Omit to use the router default tier. example: 0.8 format: double maximum: 1 minimum: 0 type: number required: - id type: object PayloadTooLargeResponse: description: Payload Too Large - Request payload exceeds size limits example: error: code: 413 message: Request payload too large properties: error: $ref: '#/components/schemas/PayloadTooLargeResponseErrorData' user_id: nullable: true type: string required: - error type: object PayloadTooLargeResponseErrorData: description: Error data for PayloadTooLargeResponse example: code: 413 message: Request payload too large properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object PaymentRequiredResponse: description: Payment Required - Insufficient credits or quota to complete request example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits properties: error: $ref: '#/components/schemas/PaymentRequiredResponseErrorData' user_id: nullable: true type: string required: - error type: object PaymentRequiredResponseErrorData: description: Error data for PaymentRequiredResponse example: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object PDFParserEngine: anyOf: - enum: - mistral-ocr - native - cloudflare-ai type: string - enum: - pdf-text type: string description: >- The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to "cloudflare-ai". example: cloudflare-ai PDFParserOptions: description: Options for PDF parsing. example: engine: cloudflare-ai properties: engine: $ref: '#/components/schemas/PDFParserEngine' type: object PercentileLatencyCutoffs: description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred. example: p50: 5 p90: 10 properties: p50: description: Maximum p50 latency (seconds) format: double nullable: true type: number p75: description: Maximum p75 latency (seconds) format: double nullable: true type: number p90: description: Maximum p90 latency (seconds) format: double nullable: true type: number p99: description: Maximum p99 latency (seconds) format: double nullable: true type: number type: object PercentileStats: description: >- Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests. example: p50: 25.5 p75: 35.2 p90: 48.7 p99: 85.3 nullable: true properties: p50: description: Median (50th percentile) example: 25.5 format: double type: number p75: description: 75th percentile example: 35.2 format: double type: number p90: description: 90th percentile example: 48.7 format: double type: number p99: description: 99th percentile example: 85.3 format: double type: number required: - p50 - p75 - p90 - p99 type: object PercentileThroughputCutoffs: description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred. example: p50: 100 p90: 50 properties: p50: description: Minimum p50 throughput (tokens/sec) format: double nullable: true type: number p75: description: Minimum p75 throughput (tokens/sec) format: double nullable: true type: number p90: description: Minimum p90 throughput (tokens/sec) format: double nullable: true type: number p99: description: Minimum p99 throughput (tokens/sec) format: double nullable: true type: number type: object PerRequestLimits: description: Per-request token limits example: completion_tokens: 1000 prompt_tokens: 1000 nullable: true properties: completion_tokens: description: Maximum completion tokens per request example: 1000 type: number prompt_tokens: description: Maximum prompt tokens per request example: 1000 type: number required: - prompt_tokens - completion_tokens type: object PreferredMaxLatency: anyOf: - format: double type: number - $ref: '#/components/schemas/PercentileLatencyCutoffs' - nullable: true description: >- Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. example: 5 PreferredMinThroughput: anyOf: - format: double type: number - $ref: '#/components/schemas/PercentileThroughputCutoffs' - nullable: true description: >- Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. example: 100 Preview_20250311_WebSearchServerTool: description: Web search preview tool configuration (2025-03-11 version) example: type: web_search_preview_2025_03_11 properties: engine: $ref: '#/components/schemas/WebSearchEngineEnum' filters: $ref: '#/components/schemas/WebSearchDomainFilter' max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - web_search_preview_2025_03_11 type: string user_location: $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - type type: object Preview_WebSearchServerTool: description: Web search preview tool configuration example: type: web_search_preview properties: engine: $ref: '#/components/schemas/WebSearchEngineEnum' filters: $ref: '#/components/schemas/WebSearchDomainFilter' max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - web_search_preview type: string user_location: $ref: '#/components/schemas/Preview_WebSearchUserLocation' required: - type type: object Preview_WebSearchUserLocation: example: city: San Francisco country: USA region: California timezone: America/Los_Angeles type: approximate nullable: true properties: city: nullable: true type: string country: nullable: true type: string region: nullable: true type: string timezone: nullable: true type: string type: enum: - approximate type: string required: - type type: object ProviderName: enum: - AkashML - AI21 - AionLabs - Alibaba - Ambient - Baidu - Amazon Bedrock - Amazon Nova - Anthropic - Arcee AI - AtlasCloud - Avian - Azure - BaseTen - BytePlus - Black Forest Labs - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - Crusoe - DeepInfra - DeepSeek - DekaLLM - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perplexity - Phala - Recraft - Reka - Relace - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Together - Upstage - Venice - WandB - Xiaomi - xAI - Z.AI - FakeProvider example: OpenAI type: string ProviderOptions: description: >- Provider-specific options keyed by provider slug. The options for the matched provider are spread into the upstream request body. example: openai: max_tokens: 1000 properties: 01ai: additionalProperties: nullable: true type: object ai21: additionalProperties: nullable: true type: object aion-labs: additionalProperties: nullable: true type: object akashml: additionalProperties: nullable: true type: object alibaba: additionalProperties: nullable: true type: object amazon-bedrock: additionalProperties: nullable: true type: object amazon-nova: additionalProperties: nullable: true type: object ambient: additionalProperties: nullable: true type: object anthropic: additionalProperties: nullable: true type: object anyscale: additionalProperties: nullable: true type: object arcee-ai: additionalProperties: nullable: true type: object atlas-cloud: additionalProperties: nullable: true type: object atoma: additionalProperties: nullable: true type: object avian: additionalProperties: nullable: true type: object azure: additionalProperties: nullable: true type: object baidu: additionalProperties: nullable: true type: object baseten: additionalProperties: nullable: true type: object black-forest-labs: additionalProperties: nullable: true type: object byteplus: additionalProperties: nullable: true type: object centml: additionalProperties: nullable: true type: object cerebras: additionalProperties: nullable: true type: object chutes: additionalProperties: nullable: true type: object cirrascale: additionalProperties: nullable: true type: object clarifai: additionalProperties: nullable: true type: object cloudflare: additionalProperties: nullable: true type: object cohere: additionalProperties: nullable: true type: object crofai: additionalProperties: nullable: true type: object crusoe: additionalProperties: nullable: true type: object deepinfra: additionalProperties: nullable: true type: object deepseek: additionalProperties: nullable: true type: object dekallm: additionalProperties: nullable: true type: object enfer: additionalProperties: nullable: true type: object fake-provider: additionalProperties: nullable: true type: object featherless: additionalProperties: nullable: true type: object fireworks: additionalProperties: nullable: true type: object friendli: additionalProperties: nullable: true type: object gmicloud: additionalProperties: nullable: true type: object google-ai-studio: additionalProperties: nullable: true type: object google-vertex: additionalProperties: nullable: true type: object gopomelo: additionalProperties: nullable: true type: object groq: additionalProperties: nullable: true type: object huggingface: additionalProperties: nullable: true type: object hyperbolic: additionalProperties: nullable: true type: object hyperbolic-quantized: additionalProperties: nullable: true type: object inception: additionalProperties: nullable: true type: object inceptron: additionalProperties: nullable: true type: object inference-net: additionalProperties: nullable: true type: object infermatic: additionalProperties: nullable: true type: object inflection: additionalProperties: nullable: true type: object inocloud: additionalProperties: nullable: true type: object io-net: additionalProperties: nullable: true type: object ionstream: additionalProperties: nullable: true type: object klusterai: additionalProperties: nullable: true type: object lambda: additionalProperties: nullable: true type: object lepton: additionalProperties: nullable: true type: object liquid: additionalProperties: nullable: true type: object lynn: additionalProperties: nullable: true type: object lynn-private: additionalProperties: nullable: true type: object mancer: additionalProperties: nullable: true type: object mancer-old: additionalProperties: nullable: true type: object mara: additionalProperties: nullable: true type: object meta: additionalProperties: nullable: true type: object minimax: additionalProperties: nullable: true type: object mistral: additionalProperties: nullable: true type: object modal: additionalProperties: nullable: true type: object modelrun: additionalProperties: nullable: true type: object modular: additionalProperties: nullable: true type: object moonshotai: additionalProperties: nullable: true type: object morph: additionalProperties: nullable: true type: object ncompass: additionalProperties: nullable: true type: object nebius: additionalProperties: nullable: true type: object nex-agi: additionalProperties: nullable: true type: object nextbit: additionalProperties: nullable: true type: object nineteen: additionalProperties: nullable: true type: object novita: additionalProperties: nullable: true type: object nvidia: additionalProperties: nullable: true type: object octoai: additionalProperties: nullable: true type: object open-inference: additionalProperties: nullable: true type: object openai: additionalProperties: nullable: true type: object parasail: additionalProperties: nullable: true type: object perplexity: additionalProperties: nullable: true type: object phala: additionalProperties: nullable: true type: object poolside: additionalProperties: nullable: true type: object recraft: additionalProperties: nullable: true type: object recursal: additionalProperties: nullable: true type: object reflection: additionalProperties: nullable: true type: object reka: additionalProperties: nullable: true type: object relace: additionalProperties: nullable: true type: object replicate: additionalProperties: nullable: true type: object sambanova: additionalProperties: nullable: true type: object sambanova-cloaked: additionalProperties: nullable: true type: object seed: additionalProperties: nullable: true type: object sf-compute: additionalProperties: nullable: true type: object siliconflow: additionalProperties: nullable: true type: object sourceful: additionalProperties: nullable: true type: object stealth: additionalProperties: nullable: true type: object stepfun: additionalProperties: nullable: true type: object streamlake: additionalProperties: nullable: true type: object switchpoint: additionalProperties: nullable: true type: object targon: additionalProperties: nullable: true type: object together: additionalProperties: nullable: true type: object together-lite: additionalProperties: nullable: true type: object ubicloud: additionalProperties: nullable: true type: object upstage: additionalProperties: nullable: true type: object venice: additionalProperties: nullable: true type: object wandb: additionalProperties: nullable: true type: object xai: additionalProperties: nullable: true type: object xiaomi: additionalProperties: nullable: true type: object z-ai: additionalProperties: nullable: true type: object type: object ProviderOverloadedResponse: description: Provider Overloaded - Provider is temporarily overloaded example: error: code: 529 message: Provider returned error properties: error: $ref: '#/components/schemas/ProviderOverloadedResponseErrorData' user_id: nullable: true type: string required: - error type: object ProviderOverloadedResponseErrorData: description: Error data for ProviderOverloadedResponse example: code: 529 message: Provider returned error properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object ProviderPreferences: additionalProperties: false description: When multiple model providers are available, optionally indicate your routing preference. example: allow_fallbacks: true nullable: true properties: allow_fallbacks: description: > Whether to allow backup providers to serve requests - true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the next best provider. - false: use only the primary/custom provider, and return the upstream error if it's unavailable. nullable: true type: boolean data_collection: description: >- Data collection setting. If no available model provider meets the requirement, your request will return an error. - allow: (default) allow providers which store user data non-transiently and may train on it - deny: use only providers which do not collect user data. enum: - deny - allow - null example: allow nullable: true type: string enforce_distillable_text: description: >- Whether to restrict routing to only models that allow text distillation. When true, only models where the author has allowed distillation will be used. example: true nullable: true type: boolean ignore: description: >- List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request. example: - openai - anthropic items: anyOf: - $ref: '#/components/schemas/ProviderName' - type: string nullable: true type: array max_price: description: >- The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. properties: audio: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: Price per audio unit completion: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: Price per million completion tokens image: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: Price per image prompt: $ref: '#/components/schemas/BigNumberUnion' request: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: Price per request type: object only: description: >- List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request. example: - openai - anthropic items: anyOf: - $ref: '#/components/schemas/ProviderName' - type: string nullable: true type: array order: description: >- An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message. example: - openai - anthropic items: anyOf: - $ref: '#/components/schemas/ProviderName' - type: string nullable: true type: array preferred_max_latency: $ref: '#/components/schemas/PreferredMaxLatency' preferred_min_throughput: $ref: '#/components/schemas/PreferredMinThroughput' quantizations: description: A list of quantization levels to filter the provider by. items: $ref: '#/components/schemas/Quantization' nullable: true type: array require_parameters: description: >- Whether to filter providers to only those that support the parameters you've provided. If this setting is omitted or set to false, then providers will receive only the parameters they support, and ignore the rest. nullable: true type: boolean sort: anyOf: - $ref: '#/components/schemas/ProviderSort' - $ref: '#/components/schemas/ProviderSortConfig' - nullable: true description: >- The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed. example: price zdr: description: >- Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do not retain prompts will be used. example: true nullable: true type: boolean type: object ProviderResponse: description: Details of a provider response for a generation attempt example: endpoint_id: ep_abc123 id: chatcmpl-abc123 is_byok: false latency: 1200 model_permaslug: openai/gpt-4 provider_name: OpenAI status: 200 properties: endpoint_id: description: Internal endpoint identifier example: ep_abc123 type: string id: description: Upstream provider response identifier example: chatcmpl-abc123 type: string is_byok: description: Whether the request used a bring-your-own-key example: false type: boolean latency: description: Response latency in milliseconds example: 1200 type: number model_permaslug: description: Canonical model slug example: openai/gpt-4 type: string provider_name: description: Name of the provider enum: - AnyScale - Atoma - Cent-ML - CrofAI - Enfer - GoPomelo - HuggingFace - Hyperbolic 2 - InoCloud - Kluster - Lambda - Lepton - Lynn 2 - Lynn - Mancer - Meta - Modal - Nineteen - OctoAI - Recursal - Reflection - Replicate - SambaNova 2 - SF Compute - Targon - Together 2 - Ubicloud - 01.AI - AkashML - AI21 - AionLabs - Alibaba - Ambient - Baidu - Amazon Bedrock - Amazon Nova - Anthropic - Arcee AI - AtlasCloud - Avian - Azure - BaseTen - BytePlus - Black Forest Labs - Cerebras - Chutes - Cirrascale - Clarifai - Cloudflare - Cohere - Crusoe - DeepInfra - DeepSeek - DekaLLM - Featherless - Fireworks - Friendli - GMICloud - Google - Google AI Studio - Groq - Hyperbolic - Inception - Inceptron - InferenceNet - Ionstream - Infermatic - Io Net - Inflection - Liquid - Mara - Mancer 2 - Minimax - ModelRun - Mistral - Modular - Moonshot AI - Morph - NCompass - Nebius - Nex AGI - NextBit - Novita - Nvidia - OpenAI - OpenInference - Parasail - Poolside - Perplexity - Phala - Recraft - Reka - Relace - SambaNova - Seed - SiliconFlow - Sourceful - StepFun - Stealth - StreamLake - Switchpoint - Together - Upstage - Venice - WandB - Xiaomi - xAI - Z.AI - FakeProvider example: OpenAI type: string status: description: HTTP status code from the provider example: 200 nullable: true type: number required: - status type: object ProviderSort: description: The provider sorting strategy (price, throughput, latency) enum: - price - throughput - latency - exacto example: price type: string ProviderSortConfig: description: The provider sorting strategy (price, throughput, latency) example: by: price partition: model properties: by: description: The provider sorting strategy (price, throughput, latency) enum: - price - throughput - latency - exacto - null example: price nullable: true type: string partition: description: >- Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model. enum: - model - none - null example: model nullable: true type: string type: object PublicEndpoint: description: Information about a specific model endpoint example: context_length: 8192 latency_last_30m: p50: 0.25 p75: 0.35 p90: 0.48 p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 model_id: openai/gpt-4 model_name: GPT-4 name: 'OpenAI: GPT-4' pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' provider_name: OpenAI quantization: fp16 status: 0 supported_parameters: - temperature - top_p - max_tokens supports_implicit_caching: true tag: openai throughput_last_30m: p50: 45.2 p75: 38.5 p90: 28.3 p99: 15.1 uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 properties: context_length: type: integer latency_last_30m: $ref: '#/components/schemas/PercentileStats' max_completion_tokens: nullable: true type: integer max_prompt_tokens: nullable: true type: integer model_id: description: The unique identifier for the model (permaslug) example: openai/gpt-4 type: string model_name: type: string name: type: string pricing: properties: audio: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number audio_output: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number completion: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number discount: type: number image: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number image_output: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number image_token: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_audio_cache: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_cache_read: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_cache_write: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number internal_reasoning: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number prompt: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number request: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number web_search: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number required: - prompt - completion type: object provider_name: $ref: '#/components/schemas/ProviderName' quantization: allOf: - $ref: '#/components/schemas/Quantization' - nullable: true status: $ref: '#/components/schemas/EndpointStatus' supported_parameters: items: $ref: '#/components/schemas/Parameter' type: array supports_implicit_caching: type: boolean tag: type: string throughput_last_30m: allOf: - $ref: '#/components/schemas/PercentileStats' - description: >- Throughput percentiles in tokens per second over the last 30 minutes. Throughput measures output token generation speed. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests. uptime_last_1d: description: >- Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. format: double nullable: true type: number uptime_last_30m: format: double nullable: true type: number uptime_last_5m: description: >- Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. format: double nullable: true type: number required: - name - model_id - model_name - context_length - pricing - provider_name - tag - quantization - max_completion_tokens - max_prompt_tokens - supported_parameters - uptime_last_30m - uptime_last_5m - uptime_last_1d - supports_implicit_caching - latency_last_30m - throughput_last_30m type: object PublicPricing: description: Pricing information for the model example: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' properties: audio: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number audio_output: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number completion: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number discount: type: number image: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number image_output: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number image_token: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_audio_cache: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_cache_read: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number input_cache_write: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number internal_reasoning: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number prompt: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number request: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number web_search: allOf: - $ref: '#/components/schemas/BigNumberUnion' - description: A number or string value representing a large number required: - prompt - completion type: object Quantization: enum: - int4 - int8 - fp4 - fp6 - fp8 - fp16 - bf16 - fp32 - unknown example: fp16 type: string ReasoningConfig: allOf: - $ref: '#/components/schemas/BaseReasoningConfig' - nullable: true properties: enabled: nullable: true type: boolean max_tokens: nullable: true type: integer type: object description: Configuration for reasoning mode in the response example: enabled: true summary: auto ReasoningDeltaEvent: allOf: - $ref: '#/components/schemas/BaseReasoningDeltaEvent' - properties: {} type: object description: Event emitted when reasoning text delta is streamed example: content_index: 0 delta: First, we need item_id: item-1 output_index: 0 sequence_number: 4 type: response.reasoning_text.delta ReasoningDetailEncrypted: description: Reasoning detail encrypted schema example: data: encrypted data type: reasoning.encrypted properties: data: type: string format: $ref: '#/components/schemas/ReasoningFormat' id: nullable: true type: string index: type: integer type: enum: - reasoning.encrypted type: string required: - type - data type: object ReasoningDetailSummary: description: Reasoning detail summary schema example: summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... type: reasoning.summary properties: format: $ref: '#/components/schemas/ReasoningFormat' id: nullable: true type: string index: type: integer summary: type: string type: enum: - reasoning.summary type: string required: - type - summary type: object ReasoningDetailText: description: Reasoning detail text schema example: signature: signature text: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... type: reasoning.text properties: format: $ref: '#/components/schemas/ReasoningFormat' id: nullable: true type: string index: type: integer signature: nullable: true type: string text: nullable: true type: string type: enum: - reasoning.text type: string required: - type type: object ReasoningDetailUnion: description: Reasoning detail union schema discriminator: mapping: reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted' reasoning.summary: '#/components/schemas/ReasoningDetailSummary' reasoning.text: '#/components/schemas/ReasoningDetailText' propertyName: type example: summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions... type: reasoning.summary oneOf: - $ref: '#/components/schemas/ReasoningDetailSummary' - $ref: '#/components/schemas/ReasoningDetailEncrypted' - $ref: '#/components/schemas/ReasoningDetailText' ReasoningDoneEvent: allOf: - $ref: '#/components/schemas/BaseReasoningDoneEvent' - properties: {} type: object description: Event emitted when reasoning text streaming is complete example: content_index: 0 item_id: item-1 output_index: 0 sequence_number: 6 text: First, we need to identify the key components and then combine them logically. type: response.reasoning_text.done ReasoningEffort: enum: - xhigh - high - medium - low - minimal - none - null example: medium nullable: true type: string ReasoningFormat: enum: - unknown - openai-responses-v1 - azure-openai-responses-v1 - xai-responses-v1 - anthropic-claude-v1 - google-gemini-v1 - null example: unknown nullable: true type: string ReasoningItem: allOf: - $ref: '#/components/schemas/OutputItemReasoning' - properties: content: items: $ref: '#/components/schemas/ReasoningTextContent' nullable: true type: array format: $ref: '#/components/schemas/ReasoningFormat' signature: nullable: true type: string type: object description: Reasoning output item with signature and format extensions example: id: reasoning-abc123 summary: - text: Step by step analysis type: summary_text type: reasoning ReasoningSummaryPartAddedEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent' - properties: {} type: object description: Event emitted when a reasoning summary part is added example: item_id: item-1 output_index: 0 part: text: '' type: summary_text sequence_number: 3 summary_index: 0 type: response.reasoning_summary_part.added ReasoningSummaryPartDoneEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryPartDoneEvent' - properties: {} type: object description: Event emitted when a reasoning summary part is complete example: item_id: item-1 output_index: 0 part: text: Analyzing the problem step by step to find the optimal solution. type: summary_text sequence_number: 7 summary_index: 0 type: response.reasoning_summary_part.done ReasoningSummaryText: example: text: Analyzed the problem using first principles type: summary_text properties: text: type: string type: enum: - summary_text type: string required: - type - text type: object ReasoningSummaryTextDeltaEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent' - properties: {} type: object description: Event emitted when reasoning summary text delta is streamed example: delta: Analyzing item_id: item-1 output_index: 0 sequence_number: 4 summary_index: 0 type: response.reasoning_summary_text.delta ReasoningSummaryTextDoneEvent: allOf: - $ref: '#/components/schemas/BaseReasoningSummaryTextDoneEvent' - properties: {} type: object description: Event emitted when reasoning summary text streaming is complete example: item_id: item-1 output_index: 0 sequence_number: 6 summary_index: 0 text: Analyzing the problem step by step to find the optimal solution. type: response.reasoning_summary_text.done ReasoningSummaryVerbosity: enum: - auto - concise - detailed - null example: auto nullable: true type: string ReasoningTextContent: example: text: Let me think step by step about this problem... type: reasoning_text properties: text: type: string type: enum: - reasoning_text type: string required: - type - text type: object RefusalDeltaEvent: allOf: - $ref: '#/components/schemas/BaseRefusalDeltaEvent' - properties: {} type: object description: Event emitted when a refusal delta is streamed example: content_index: 0 delta: I'm sorry item_id: item-1 output_index: 0 sequence_number: 4 type: response.refusal.delta RefusalDoneEvent: allOf: - $ref: '#/components/schemas/BaseRefusalDoneEvent' - properties: {} type: object description: Event emitted when refusal streaming is complete example: content_index: 0 item_id: item-1 output_index: 0 refusal: I'm sorry, but I can't assist with that request. sequence_number: 6 type: response.refusal.done RequestMetadata: additionalProperties: maxLength: 512 type: string description: >- Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. example: session_id: abc-def-ghi user_id: '123' nullable: true type: object RequestTimeoutResponse: description: Request Timeout - Operation exceeded time limit example: error: code: 408 message: Operation timed out. Please try again later. properties: error: $ref: '#/components/schemas/RequestTimeoutResponseErrorData' user_id: nullable: true type: string required: - error type: object RequestTimeoutResponseErrorData: description: Error data for RequestTimeoutResponse example: code: 408 message: Operation timed out. Please try again later. properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object ResponseHealingPlugin: example: enabled: true id: response-healing properties: enabled: description: Set to false to disable the response-healing plugin for this request. Defaults to true. type: boolean id: enum: - response-healing type: string required: - id type: object ResponseIncludesEnum: enum: - file_search_call.results - message.input_image.image_url - computer_call_output.output.image_url - reasoning.encrypted_content - code_interpreter_call.outputs example: file_search_call.results type: string ResponseOutputText: example: annotations: - end_index: 42 start_index: 0 title: Paris - Wikipedia type: url_citation url: https://en.wikipedia.org/wiki/Paris text: The capital of France is Paris. type: output_text properties: annotations: items: $ref: '#/components/schemas/OpenAIResponsesAnnotation' type: array logprobs: items: properties: bytes: items: type: integer type: array logprob: format: double type: number token: type: string top_logprobs: items: properties: bytes: items: type: integer type: array logprob: format: double type: number token: type: string required: - token - bytes - logprob type: object type: array required: - token - bytes - logprob - top_logprobs type: object type: array text: type: string type: enum: - output_text type: string required: - type - text type: object ResponsesErrorField: description: Error information returned from the API example: code: rate_limit_exceeded message: Rate limit exceeded. Please try again later. nullable: true properties: code: enum: - server_error - rate_limit_exceeded - invalid_prompt - vector_store_timeout - invalid_image - invalid_image_format - invalid_base64_image - invalid_image_url - image_too_large - image_too_small - image_parse_error - image_content_policy_violation - invalid_image_mode - image_file_too_large - unsupported_image_media_type - empty_image_file - failed_to_download_image - image_file_not_found type: string message: type: string required: - code - message type: object ResponsesRequest: description: Request schema for Responses endpoint example: input: - content: Hello, how are you? role: user type: message model: anthropic/claude-4.5-sonnet-20250929 temperature: 0.7 tools: - description: Get the current weather in a given location name: get_current_weather parameters: properties: location: type: string type: object type: function top_p: 0.9 properties: background: nullable: true type: boolean frequency_penalty: format: double nullable: true type: number image_config: $ref: '#/components/schemas/ImageConfig' include: items: $ref: '#/components/schemas/ResponseIncludesEnum' nullable: true type: array input: $ref: '#/components/schemas/Inputs' instructions: nullable: true type: string max_output_tokens: nullable: true type: integer max_tool_calls: nullable: true type: integer metadata: $ref: '#/components/schemas/RequestMetadata' modalities: description: Output modalities for the response. Supported values are "text" and "image". example: - text - image items: $ref: '#/components/schemas/OutputModalityEnum' type: array model: type: string models: items: type: string type: array parallel_tool_calls: nullable: true type: boolean plugins: description: Plugins you want to enable for this request, including their settings. items: discriminator: mapping: auto-router: '#/components/schemas/AutoRouterPlugin' context-compression: '#/components/schemas/ContextCompressionPlugin' file-parser: '#/components/schemas/FileParserPlugin' moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' web: '#/components/schemas/WebSearchPlugin' propertyName: id oneOf: - $ref: '#/components/schemas/AutoRouterPlugin' - $ref: '#/components/schemas/ModerationPlugin' - $ref: '#/components/schemas/WebSearchPlugin' - $ref: '#/components/schemas/FileParserPlugin' - $ref: '#/components/schemas/ResponseHealingPlugin' - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' type: array presence_penalty: format: double nullable: true type: number previous_response_id: nullable: true type: string prompt: $ref: '#/components/schemas/StoredPromptTemplate' prompt_cache_key: nullable: true type: string provider: $ref: '#/components/schemas/ProviderPreferences' reasoning: $ref: '#/components/schemas/ReasoningConfig' route: $ref: '#/components/schemas/DeprecatedRoute' safety_identifier: nullable: true type: string service_tier: default: auto enum: - auto - default - flex - priority - scale - null nullable: true type: string session_id: description: >- A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for observability. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. maxLength: 256 type: string store: const: false default: false type: boolean stream: default: false type: boolean temperature: format: double nullable: true type: number text: $ref: '#/components/schemas/TextExtendedConfig' tool_choice: $ref: '#/components/schemas/OpenAIResponsesToolChoice' tools: items: anyOf: - allOf: - $ref: '#/components/schemas/FunctionTool' - properties: {} type: object description: Function tool definition example: description: Get the current weather in a location name: get_weather parameters: properties: location: description: The city and state type: string unit: enum: - celsius - fahrenheit type: string required: - location type: object type: function - $ref: '#/components/schemas/Preview_WebSearchServerTool' - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool' - $ref: '#/components/schemas/Legacy_WebSearchServerTool' - $ref: '#/components/schemas/WebSearchServerTool' - $ref: '#/components/schemas/FileSearchServerTool' - $ref: '#/components/schemas/ComputerUseServerTool' - $ref: '#/components/schemas/CodeInterpreterServerTool' - $ref: '#/components/schemas/McpServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool' - $ref: '#/components/schemas/CodexLocalShellTool' - $ref: '#/components/schemas/ShellServerTool' - $ref: '#/components/schemas/ApplyPatchServerTool' - $ref: '#/components/schemas/CustomTool' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - $ref: '#/components/schemas/ChatSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' type: array top_k: type: integer top_logprobs: nullable: true type: integer top_p: format: double nullable: true type: number trace: $ref: '#/components/schemas/TraceConfig' truncation: $ref: '#/components/schemas/OpenAIResponsesTruncation' user: description: >- A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. maxLength: 256 type: string type: object SearchContextSizeEnum: description: Size of the search context for web search tools enum: - low - medium - high example: medium type: string SearchModelsServerToolConfig: description: Configuration for the openrouter:experimental__search_models server tool example: max_results: 5 properties: max_results: description: Maximum number of models to return. Defaults to 5, max 20. example: 5 type: integer type: object SearchQualityLevel: description: >- How much context to retrieve per result. Defaults to medium (15000 chars). Applies to Exa and Parallel engines; ignored with native provider search and Firecrawl. enum: - low - medium - high example: medium type: string ServiceTier: enum: - auto - default - flex - priority - scale - null example: default nullable: true type: string ServiceUnavailableResponse: description: Service Unavailable - Service temporarily unavailable example: error: code: 503 message: Service temporarily unavailable properties: error: $ref: '#/components/schemas/ServiceUnavailableResponseErrorData' user_id: nullable: true type: string required: - error type: object ServiceUnavailableResponseErrorData: description: Error data for ServiceUnavailableResponse example: code: 503 message: Service temporarily unavailable properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object ShellServerTool: description: Shell tool configuration example: type: shell properties: type: enum: - shell type: string required: - type type: object SpeechRequest: description: Text-to-speech request input example: input: Hello world model: elevenlabs/eleven-turbo-v2 response_format: pcm speed: 1 voice: alloy properties: input: description: Text to synthesize example: Hello world type: string model: description: TTS model identifier example: elevenlabs/eleven-turbo-v2 type: string provider: description: Provider-specific passthrough configuration properties: options: $ref: '#/components/schemas/ProviderOptions' type: object response_format: default: pcm description: Audio output format enum: - mp3 - pcm example: pcm type: string speed: description: >- Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers. example: 1 format: double type: number voice: description: Voice identifier (provider-specific). example: alloy type: string required: - model - input - voice type: object StoredPromptTemplate: example: id: prompt-abc123 variables: name: John nullable: true properties: id: type: string variables: additionalProperties: anyOf: - type: string - $ref: '#/components/schemas/InputText' - $ref: '#/components/schemas/InputImage' - $ref: '#/components/schemas/InputFile' nullable: true type: object required: - id type: object StreamEvents: description: Union of all possible event types emitted during response streaming discriminator: mapping: error: '#/components/schemas/ErrorEvent' response.completed: '#/components/schemas/StreamEventsResponseCompleted' response.content_part.added: '#/components/schemas/ContentPartAddedEvent' response.content_part.done: '#/components/schemas/ContentPartDoneEvent' response.created: '#/components/schemas/OpenResponsesCreatedEvent' response.failed: '#/components/schemas/StreamEventsResponseFailed' response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent' response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent' response.image_generation_call.completed: '#/components/schemas/ImageGenCallCompletedEvent' response.image_generation_call.generating: '#/components/schemas/ImageGenCallGeneratingEvent' response.image_generation_call.in_progress: '#/components/schemas/ImageGenCallInProgressEvent' response.image_generation_call.partial_image: '#/components/schemas/ImageGenCallPartialImageEvent' response.in_progress: '#/components/schemas/OpenResponsesInProgressEvent' response.incomplete: '#/components/schemas/StreamEventsResponseIncomplete' response.output_item.added: '#/components/schemas/StreamEventsResponseOutputItemAdded' response.output_item.done: '#/components/schemas/StreamEventsResponseOutputItemDone' response.output_text.annotation.added: '#/components/schemas/AnnotationAddedEvent' response.output_text.delta: '#/components/schemas/TextDeltaEvent' response.output_text.done: '#/components/schemas/TextDoneEvent' response.reasoning_summary_part.added: '#/components/schemas/ReasoningSummaryPartAddedEvent' response.reasoning_summary_part.done: '#/components/schemas/ReasoningSummaryPartDoneEvent' response.reasoning_summary_text.delta: '#/components/schemas/ReasoningSummaryTextDeltaEvent' response.reasoning_summary_text.done: '#/components/schemas/ReasoningSummaryTextDoneEvent' response.reasoning_text.delta: '#/components/schemas/ReasoningDeltaEvent' response.reasoning_text.done: '#/components/schemas/ReasoningDoneEvent' response.refusal.delta: '#/components/schemas/RefusalDeltaEvent' response.refusal.done: '#/components/schemas/RefusalDoneEvent' response.web_search_call.completed: '#/components/schemas/WebSearchCallCompletedEvent' response.web_search_call.in_progress: '#/components/schemas/WebSearchCallInProgressEvent' response.web_search_call.searching: '#/components/schemas/WebSearchCallSearchingEvent' propertyName: type example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: in_progress temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 0 type: response.created oneOf: - $ref: '#/components/schemas/OpenResponsesCreatedEvent' - $ref: '#/components/schemas/OpenResponsesInProgressEvent' - $ref: '#/components/schemas/StreamEventsResponseCompleted' - $ref: '#/components/schemas/StreamEventsResponseIncomplete' - $ref: '#/components/schemas/StreamEventsResponseFailed' - $ref: '#/components/schemas/ErrorEvent' - $ref: '#/components/schemas/StreamEventsResponseOutputItemAdded' - $ref: '#/components/schemas/StreamEventsResponseOutputItemDone' - $ref: '#/components/schemas/ContentPartAddedEvent' - $ref: '#/components/schemas/ContentPartDoneEvent' - $ref: '#/components/schemas/TextDeltaEvent' - $ref: '#/components/schemas/TextDoneEvent' - $ref: '#/components/schemas/RefusalDeltaEvent' - $ref: '#/components/schemas/RefusalDoneEvent' - $ref: '#/components/schemas/AnnotationAddedEvent' - $ref: '#/components/schemas/FunctionCallArgsDeltaEvent' - $ref: '#/components/schemas/FunctionCallArgsDoneEvent' - $ref: '#/components/schemas/ReasoningDeltaEvent' - $ref: '#/components/schemas/ReasoningDoneEvent' - $ref: '#/components/schemas/ReasoningSummaryPartAddedEvent' - $ref: '#/components/schemas/ReasoningSummaryPartDoneEvent' - $ref: '#/components/schemas/ReasoningSummaryTextDeltaEvent' - $ref: '#/components/schemas/ReasoningSummaryTextDoneEvent' - $ref: '#/components/schemas/ImageGenCallInProgressEvent' - $ref: '#/components/schemas/ImageGenCallGeneratingEvent' - $ref: '#/components/schemas/ImageGenCallPartialImageEvent' - $ref: '#/components/schemas/ImageGenCallCompletedEvent' - $ref: '#/components/schemas/WebSearchCallInProgressEvent' - $ref: '#/components/schemas/WebSearchCallSearchingEvent' - $ref: '#/components/schemas/WebSearchCallCompletedEvent' StreamEventsResponseCompleted: allOf: - $ref: '#/components/schemas/CompletedEvent' - properties: response: $ref: '#/components/schemas/OpenResponsesResult' type: object description: Event emitted when a response has completed successfully example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: completed temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 10 type: response.completed StreamEventsResponseFailed: allOf: - $ref: '#/components/schemas/FailedEvent' - properties: response: $ref: '#/components/schemas/OpenResponsesResult' type: object description: Event emitted when a response has failed example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: failed temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 3 type: response.failed StreamEventsResponseIncomplete: allOf: - $ref: '#/components/schemas/IncompleteEvent' - properties: response: $ref: '#/components/schemas/OpenResponsesResult' type: object description: Event emitted when a response is incomplete example: response: created_at: 1704067200 error: null id: resp-abc123 incomplete_details: null instructions: null max_output_tokens: null metadata: null model: gpt-4 object: response output: [] parallel_tool_calls: true status: incomplete temperature: null tool_choice: auto tools: [] top_p: null sequence_number: 5 type: response.incomplete StreamEventsResponseOutputItemAdded: allOf: - $ref: '#/components/schemas/OutputItemAddedEvent' - properties: item: $ref: '#/components/schemas/OutputItems' type: object description: Event emitted when a new output item is added to the response example: item: content: [] id: item-1 role: assistant status: in_progress type: message output_index: 0 sequence_number: 2 type: response.output_item.added StreamEventsResponseOutputItemDone: allOf: - $ref: '#/components/schemas/OutputItemDoneEvent' - properties: item: $ref: '#/components/schemas/OutputItems' type: object description: Event emitted when an output item is complete example: item: content: - annotations: [] text: Hello! How can I help you? type: output_text id: item-1 role: assistant status: completed type: message output_index: 0 sequence_number: 8 type: response.output_item.done StreamLogprob: allOf: - $ref: '#/components/schemas/OpenResponsesLogProbs' - properties: top_logprobs: items: $ref: '#/components/schemas/StreamLogprobTopLogprob' type: array type: object description: Log probability information for a token example: bytes: - 72 - 101 - 108 - 108 - 111 logprob: -0.5 token: Hello top_logprobs: [] StreamLogprobTopLogprob: allOf: - $ref: '#/components/schemas/OpenResponsesTopLogprobs' - properties: {} type: object description: Alternative token with its log probability example: bytes: - 72 - 101 - 108 - 108 - 111 logprob: -0.5 token: Hello STTInputAudio: description: Base64-encoded audio to transcribe example: data: UklGRiQA... format: wav properties: data: description: Base64-encoded audio data (raw bytes, not a data URI) type: string format: description: Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider. type: string required: - data - format type: object STTRequest: description: Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio. example: input_audio: data: UklGRiQA... format: wav language: en model: openai/whisper-large-v3 properties: input_audio: $ref: '#/components/schemas/STTInputAudio' language: description: ISO-639-1 language code (e.g., "en", "ja"). Auto-detected if omitted. example: en type: string model: description: STT model identifier example: openai/whisper-large-v3 type: string provider: description: Provider-specific passthrough configuration properties: options: $ref: '#/components/schemas/ProviderOptions' type: object temperature: description: Sampling temperature for transcription example: 0 format: double type: number required: - model - input_audio type: object STTResponse: description: STT response containing transcribed text and optional usage statistics example: text: Hello, this is a test of OpenAI speech-to-text transcription. usage: cost: 0.000508 input_tokens: 83 output_tokens: 30 seconds: 9.2 total_tokens: 113 properties: text: description: The transcribed text example: >- Hello, this is a test of OpenAI speech-to-text transcription. The weather is sunny today and the temperature is around 72 degrees. type: string usage: $ref: '#/components/schemas/STTUsage' required: - text type: object STTUsage: description: Aggregated usage statistics for the request example: cost: 0.000508 input_tokens: 83 output_tokens: 30 seconds: 9.2 total_tokens: 113 properties: cost: description: Total cost of the request in USD example: 0.000508 format: double type: number input_tokens: description: Number of input tokens billed for this request example: 83 type: integer output_tokens: description: Number of output tokens generated example: 30 type: integer seconds: description: Duration of the input audio in seconds example: 9.2 format: double type: number total_tokens: description: Total number of tokens used (input + output) example: 113 type: integer type: object TextConfig: description: Text output configuration including format and verbosity example: format: type: text verbosity: medium properties: format: $ref: '#/components/schemas/Formats' verbosity: enum: - high - low - medium - null nullable: true type: string type: object TextDeltaEvent: allOf: - $ref: '#/components/schemas/BaseTextDeltaEvent' - properties: logprobs: items: $ref: '#/components/schemas/StreamLogprob' type: array type: object description: Event emitted when a text delta is streamed example: content_index: 0 delta: Hello item_id: item-1 logprobs: [] output_index: 0 sequence_number: 4 type: response.output_text.delta TextDoneEvent: allOf: - $ref: '#/components/schemas/BaseTextDoneEvent' - properties: logprobs: items: $ref: '#/components/schemas/StreamLogprob' type: array type: object description: Event emitted when text streaming is complete example: content_index: 0 item_id: item-1 logprobs: [] output_index: 0 sequence_number: 6 text: Hello! How can I help you? type: response.output_text.done TextExtendedConfig: allOf: - $ref: '#/components/schemas/TextConfig' - properties: verbosity: enum: - low - medium - high - xhigh - max - null nullable: true type: string type: object description: Text output configuration including format and verbosity example: format: type: text ToolCallStatus: enum: - in_progress - completed - incomplete example: completed type: string ToolChoiceAllowed: description: Constrains the model to a pre-defined set of allowed tools example: mode: auto tools: - name: get_weather type: function type: allowed_tools properties: mode: anyOf: - enum: - auto type: string - enum: - required type: string tools: items: additionalProperties: nullable: true type: object type: array type: enum: - allowed_tools type: string required: - type - mode - tools type: object TooManyRequestsResponse: description: Too Many Requests - Rate limit exceeded example: error: code: 429 message: Rate limit exceeded properties: error: $ref: '#/components/schemas/TooManyRequestsResponseErrorData' user_id: nullable: true type: string required: - error type: object TooManyRequestsResponseErrorData: description: Error data for TooManyRequestsResponse example: code: 429 message: Rate limit exceeded properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object TopProviderInfo: description: Information about the top provider for this model example: context_length: 8192 is_moderated: true max_completion_tokens: 4096 properties: context_length: description: Context length from the top provider example: 8192 nullable: true type: integer is_moderated: description: Whether the top provider moderates content example: true type: boolean max_completion_tokens: description: Maximum completion tokens from the top provider example: 4096 nullable: true type: integer required: - is_moderated type: object TraceConfig: additionalProperties: nullable: true description: >- Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. example: trace_id: trace-abc123 trace_name: my-app-trace properties: generation_name: type: string parent_span_id: type: string span_name: type: string trace_id: type: string trace_name: type: string type: object Truncation: enum: - auto - disabled - null example: auto nullable: true type: string UnauthorizedResponse: description: Unauthorized - Authentication required or invalid credentials example: error: code: 401 message: Missing Authentication header properties: error: $ref: '#/components/schemas/UnauthorizedResponseErrorData' user_id: nullable: true type: string required: - error type: object UnauthorizedResponseErrorData: description: Error data for UnauthorizedResponse example: code: 401 message: Missing Authentication header properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object UnprocessableEntityResponse: description: Unprocessable Entity - Semantic validation failure example: error: code: 422 message: Invalid argument properties: error: $ref: '#/components/schemas/UnprocessableEntityResponseErrorData' user_id: nullable: true type: string required: - error type: object UnprocessableEntityResponseErrorData: description: Error data for UnprocessableEntityResponse example: code: 422 message: Invalid argument properties: code: type: integer message: type: string metadata: additionalProperties: nullable: true nullable: true type: object required: - code - message type: object UpdateGuardrailRequest: example: description: Updated description limit_usd: 75 name: Updated Guardrail Name reset_interval: weekly properties: allowed_models: description: Array of model identifiers (slug or canonical_slug accepted) example: - openai/gpt-5.2 items: type: string minItems: 1 nullable: true type: array allowed_providers: description: New list of allowed provider IDs example: - openai - anthropic - deepseek items: type: string minItems: 1 nullable: true type: array description: description: New description for the guardrail example: Updated description maxLength: 1000 nullable: true type: string enforce_zdr: description: Whether to enforce zero data retention example: true nullable: true type: boolean ignored_models: description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted) example: - openai/gpt-4o-mini items: type: string minItems: 1 nullable: true type: array ignored_providers: description: List of provider IDs to exclude from routing example: - azure items: type: string minItems: 1 nullable: true type: array limit_usd: description: New spending limit in USD example: 75 format: double nullable: true type: number name: description: New name for the guardrail example: Updated Guardrail Name maxLength: 200 minLength: 1 type: string reset_interval: $ref: '#/components/schemas/GuardrailInterval' type: object UpdateGuardrailResponse: example: data: allowed_models: null allowed_providers: - openai created_at: '2025-08-24T10:30:00Z' description: Updated description enforce_zdr: true id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 75 name: Updated Guardrail Name reset_interval: weekly updated_at: '2025-08-24T16:00:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: allOf: - $ref: '#/components/schemas/Guardrail' - description: The updated guardrail required: - data type: object UpdateWorkspaceRequest: example: name: Updated Workspace slug: updated-workspace properties: default_image_model: description: Default image model for this workspace example: openai/dall-e-3 nullable: true type: string default_provider_sort: description: Default provider sort preference (price, throughput, latency, exacto) example: price nullable: true type: string default_text_model: description: Default text model for this workspace example: openai/gpt-4o nullable: true type: string description: description: New description for the workspace example: Updated description maxLength: 500 nullable: true type: string io_logging_api_key_ids: description: Optional array of API key IDs to filter I/O logging example: null items: type: integer nullable: true type: array io_logging_sampling_rate: description: Sampling rate for I/O logging (0.0001-1) example: 1 format: double type: number is_data_discount_logging_enabled: description: Whether data discount logging is enabled example: true type: boolean is_observability_broadcast_enabled: description: Whether broadcast is enabled example: false type: boolean is_observability_io_logging_enabled: description: Whether private logging is enabled example: false type: boolean name: description: New name for the workspace example: Updated Workspace maxLength: 100 minLength: 1 type: string slug: description: New URL-friendly slug example: updated-workspace maxLength: 50 minLength: 1 pattern: ^[a-z0-9-]+$ type: string type: object UpdateWorkspaceResponse: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Updated Workspace slug: updated-workspace updated_at: '2025-08-25T10:00:00Z' properties: data: allOf: - $ref: '#/components/schemas/Workspace' - description: The updated workspace required: - data type: object URLCitation: example: end_index: 42 start_index: 0 title: OpenRouter Documentation type: url_citation url: https://openrouter.ai/docs properties: end_index: type: integer start_index: type: integer title: type: string type: enum: - url_citation type: string url: type: string required: - type - url - title - start_index - end_index type: object Usage: allOf: - $ref: '#/components/schemas/OpenAIResponsesUsage' - nullable: true properties: cost: description: Cost of the completion format: double nullable: true type: number cost_details: properties: upstream_inference_cost: format: double nullable: true type: number upstream_inference_input_cost: format: double type: number upstream_inference_output_cost: format: double type: number required: - upstream_inference_input_cost - upstream_inference_output_cost type: object is_byok: description: Whether a request was made using a Bring Your Own Key configuration type: boolean type: object description: Token usage information for the response example: cost: 0.0012 cost_details: upstream_inference_cost: null upstream_inference_input_cost: 0.0008 upstream_inference_output_cost: 0.0004 input_tokens: 10 input_tokens_details: cached_tokens: 0 output_tokens: 25 output_tokens_details: reasoning_tokens: 0 total_tokens: 35 VideoGenerationRequest: example: aspect_ratio: '16:9' duration: 8 model: google/veo-3.1 prompt: A serene mountain landscape at sunset resolution: 720p properties: aspect_ratio: description: Aspect ratio of the generated video enum: - '16:9' - '9:16' - '1:1' - '4:3' - '3:4' - '21:9' - '9:21' example: '16:9' type: string callback_url: description: >- URL to receive a webhook notification when the video generation job completes. Overrides the workspace-level default callback URL if set. Must be HTTPS. example: https://example.com/webhook format: uri type: string duration: description: Duration of the generated video in seconds example: 8 minimum: 1 type: integer frame_images: description: >- Images to use as the first and/or last frame of the generated video. Each image must specify a frame_type of first_frame or last_frame. items: $ref: '#/components/schemas/FrameImage' type: array generate_audio: description: >- Whether to generate audio alongside the video. Defaults to the endpoint's generate_audio capability flag, false if not set. example: true type: boolean input_references: description: Reference images to guide video generation items: $ref: '#/components/schemas/ContentPartImage' type: array model: type: string prompt: type: string provider: description: Provider-specific passthrough configuration properties: options: allOf: - $ref: '#/components/schemas/ProviderOptions' - example: google-vertex: output_config: effort: low type: object resolution: description: Resolution of the generated video enum: - 480p - 720p - 1080p - 1K - 2K - 4K example: 720p type: string seed: description: >- If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. type: integer size: description: >- Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable with resolution + aspect_ratio. example: 1280x720 type: string required: - prompt - model type: object VideoGenerationResponse: example: generation_id: gen-xyz789 id: job-abc123 polling_url: /api/v1/videos/job-abc123 status: pending properties: error: type: string generation_id: description: The generation ID associated with this video generation job. Available once the job has been processed. type: string id: type: string polling_url: type: string status: enum: - pending - in_progress - completed - failed - cancelled - expired type: string unsigned_urls: items: type: string type: array usage: $ref: '#/components/schemas/VideoGenerationUsage' required: - id - polling_url - status type: object VideoGenerationUsage: description: Usage and cost information for the video generation. Available once the job has completed. example: cost: 0.5 is_byok: false properties: cost: description: The cost of the video generation in USD. format: double nullable: true type: number is_byok: description: Whether the request was made using a Bring Your Own Key configuration. type: boolean type: object VideoModel: example: allowed_passthrough_parameters: [] canonical_slug: google/veo-3.1 created: 1700000000 description: Google video generation model generate_audio: true id: google/veo-3.1 name: Veo 3.1 pricing_skus: generate: '0.50' seed: null supported_aspect_ratios: - '16:9' supported_durations: - 5 - 8 supported_frame_images: - first_frame - last_frame supported_resolutions: - 720p supported_sizes: null properties: allowed_passthrough_parameters: description: List of parameters that are allowed to be passed through to the provider items: type: string type: array canonical_slug: description: Canonical slug for the model example: openai/gpt-4 type: string created: description: Unix timestamp of when the model was created example: 1692901234 type: integer description: description: Description of the model example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. type: string generate_audio: description: Whether the model supports generating audio alongside video nullable: true type: boolean hugging_face_id: description: Hugging Face model identifier, if applicable example: microsoft/DialoGPT-medium nullable: true type: string id: description: Unique identifier for the model example: openai/gpt-4 type: string name: description: Display name of the model example: GPT-4 type: string pricing_skus: additionalProperties: type: string description: Pricing SKUs with provider prefix stripped, values as strings nullable: true type: object seed: description: Whether the model supports deterministic generation via seed parameter nullable: true type: boolean supported_aspect_ratios: description: Supported output aspect ratios items: enum: - '16:9' - '9:16' - '1:1' - '4:3' - '3:4' - '21:9' - '9:21' type: string nullable: true type: array supported_durations: description: Supported video durations in seconds items: type: integer nullable: true type: array supported_frame_images: description: Supported frame image types (e.g. first_frame, last_frame) items: enum: - first_frame - last_frame type: string nullable: true type: array supported_resolutions: description: Supported output resolutions items: enum: - 480p - 720p - 1080p - 1K - 2K - 4K type: string nullable: true type: array supported_sizes: description: Supported output sizes (width x height) items: enum: - 480x480 - 480x640 - 480x854 - 480x1120 - 640x480 - 720x720 - 720x960 - 720x1280 - 720x1680 - 854x480 - 960x720 - 1080x1080 - 1080x1440 - 1080x1920 - 1080x2520 - 1120x480 - 1280x720 - 1440x1080 - 1680x720 - 1920x1080 - 2160x2160 - 2160x2880 - 2160x3840 - 2160x5040 - 2520x1080 - 2880x2160 - 3840x2160 - 5040x2160 type: string nullable: true type: array required: - id - canonical_slug - name - created - supported_resolutions - supported_aspect_ratios - supported_sizes - supported_durations - supported_frame_images - generate_audio - seed - allowed_passthrough_parameters type: object VideoModelsListResponse: example: data: - allowed_passthrough_parameters: [] canonical_slug: google/veo-3.1 created: 1700000000 description: Google video generation model generate_audio: true id: google/veo-3.1 name: Veo 3.1 pricing_skus: generate: '0.50' seed: null supported_aspect_ratios: - '16:9' supported_durations: - 5 - 8 supported_frame_images: - first_frame - last_frame supported_resolutions: - 720p supported_sizes: null properties: data: items: $ref: '#/components/schemas/VideoModel' type: array required: - data type: object WebFetchEngineEnum: description: >- Which fetch engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in fetch. "exa" uses Exa Contents API (supports BYOK). "openrouter" uses direct HTTP fetch. "firecrawl" uses Firecrawl scrape (requires BYOK). enum: - auto - native - openrouter - firecrawl - exa example: auto type: string WebFetchServerTool: description: 'OpenRouter built-in server tool: fetches full content from a URL (web page or PDF)' example: parameters: max_uses: 10 type: openrouter:web_fetch properties: parameters: $ref: '#/components/schemas/WebFetchServerToolConfig' type: enum: - openrouter:web_fetch type: string required: - type type: object WebFetchServerToolConfig: description: Configuration for the openrouter:web_fetch server tool example: max_content_tokens: 100000 max_uses: 10 properties: allowed_domains: description: Only fetch from these domains. items: type: string type: array blocked_domains: description: Never fetch from these domains. items: type: string type: array engine: $ref: '#/components/schemas/WebFetchEngineEnum' max_content_tokens: description: Maximum content length in approximate tokens. Content exceeding this limit is truncated. example: 100000 type: integer max_uses: description: Maximum number of web fetches per request. Once exceeded, the tool returns an error. example: 10 type: integer type: object WebSearchCallCompletedEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesSearchCompleted' - properties: {} type: object description: Web search call completed example: item_id: ws-123 output_index: 0 sequence_number: 3 type: response.web_search_call.completed WebSearchCallInProgressEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallInProgress' - properties: {} type: object description: Web search call in progress example: item_id: ws-123 output_index: 0 sequence_number: 1 type: response.web_search_call.in_progress WebSearchCallSearchingEvent: allOf: - $ref: '#/components/schemas/OpenAIResponsesWebSearchCallSearching' - properties: {} type: object description: Web search call is searching example: item_id: ws-123 output_index: 0 sequence_number: 2 type: response.web_search_call.searching WebSearchConfig: example: max_results: 5 search_context_size: medium properties: allowed_domains: description: >- Limit search results to these domains. Supported by Exa, Parallel, and most native providers (Anthropic, OpenAI, xAI). Not supported with Firecrawl or Perplexity. items: type: string type: array engine: $ref: '#/components/schemas/WebSearchEngineEnum' excluded_domains: description: >- Exclude search results from these domains. Supported by Exa, Parallel, Anthropic, and xAI. Not supported with Firecrawl, OpenAI (silently ignored), or Perplexity. items: type: string type: array max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer max_total_results: description: >- Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. example: 20 type: integer search_context_size: $ref: '#/components/schemas/SearchQualityLevel' user_location: $ref: '#/components/schemas/WebSearchUserLocationServerTool' type: object WebSearchDomainFilter: example: allowed_domains: - example.com excluded_domains: - spam.com nullable: true properties: allowed_domains: items: type: string nullable: true type: array excluded_domains: items: type: string nullable: true type: array type: object WebSearchEngine: description: The search engine to use for web search. enum: - native - exa - firecrawl - parallel example: exa type: string WebSearchEngineEnum: description: >- Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. enum: - auto - native - exa - firecrawl - parallel example: auto type: string WebSearchPlugin: example: enabled: true id: web max_results: 5 properties: enabled: description: Set to false to disable the web-search plugin for this request. Defaults to true. type: boolean engine: $ref: '#/components/schemas/WebSearchEngine' exclude_domains: description: >- A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog"). example: - example.com - '*.substack.com' - openai.com/blog items: type: string type: array id: enum: - web type: string include_domains: description: >- A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog"). example: - example.com - '*.substack.com' - openai.com/blog items: type: string type: array max_results: type: integer max_uses: description: >- Maximum number of times the model can invoke web search in a single turn. Passed through to native providers that support it (e.g. Anthropic). type: integer search_prompt: type: string user_location: allOf: - $ref: '#/components/schemas/WebSearchUserLocation' - description: >- Approximate user location for location-biased search results. Passed through to native providers that support it (e.g. Anthropic). example: city: San Francisco country: US region: California timezone: America/Los_Angeles type: approximate required: - type required: - id type: object WebSearchServerTool: description: Web search tool configuration (2025-08-26 version) example: engine: auto filters: allowed_domains: - example.com type: web_search_2025_08_26 properties: engine: $ref: '#/components/schemas/WebSearchEngineEnum' filters: $ref: '#/components/schemas/WebSearchDomainFilter' max_results: description: >- Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search. example: 5 type: integer search_context_size: $ref: '#/components/schemas/SearchContextSizeEnum' type: enum: - web_search_2025_08_26 type: string user_location: $ref: '#/components/schemas/WebSearchUserLocation' required: - type type: object WebSearchServerTool_OpenRouter: description: 'OpenRouter built-in server tool: searches the web for current information' example: parameters: max_results: 5 type: openrouter:web_search properties: parameters: properties: max_results: description: Maximum number of search results to return per search call. Defaults to 5. example: 5 type: integer max_total_results: description: >- Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. example: 20 type: integer type: object type: enum: - openrouter:web_search type: string required: - type type: object WebSearchSource: example: type: url url: https://example.com/article properties: type: enum: - url type: string url: type: string required: - type - url type: object WebSearchStatus: enum: - completed - searching - in_progress - failed example: completed type: string WebSearchUserLocation: description: User location information for web search example: city: San Francisco country: USA region: California timezone: America/Los_Angeles type: approximate nullable: true properties: city: nullable: true type: string country: nullable: true type: string region: nullable: true type: string timezone: nullable: true type: string type: enum: - approximate type: string type: object WebSearchUserLocationServerTool: description: Approximate user location for location-biased results. example: city: San Francisco country: US region: California timezone: America/Los_Angeles type: approximate properties: city: nullable: true type: string country: nullable: true type: string region: nullable: true type: string timezone: nullable: true type: string type: enum: - approximate type: string type: object Workspace: example: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: '2025-08-24T15:45:00Z' properties: created_at: description: ISO 8601 timestamp of when the workspace was created example: '2025-08-24T10:30:00Z' type: string created_by: description: User ID of the workspace creator example: user_abc123 nullable: true type: string default_image_model: description: Default image model for this workspace example: openai/dall-e-3 nullable: true type: string default_provider_sort: description: Default provider sort preference (price, throughput, latency, exacto) example: price nullable: true type: string default_text_model: description: Default text model for this workspace example: openai/gpt-4o nullable: true type: string description: description: Description of the workspace example: Production environment workspace nullable: true type: string id: description: Unique identifier for the workspace example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string io_logging_api_key_ids: description: Optional array of API key IDs to filter I/O logging. Null means all keys are logged. example: null items: type: integer nullable: true type: array io_logging_sampling_rate: description: Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged. example: 1 format: double type: number is_data_discount_logging_enabled: description: Whether data discount logging is enabled for this workspace example: true type: boolean is_observability_broadcast_enabled: description: Whether broadcast is enabled for this workspace example: false type: boolean is_observability_io_logging_enabled: description: Whether private logging is enabled for this workspace example: false type: boolean name: description: Name of the workspace example: Production type: string slug: description: URL-friendly slug for the workspace example: production type: string updated_at: description: ISO 8601 timestamp of when the workspace was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string required: - id - name - slug - description - default_text_model - default_image_model - default_provider_sort - is_observability_io_logging_enabled - is_observability_broadcast_enabled - is_data_discount_logging_enabled - io_logging_sampling_rate - io_logging_api_key_ids - created_at - updated_at - created_by type: object WorkspaceMember: example: created_at: '2025-08-24T10:30:00Z' id: 660e8400-e29b-41d4-a716-446655440000 role: member user_id: user_abc123 workspace_id: 550e8400-e29b-41d4-a716-446655440000 properties: created_at: description: ISO 8601 timestamp of when the membership was created example: '2025-08-24T10:30:00Z' type: string id: description: Unique identifier for the workspace membership example: 660e8400-e29b-41d4-a716-446655440000 format: uuid type: string role: description: Role of the member in the workspace enum: - admin - member example: member type: string user_id: description: Clerk user ID of the member example: user_abc123 type: string workspace_id: description: ID of the workspace example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string required: - id - workspace_id - user_id - role - created_at type: object securitySchemes: apiKey: description: API key as bearer token in Authorization header scheme: bearer type: http bearer: description: API key as bearer token in Authorization header scheme: bearer type: http externalDocs: description: OpenRouter Documentation url: https://openrouter.ai/docs info: contact: email: support@openrouter.ai name: OpenRouter Support url: https://openrouter.ai/docs description: OpenAI-compatible API with additional OpenRouter features license: name: MIT url: https://opensource.org/licenses/MIT title: OpenRouter API version: 1.0.0 openapi: 3.1.0 paths: /activity: get: description: >- Returns user activity data grouped by endpoint for the last 30 (completed) UTC days. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getUserActivity parameters: - description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). in: query name: date required: false schema: description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). example: '2025-08-24' type: string - description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). in: query name: api_key_hash required: false schema: description: Filter by API key hash (SHA-256 hex string, as returned by the keys API). example: abc123def456... type: string - description: Filter by org member user ID. Only applicable for organization accounts. in: query name: user_id required: false schema: description: Filter by org member user ID. Only applicable for organization accounts. example: user_abc123 type: string responses: '200': content: application/json: example: data: - byok_usage_inference: 0.012 completion_tokens: 125 date: '2025-08-24' endpoint_id: 550e8400-e29b-41d4-a716-446655440000 model: openai/gpt-4.1 model_permaslug: openai/gpt-4.1-2025-04-14 prompt_tokens: 50 provider_name: OpenAI reasoning_tokens: 25 requests: 5 usage: 0.015 schema: $ref: '#/components/schemas/ActivityResponse' description: Returns user activity data grouped by endpoint '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get user activity grouped by endpoint tags: - Analytics /audio/speech: post: description: >- Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav). operationId: createAudioSpeech requestBody: content: application/json: example: input: Hello world model: elevenlabs/eleven-turbo-v2 response_format: pcm speed: 1 voice: alloy schema: $ref: '#/components/schemas/SpeechRequest' required: true responses: '200': content: audio/*: schema: description: >- Raw audio bytestream. Content-Type varies by requested format (audio/mpeg for mp3, audio/pcm for pcm — 16-bit little-endian). example: format: binary type: string description: Audio bytes stream '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Create speech tags: - TTS x-speakeasy-max-method-params: 1 x-speakeasy-name-override: createSpeech /audio/transcriptions: post: description: Transcribes audio into text. Accepts base64-encoded audio input and returns the transcribed text. operationId: createAudioTranscriptions requestBody: content: application/json: example: input_audio: data: UklGRiQA... format: wav language: en model: openai/whisper-large-v3 schema: $ref: '#/components/schemas/STTRequest' required: true responses: '200': content: application/json: example: text: Hello, this is a test of OpenAI speech-to-text transcription. usage: cost: 0.000508 input_tokens: 83 output_tokens: 30 seconds: 9.2 total_tokens: 113 schema: $ref: '#/components/schemas/STTResponse' description: Transcription result '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Create transcription tags: - STT x-speakeasy-max-method-params: 1 x-speakeasy-name-override: createTranscription /auth/keys: post: description: Exchange an authorization code from the PKCE flow for a user-controlled API key operationId: exchangeAuthCodeForAPIKey requestBody: content: application/json: example: code: auth_code_abc123def456 code_challenge_method: S256 code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk schema: example: code: auth_code_abc123def456 code_challenge_method: S256 code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk properties: code: description: The authorization code received from the OAuth redirect example: auth_code_abc123def456 type: string code_challenge_method: description: The method used to generate the code challenge enum: - S256 - plain - null example: S256 nullable: true type: string code_verifier: description: The code verifier if code_challenge was used in the authorization request example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk type: string required: - code type: object required: true responses: '200': content: application/json: example: key: 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 user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah schema: example: key: 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 user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah properties: key: description: The API key to use for OpenRouter requests example: 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 type: string user_id: description: User ID associated with the API key example: user_2yOPcMpKoQhcd4bVgSMlELRaIah nullable: true type: string required: - key - user_id type: object description: Successfully exchanged code for an API key '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Exchange authorization code for API key tags: - OAuth /auth/keys/code: post: description: Create an authorization code for the PKCE flow to generate a user-controlled API key operationId: createAuthKeysCode requestBody: content: application/json: example: callback_url: https://myapp.com/auth/callback code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM code_challenge_method: S256 limit: 100 schema: example: callback_url: https://myapp.com/auth/callback code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM code_challenge_method: S256 limit: 100 properties: callback_url: description: >- The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are allowed. example: https://myapp.com/auth/callback format: uri type: string code_challenge: description: PKCE code challenge for enhanced security example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM type: string code_challenge_method: description: The method used to generate the code challenge enum: - S256 - plain example: S256 type: string expires_at: description: Optional expiration time for the API key to be created example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string key_label: description: Optional custom label for the API key. Defaults to the app name if not provided. example: My Custom Key maxLength: 100 type: string limit: description: Credit limit for the API key to be created example: 100 format: double type: number spawn_agent: description: Agent identifier for spawn telemetry example: my-agent type: string x-fern-ignore: true x-speakeasy-ignore: true spawn_cloud: description: Cloud identifier for spawn telemetry example: aws-us-east-1 type: string x-fern-ignore: true x-speakeasy-ignore: true usage_limit_type: description: Optional credit limit reset interval. When set, the credit limit resets on this interval. enum: - daily - weekly - monthly example: monthly type: string required: - callback_url type: object required: true responses: '200': content: application/json: example: data: app_id: 12345 created_at: '2025-08-24T10:30:00Z' id: auth_code_xyz789 schema: example: data: app_id: 12345 created_at: '2025-08-24T10:30:00Z' id: auth_code_xyz789 properties: data: description: Auth code data example: app_id: 12345 created_at: '2025-08-24T10:30:00Z' id: auth_code_xyz789 properties: app_id: description: The application ID associated with this auth code example: 12345 type: integer created_at: description: ISO 8601 timestamp of when the auth code was created example: '2025-08-24T10:30:00Z' type: string id: description: The authorization code ID to use in the exchange request example: auth_code_xyz789 type: string required: - id - app_id - created_at type: object required: - data type: object description: Successfully created authorization code '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '409': content: application/json: example: error: code: 409 message: Resource conflict. Please try again later. schema: $ref: '#/components/schemas/ConflictResponse' description: Conflict - Resource conflict or concurrent modification '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Create authorization code tags: - OAuth x-speakeasy-name-override: createAuthCode /chat/completions: post: description: >- Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. operationId: sendChatCompletionRequest requestBody: content: application/json: example: max_tokens: 150 messages: - content: You are a helpful assistant. role: system - content: What is the capital of France? role: user model: openai/gpt-4 temperature: 0.7 schema: $ref: '#/components/schemas/ChatRequest' required: true responses: '200': content: application/json: example: choices: - finish_reason: stop index: 0 message: content: The capital of France is Paris. role: assistant created: 1677652288 id: chatcmpl-123 model: openai/gpt-4 object: chat.completion usage: completion_tokens: 10 prompt_tokens: 25 total_tokens: 35 schema: $ref: '#/components/schemas/ChatResult' text/event-stream: example: data: choices: - delta: content: Hello role: assistant finish_reason: null index: 0 created: 1677652288 id: chatcmpl-123 model: openai/gpt-4 object: chat.completion.chunk schema: properties: data: $ref: '#/components/schemas/ChatStreamChunk' required: - data type: object x-speakeasy-sse-sentinel: '[DONE]' description: Successful chat completion response '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '408': content: application/json: example: error: code: 408 message: Operation timed out. Please try again later. schema: $ref: '#/components/schemas/RequestTimeoutResponse' description: Request Timeout - Operation exceeded time limit '413': content: application/json: example: error: code: 413 message: Request payload too large schema: $ref: '#/components/schemas/PayloadTooLargeResponse' description: Payload Too Large - Request payload exceeds size limits '422': content: application/json: example: error: code: 422 message: Invalid argument schema: $ref: '#/components/schemas/UnprocessableEntityResponse' description: Unprocessable Entity - Semantic validation failure '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Create a chat completion tags: - Chat x-speakeasy-group: chat x-speakeasy-name-override: send x-speakeasy-stream-request-field: stream /credits: get: description: >- Get total credits purchased and used for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getCredits responses: '200': content: application/json: example: data: total_credits: 100.5 total_usage: 25.75 schema: description: Total credits purchased and used example: data: total_credits: 100.5 total_usage: 25.75 properties: data: example: total_credits: 100.5 total_usage: 25.75 properties: total_credits: description: Total credits purchased example: 100.5 format: double type: number total_usage: description: Total credits used example: 25.75 format: double type: number required: - total_credits - total_usage type: object required: - data type: object description: Returns the total credits purchased and used '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get remaining credits tags: - Credits x-speakeasy-name-override: getCredits /credits/coinbase: post: deprecated: true description: >- Deprecated. The Coinbase APIs used by this endpoint have been deprecated, so Coinbase Commerce charges have been removed. Use the web credits purchase flow instead. operationId: createCoinbaseCharge responses: '200': description: This endpoint is deprecated and will never return a 200 response. '410': content: application/json: example: error: code: 410 message: >- The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been removed. Use the web credits purchase flow instead. schema: $ref: '#/components/schemas/GoneResponse' description: Gone - Endpoint has been permanently removed or deprecated security: [] summary: Deprecated Coinbase Commerce charge endpoint tags: - Credits x-fern-ignore: true x-speakeasy-ignore: true x-speakeasy-name-override: createCoinbaseCharge /embeddings: post: description: Submits an embedding request to the embeddings router operationId: createEmbeddings requestBody: content: application/json: schema: description: Embeddings request input example: dimensions: 1536 input: The quick brown fox jumps over the lazy dog model: openai/text-embedding-3-small properties: dimensions: description: The number of dimensions for the output embeddings example: 1536 minimum: 1 type: integer encoding_format: description: The format of the output embeddings enum: - float - base64 example: float type: string input: anyOf: - type: string - items: type: string type: array - items: type: number type: array - items: items: type: number type: array type: array - items: properties: content: items: oneOf: - properties: text: type: string type: enum: - text type: string required: - type - text type: object - properties: image_url: properties: url: type: string required: - url type: object type: enum: - image_url type: string required: - type - image_url type: object type: array required: - content type: object type: array description: Text, token, or multimodal input(s) to embed example: The quick brown fox jumps over the lazy dog input_type: description: The type of input (e.g. search_query, search_document) example: search_query type: string model: description: The model to use for embeddings example: openai/text-embedding-3-small type: string provider: allOf: - $ref: '#/components/schemas/ProviderPreferences' - description: Provider routing preferences for the request. user: description: A unique identifier for the end-user example: user-1234 type: string required: - input - model type: object required: true responses: '200': content: application/json: schema: description: Embeddings response containing embedding vectors example: data: - embedding: - 0.0023064255 - -0.009327292 - 0.015797347 index: 0 object: embedding model: openai/text-embedding-3-small object: list usage: prompt_tokens: 8 total_tokens: 8 properties: data: description: List of embedding objects example: - embedding: - 0.0023064255 - -0.009327292 - 0.015797347 index: 0 object: embedding items: description: A single embedding object example: embedding: - 0.0023064255 - -0.009327292 - 0.015797347 index: 0 object: embedding properties: embedding: anyOf: - items: type: number type: array - type: string description: Embedding vector as an array of floats or a base64 string example: - 0.0023064255 - -0.009327292 - 0.015797347 index: description: Index of the embedding in the input list example: 0 type: integer object: enum: - embedding type: string required: - object - embedding type: object type: array id: description: Unique identifier for the embeddings response example: embd-1234567890 type: string model: description: The model used for embeddings example: openai/text-embedding-3-small type: string object: enum: - list type: string usage: description: Token usage statistics example: prompt_tokens: 8 total_tokens: 8 properties: cost: description: Cost of the request in credits example: 0.0001 format: double type: number prompt_tokens: description: Number of tokens in the input example: 8 type: integer prompt_tokens_details: description: >- Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text + image) and the upstream provider returns modality-level usage data. Only non-zero modality counts are included. properties: audio_tokens: description: Number of audio tokens in the input type: integer image_tokens: description: Number of image tokens in the input example: 258 type: integer text_tokens: description: Number of text tokens in the input example: 8 type: integer video_tokens: description: Number of video tokens in the input type: integer type: object total_tokens: description: Total number of tokens used example: 8 type: integer required: - prompt_tokens - total_tokens type: object required: - object - data - model type: object text/event-stream: example: 'data: [DONE]' schema: description: Not used for embeddings - embeddings do not support streaming type: string x-speakeasy-sse-sentinel: '[DONE]' description: Embedding response '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Submit an embedding request tags: - Embeddings x-speakeasy-name-override: generate /embeddings/models: get: description: Returns a list of all available embeddings models and their properties operationId: listEmbeddingsModels responses: '200': content: application/json: example: data: - architecture: input_modalities: - text instruct_type: null modality: text->text output_modalities: - embeddings tokenizer: GPT canonical_slug: openai/text-embedding-3-small context_length: 8192 created: 1692901234 default_parameters: null description: OpenAI text embedding model optimized for performance. expiration_date: null id: openai/text-embedding-3-small knowledge_cutoff: null links: details: /api/v1/models/openai/text-embedding-3-small/endpoints name: Text Embedding 3 Small per_request_limits: null pricing: completion: '0' image: '0' prompt: '0.00000002' request: '0' supported_parameters: [] supported_voices: null top_provider: context_length: 8192 is_moderated: false max_completion_tokens: null schema: $ref: '#/components/schemas/ModelsListResponse' description: Returns a list of embeddings models '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all embeddings models tags: - Embeddings x-speakeasy-name-override: listModels /endpoints/zdr: get: operationId: listEndpointsZdr responses: '200': content: application/json: example: data: - context_length: 8192 latency_last_30m: p50: 0.25 p75: 0.35 p90: 0.48 p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 model_id: openai/gpt-4 model_name: GPT-4 name: 'OpenAI: GPT-4' pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' provider_name: OpenAI quantization: fp16 status: default supported_parameters: - temperature - top_p - max_tokens supports_implicit_caching: true tag: openai throughput_last_30m: p50: 45.2 p75: 38.5 p90: 28.3 p99: 15.1 uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 schema: example: data: - context_length: 8192 latency_last_30m: p50: 0.25 p75: 0.35 p90: 0.48 p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 model_id: openai/gpt-4 model_name: GPT-4 name: 'OpenAI: GPT-4' pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' provider_name: OpenAI quantization: fp16 status: default supported_parameters: - temperature - top_p - max_tokens supports_implicit_caching: true tag: openai throughput_last_30m: p50: 45.2 p75: 38.5 p90: 28.3 p99: 15.1 uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 properties: data: items: $ref: '#/components/schemas/PublicEndpoint' type: array required: - data type: object description: Returns a list of endpoints '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Preview the impact of ZDR on the available endpoints tags: - Endpoints x-speakeasy-name-override: listZdrEndpoints /generation: get: operationId: getGeneration parameters: - description: The generation ID in: query name: id required: true schema: description: The generation ID example: gen-1234567890 minLength: 1 type: string responses: '200': content: application/json: example: data: api_type: completions app_id: 12345 cache_discount: null cancelled: false created_at: '2024-07-15T23:33:19.433273+00:00' external_user: user-123 finish_reason: stop generation_time: 1200 http_referer: https://openrouter.ai/ id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG is_byok: false latency: 1250 model: sao10k/l3-stheno-8b moderation_latency: 50 native_finish_reason: stop native_tokens_cached: 3 native_tokens_completion: 25 native_tokens_completion_images: 0 native_tokens_prompt: 10 native_tokens_reasoning: 5 num_input_audio_prompt: 0 num_media_completion: 0 num_media_prompt: 1 num_search_results: 5 origin: https://openrouter.ai/ provider_name: Infermatic provider_responses: null request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT router: openrouter/auto session_id: null streamed: true tokens_completion: 25 tokens_prompt: 10 total_cost: 0.0015 upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 upstream_inference_cost: 0.0012 usage: 0.0015 user_agent: Mozilla/5.0 schema: $ref: '#/components/schemas/GenerationResponse' description: Returns the request metadata for this generation '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Get request & usage metadata for a generation tags: - Generations /generation/content: get: operationId: listGenerationContent parameters: - description: The generation ID in: query name: id required: true schema: description: The generation ID example: gen-1234567890 minLength: 1 type: string responses: '200': content: application/json: example: data: input: messages: - content: What is the meaning of life? role: user output: completion: The meaning of life is a philosophical question... reasoning: null schema: $ref: '#/components/schemas/GenerationContentResponse' description: Returns the stored prompt and completion content '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Get stored prompt and completion content for a generation tags: - Generations /guardrails: get: description: >- List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listGuardrails parameters: - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer - description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned. in: query name: workspace_id required: false schema: description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned. example: 0df9e665-d932-5740-b2c7-b52af166bc11 format: uuid type: string responses: '200': content: application/json: example: data: - allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 100 name: Production Guardrail reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 total_count: 1 schema: $ref: '#/components/schemas/ListGuardrailsResponse' description: List of guardrails '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List guardrails tags: - Guardrails x-speakeasy-name-override: list x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit post: description: >- Create a new guardrail for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: createGuardrail requestBody: content: application/json: example: allowed_models: null allowed_providers: - openai - anthropic - deepseek description: A guardrail for limiting API usage enforce_zdr: false ignored_models: null ignored_providers: null limit_usd: 50 name: My New Guardrail reset_interval: monthly schema: $ref: '#/components/schemas/CreateGuardrailRequest' required: true responses: '201': content: application/json: example: data: allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: A guardrail for limiting API usage enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 50 name: My New Guardrail reset_interval: monthly updated_at: null workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: $ref: '#/components/schemas/CreateGuardrailResponse' description: Guardrail created successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Create a guardrail tags: - Guardrails x-speakeasy-name-override: create /guardrails/{id}: delete: description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteGuardrail parameters: - description: The unique identifier of the guardrail to delete in: path name: id required: true schema: description: The unique identifier of the guardrail to delete example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string responses: '200': content: application/json: example: deleted: true schema: $ref: '#/components/schemas/DeleteGuardrailResponse' description: Guardrail deleted successfully '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Delete a guardrail tags: - Guardrails x-speakeasy-name-override: delete get: description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getGuardrail parameters: - description: The unique identifier of the guardrail to retrieve in: path name: id required: true schema: description: The unique identifier of the guardrail to retrieve example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string responses: '200': content: application/json: example: data: allowed_models: null allowed_providers: - openai - anthropic - google created_at: '2025-08-24T10:30:00Z' description: Guardrail for production environment enforce_zdr: false id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 100 name: Production Guardrail reset_interval: monthly updated_at: '2025-08-24T15:45:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: $ref: '#/components/schemas/GetGuardrailResponse' description: Guardrail details '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get a guardrail tags: - Guardrails x-speakeasy-name-override: get patch: description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: updateGuardrail parameters: - description: The unique identifier of the guardrail to update in: path name: id required: true schema: description: The unique identifier of the guardrail to update example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string requestBody: content: application/json: example: description: Updated description limit_usd: 75 name: Updated Guardrail Name reset_interval: weekly schema: $ref: '#/components/schemas/UpdateGuardrailRequest' required: true responses: '200': content: application/json: example: data: allowed_models: null allowed_providers: - openai created_at: '2025-08-24T10:30:00Z' description: Updated description enforce_zdr: true id: 550e8400-e29b-41d4-a716-446655440000 ignored_models: null ignored_providers: null limit_usd: 75 name: Updated Guardrail Name reset_interval: weekly updated_at: '2025-08-24T16:00:00Z' workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: $ref: '#/components/schemas/UpdateGuardrailResponse' description: Guardrail updated successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Update a guardrail tags: - Guardrails x-speakeasy-name-override: update /guardrails/{id}/assignments/keys: get: description: >- List all API key assignments for a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listGuardrailKeyAssignments parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 key_label: prod-key key_name: Production Key total_count: 1 schema: $ref: '#/components/schemas/ListKeyAssignmentsResponse' description: List of key assignments '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List key assignments for a guardrail tags: - Guardrails x-speakeasy-name-override: listGuardrailKeyAssignments x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit post: description: >- Assign multiple API keys to a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkAssignKeysToGuardrail parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string requestBody: content: application/json: example: key_hashes: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 schema: $ref: '#/components/schemas/BulkAssignKeysRequest' required: true responses: '200': content: application/json: example: assigned_count: 3 schema: $ref: '#/components/schemas/BulkAssignKeysResponse' description: Assignment result '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk assign keys to a guardrail tags: - Guardrails x-speakeasy-name-override: bulkAssignKeys /guardrails/{id}/assignments/keys/remove: post: description: >- Unassign multiple API keys from a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkUnassignKeysFromGuardrail parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string requestBody: content: application/json: example: key_hashes: - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 schema: $ref: '#/components/schemas/BulkUnassignKeysRequest' required: true responses: '200': content: application/json: example: unassigned_count: 3 schema: $ref: '#/components/schemas/BulkUnassignKeysResponse' description: Unassignment result '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk unassign keys from a guardrail tags: - Guardrails x-speakeasy-name-override: bulkUnassignKeys /guardrails/{id}/assignments/members: get: description: >- List all organization member assignments for a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listGuardrailMemberAssignments parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 organization_id: org_xyz789 user_id: user_abc123 total_count: 1 schema: $ref: '#/components/schemas/ListMemberAssignmentsResponse' description: List of member assignments '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List member assignments for a guardrail tags: - Guardrails x-speakeasy-name-override: listGuardrailMemberAssignments x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit post: description: >- Assign multiple organization members to a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkAssignMembersToGuardrail parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string requestBody: content: application/json: example: member_user_ids: - user_abc123 - user_def456 schema: $ref: '#/components/schemas/BulkAssignMembersRequest' required: true responses: '200': content: application/json: example: assigned_count: 2 schema: $ref: '#/components/schemas/BulkAssignMembersResponse' description: Assignment result '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk assign members to a guardrail tags: - Guardrails x-speakeasy-name-override: bulkAssignMembers /guardrails/{id}/assignments/members/remove: post: description: >- Unassign multiple organization members from a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkUnassignMembersFromGuardrail parameters: - description: The unique identifier of the guardrail in: path name: id required: true schema: description: The unique identifier of the guardrail example: 550e8400-e29b-41d4-a716-446655440000 format: uuid type: string requestBody: content: application/json: example: member_user_ids: - user_abc123 - user_def456 schema: $ref: '#/components/schemas/BulkUnassignMembersRequest' required: true responses: '200': content: application/json: example: unassigned_count: 2 schema: $ref: '#/components/schemas/BulkUnassignMembersResponse' description: Unassignment result '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk unassign members from a guardrail tags: - Guardrails x-speakeasy-name-override: bulkUnassignMembers /guardrails/assignments/keys: get: description: >- List all API key guardrail assignments for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listKeyAssignments parameters: - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 key_label: prod-key key_name: Production Key total_count: 1 schema: $ref: '#/components/schemas/ListKeyAssignmentsResponse' description: List of key assignments '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all key assignments tags: - Guardrails x-speakeasy-name-override: listKeyAssignments x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit /guardrails/assignments/members: get: description: >- List all organization member guardrail assignments for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listMemberAssignments parameters: - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - assigned_by: user_abc123 created_at: '2025-08-24T10:30:00Z' guardrail_id: 550e8400-e29b-41d4-a716-446655440001 id: 550e8400-e29b-41d4-a716-446655440000 organization_id: org_xyz789 user_id: user_abc123 total_count: 1 schema: $ref: '#/components/schemas/ListMemberAssignmentsResponse' description: List of member assignments '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all member assignments tags: - Guardrails x-speakeasy-name-override: listMemberAssignments x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit /key: get: description: Get information on the API key associated with the current authentication session operationId: getCurrentKey responses: '200': content: application/json: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: false is_free_tier: false is_management_key: false is_provisioning_key: false label: sk-or-v1-au7...890 limit: 100 limit_remaining: 74.5 limit_reset: monthly rate_limit: interval: 1h note: This field is deprecated and safe to ignore. requests: 1000 usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 schema: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: false is_free_tier: false is_management_key: false is_provisioning_key: false label: sk-or-v1-au7...890 limit: 100 limit_remaining: 74.5 limit_reset: monthly rate_limit: interval: 1h note: This field is deprecated and safe to ignore. requests: 1000 usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 properties: data: description: Current API key information example: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: false is_free_tier: false is_management_key: false is_provisioning_key: false label: sk-or-v1-au7...890 limit: 100 limit_remaining: 74.5 limit_reset: monthly rate_limit: interval: 1h note: This field is deprecated and safe to ignore. requests: 1000 usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 properties: byok_usage: description: Total external BYOK usage (in USD) for the API key example: 17.38 format: double type: number byok_usage_daily: description: External BYOK usage (in USD) for the current UTC day example: 17.38 format: double type: number byok_usage_monthly: description: External BYOK usage (in USD) for current UTC month example: 17.38 format: double type: number byok_usage_weekly: description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 format: double type: number creator_user_id: description: >- The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID. example: user_2dHFtVWx2n56w6HkM0000000000 nullable: true type: string expires_at: description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string include_byok_in_limit: description: Whether to include external BYOK usage in the credit limit example: false type: boolean is_free_tier: description: Whether this is a free tier API key example: false type: boolean is_management_key: description: Whether this is a management key example: false type: boolean is_provisioning_key: deprecated: true description: Whether this is a management key example: false type: boolean label: description: Human-readable label for the API key example: sk-or-v1-0e6...1c96 type: string limit: description: Spending limit for the API key in USD example: 100 format: double nullable: true type: number limit_remaining: description: Remaining spending limit in USD example: 74.5 format: double nullable: true type: number limit_reset: description: Type of limit reset for the API key example: monthly nullable: true type: string rate_limit: deprecated: true description: Legacy rate limit information about a key. Will always return -1. example: interval: 1h note: This field is deprecated and safe to ignore. requests: 1000 properties: interval: description: Rate limit interval example: 1h type: string note: description: Note about the rate limit example: This field is deprecated and safe to ignore. type: string requests: description: Number of requests allowed per interval example: 1000 type: integer required: - requests - interval - note type: object usage: description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 format: double type: number usage_daily: description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 format: double type: number usage_monthly: description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 format: double type: number usage_weekly: description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 format: double type: number required: - label - limit - usage - usage_daily - usage_weekly - usage_monthly - byok_usage - byok_usage_daily - byok_usage_weekly - byok_usage_monthly - is_free_tier - is_management_key - is_provisioning_key - limit_remaining - limit_reset - include_byok_in_limit - creator_user_id - rate_limit type: object required: - data type: object description: API key details '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get current API key tags: - API Keys x-speakeasy-name-override: getCurrentKeyMetadata /keys: get: description: >- List all API keys for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: list parameters: - description: Whether to include disabled API keys in the response in: query name: include_disabled required: false schema: description: Whether to include disabled API keys in the response example: 'false' type: string x-openrouter-type: boolean - description: Number of API keys to skip for pagination in: query name: offset required: false schema: description: Number of API keys to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Filter API keys by workspace ID. By default, keys in the default workspace are returned. in: query name: workspace_id required: false schema: description: Filter API keys by workspace ID. By default, keys in the default workspace are returned. example: 0df9e665-d932-5740-b2c7-b52af166bc11 format: uuid type: string responses: '200': content: application/json: example: data: - byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: Production API Key limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: example: data: - byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: Production API Key limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: description: List of API keys items: example: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: sk-or-v1-0e6...1c96 limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: byok_usage: description: Total external BYOK usage (in USD) for the API key example: 17.38 format: double type: number byok_usage_daily: description: External BYOK usage (in USD) for the current UTC day example: 17.38 format: double type: number byok_usage_monthly: description: External BYOK usage (in USD) for current UTC month example: 17.38 format: double type: number byok_usage_weekly: description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 format: double type: number created_at: description: ISO 8601 timestamp of when the API key was created example: '2025-08-24T10:30:00Z' type: string creator_user_id: description: >- The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID. example: user_2dHFtVWx2n56w6HkM0000000000 nullable: true type: string disabled: description: Whether the API key is disabled example: false type: boolean expires_at: description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string hash: description: Unique hash identifier for the API key example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string include_byok_in_limit: description: Whether to include external BYOK usage in the credit limit example: false type: boolean label: description: Human-readable label for the API key example: sk-or-v1-0e6...1c96 type: string limit: description: Spending limit for the API key in USD example: 100 format: double nullable: true type: number limit_remaining: description: Remaining spending limit in USD example: 74.5 format: double nullable: true type: number limit_reset: description: Type of limit reset for the API key example: monthly nullable: true type: string name: description: Name of the API key example: My Production Key type: string updated_at: description: ISO 8601 timestamp of when the API key was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string usage: description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 format: double type: number usage_daily: description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 format: double type: number usage_monthly: description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 format: double type: number usage_weekly: description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 format: double type: number workspace_id: description: The workspace ID this API key belongs to. example: 0df9e665-d932-5740-b2c7-b52af166bc11 type: string required: - hash - name - label - disabled - limit - limit_remaining - limit_reset - include_byok_in_limit - usage - usage_daily - usage_weekly - usage_monthly - byok_usage - byok_usage_daily - byok_usage_weekly - byok_usage_monthly - created_at - updated_at - creator_user_id - workspace_id type: object type: array required: - data type: object description: List of API keys '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List API keys tags: - API Keys x-speakeasy-name-override: list post: description: >- Create a new API key for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: createKeys requestBody: content: application/json: example: expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: true limit: 50 limit_reset: monthly name: My New API Key schema: example: expires_at: '2027-12-31T23:59:59Z' include_byok_in_limit: true limit: 50 limit_reset: monthly name: My New API Key properties: creator_user_id: description: >- Optional user ID of the key creator. Only meaningful for organization-owned keys where a specific member is creating the key. example: user_2dHFtVWx2n56w6HkM0000000000 minLength: 1 nullable: true type: string expires_at: description: >- Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string include_byok_in_limit: description: Whether to include BYOK usage in the limit example: true type: boolean limit: description: Optional spending limit for the API key in USD example: 50 format: double nullable: true type: number limit_reset: description: >- Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday. enum: - daily - weekly - monthly - null example: monthly nullable: true type: string name: description: Name for the new API key example: My New API Key minLength: 1 type: string workspace_id: description: The workspace to create the API key in. Defaults to the default workspace if not provided. example: 0df9e665-d932-5740-b2c7-b52af166bc11 format: uuid type: string required: - name type: object required: true responses: '201': content: application/json: example: data: byok_usage: 0 byok_usage_daily: 0 byok_usage_monthly: 0 byok_usage_weekly: 0 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: true label: My New API Key limit: 50 limit_remaining: 50 limit_reset: monthly name: My New API Key updated_at: null usage: 0 usage_daily: 0 usage_monthly: 0 usage_weekly: 0 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 key: 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 schema: example: data: byok_usage: 0 byok_usage_daily: 0 byok_usage_monthly: 0 byok_usage_weekly: 0 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: true label: My New API Key limit: 50 limit_remaining: 50 limit_reset: monthly name: My New API Key updated_at: null usage: 0 usage_daily: 0 usage_monthly: 0 usage_weekly: 0 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 key: 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 properties: data: description: The created API key information example: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: sk-or-v1-0e6...1c96 limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: byok_usage: description: Total external BYOK usage (in USD) for the API key example: 17.38 format: double type: number byok_usage_daily: description: External BYOK usage (in USD) for the current UTC day example: 17.38 format: double type: number byok_usage_monthly: description: External BYOK usage (in USD) for current UTC month example: 17.38 format: double type: number byok_usage_weekly: description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 format: double type: number created_at: description: ISO 8601 timestamp of when the API key was created example: '2025-08-24T10:30:00Z' type: string creator_user_id: description: >- The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID. example: user_2dHFtVWx2n56w6HkM0000000000 nullable: true type: string disabled: description: Whether the API key is disabled example: false type: boolean expires_at: description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string hash: description: Unique hash identifier for the API key example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string include_byok_in_limit: description: Whether to include external BYOK usage in the credit limit example: false type: boolean label: description: Human-readable label for the API key example: sk-or-v1-0e6...1c96 type: string limit: description: Spending limit for the API key in USD example: 100 format: double nullable: true type: number limit_remaining: description: Remaining spending limit in USD example: 74.5 format: double nullable: true type: number limit_reset: description: Type of limit reset for the API key example: monthly nullable: true type: string name: description: Name of the API key example: My Production Key type: string updated_at: description: ISO 8601 timestamp of when the API key was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string usage: description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 format: double type: number usage_daily: description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 format: double type: number usage_monthly: description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 format: double type: number usage_weekly: description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 format: double type: number workspace_id: description: The workspace ID this API key belongs to. example: 0df9e665-d932-5740-b2c7-b52af166bc11 type: string required: - hash - name - label - disabled - limit - limit_remaining - limit_reset - include_byok_in_limit - usage - usage_daily - usage_weekly - usage_monthly - byok_usage - byok_usage_daily - byok_usage_weekly - byok_usage_monthly - created_at - updated_at - creator_user_id - workspace_id type: object key: description: The actual API key string (only shown once) example: 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 type: string required: - data - key type: object description: API key created successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Create a new API key tags: - API Keys x-speakeasy-name-override: create /keys/{hash}: delete: description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteKeys parameters: - description: The hash identifier of the API key to delete in: path name: hash required: true schema: description: The hash identifier of the API key to delete example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string responses: '200': content: application/json: example: deleted: true schema: example: deleted: true properties: deleted: const: true description: Confirmation that the API key was deleted example: true type: boolean required: - deleted type: object description: API key deleted successfully '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Delete an API key tags: - API Keys x-speakeasy-name-override: delete get: description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getKey parameters: - description: The hash identifier of the API key to retrieve in: path name: hash required: true schema: description: The hash identifier of the API key to retrieve example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string responses: '200': content: application/json: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: Production API Key limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: Production API Key limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: description: The API key information example: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: sk-or-v1-0e6...1c96 limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: byok_usage: description: Total external BYOK usage (in USD) for the API key example: 17.38 format: double type: number byok_usage_daily: description: External BYOK usage (in USD) for the current UTC day example: 17.38 format: double type: number byok_usage_monthly: description: External BYOK usage (in USD) for current UTC month example: 17.38 format: double type: number byok_usage_weekly: description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 format: double type: number created_at: description: ISO 8601 timestamp of when the API key was created example: '2025-08-24T10:30:00Z' type: string creator_user_id: description: >- The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID. example: user_2dHFtVWx2n56w6HkM0000000000 nullable: true type: string disabled: description: Whether the API key is disabled example: false type: boolean expires_at: description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string hash: description: Unique hash identifier for the API key example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string include_byok_in_limit: description: Whether to include external BYOK usage in the credit limit example: false type: boolean label: description: Human-readable label for the API key example: sk-or-v1-0e6...1c96 type: string limit: description: Spending limit for the API key in USD example: 100 format: double nullable: true type: number limit_remaining: description: Remaining spending limit in USD example: 74.5 format: double nullable: true type: number limit_reset: description: Type of limit reset for the API key example: monthly nullable: true type: string name: description: Name of the API key example: My Production Key type: string updated_at: description: ISO 8601 timestamp of when the API key was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string usage: description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 format: double type: number usage_daily: description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 format: double type: number usage_monthly: description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 format: double type: number usage_weekly: description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 format: double type: number workspace_id: description: The workspace ID this API key belongs to. example: 0df9e665-d932-5740-b2c7-b52af166bc11 type: string required: - hash - name - label - disabled - limit - limit_remaining - limit_reset - include_byok_in_limit - usage - usage_daily - usage_weekly - usage_monthly - byok_usage - byok_usage_daily - byok_usage_weekly - byok_usage_monthly - created_at - updated_at - creator_user_id - workspace_id type: object required: - data type: object description: API key details '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get a single API key tags: - API Keys x-speakeasy-name-override: get patch: description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: updateKeys parameters: - description: The hash identifier of the API key to update in: path name: hash required: true schema: description: The hash identifier of the API key to update example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string requestBody: content: application/json: example: disabled: false include_byok_in_limit: true limit: 75 limit_reset: daily name: Updated API Key Name schema: example: disabled: false include_byok_in_limit: true limit: 75 limit_reset: daily name: Updated API Key Name properties: disabled: description: Whether to disable the API key example: false type: boolean include_byok_in_limit: description: Whether to include BYOK usage in the limit example: true type: boolean limit: description: New spending limit for the API key in USD example: 75 format: double nullable: true type: number limit_reset: description: >- New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday. enum: - daily - weekly - monthly - null example: daily nullable: true type: string name: description: New name for the API key example: Updated API Key Name type: string type: object required: true responses: '200': content: application/json: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: null hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: true label: Updated API Key Name limit: 75 limit_remaining: 49.5 limit_reset: daily name: Updated API Key Name updated_at: '2025-08-24T16:00:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 schema: example: data: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: null hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: true label: Updated API Key Name limit: 75 limit_remaining: 49.5 limit_reset: daily name: Updated API Key Name updated_at: '2025-08-24T16:00:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: data: description: The updated API key information example: byok_usage: 17.38 byok_usage_daily: 17.38 byok_usage_monthly: 17.38 byok_usage_weekly: 17.38 created_at: '2025-08-24T10:30:00Z' creator_user_id: user_2dHFtVWx2n56w6HkM0000000000 disabled: false expires_at: '2027-12-31T23:59:59Z' hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 include_byok_in_limit: false label: sk-or-v1-0e6...1c96 limit: 100 limit_remaining: 74.5 limit_reset: monthly name: My Production Key updated_at: '2025-08-24T15:45:00Z' usage: 25.5 usage_daily: 25.5 usage_monthly: 25.5 usage_weekly: 25.5 workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11 properties: byok_usage: description: Total external BYOK usage (in USD) for the API key example: 17.38 format: double type: number byok_usage_daily: description: External BYOK usage (in USD) for the current UTC day example: 17.38 format: double type: number byok_usage_monthly: description: External BYOK usage (in USD) for current UTC month example: 17.38 format: double type: number byok_usage_weekly: description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday) example: 17.38 format: double type: number created_at: description: ISO 8601 timestamp of when the API key was created example: '2025-08-24T10:30:00Z' type: string creator_user_id: description: >- The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID. example: user_2dHFtVWx2n56w6HkM0000000000 nullable: true type: string disabled: description: Whether the API key is disabled example: false type: boolean expires_at: description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration example: '2027-12-31T23:59:59Z' format: date-time nullable: true type: string hash: description: Unique hash identifier for the API key example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 type: string include_byok_in_limit: description: Whether to include external BYOK usage in the credit limit example: false type: boolean label: description: Human-readable label for the API key example: sk-or-v1-0e6...1c96 type: string limit: description: Spending limit for the API key in USD example: 100 format: double nullable: true type: number limit_remaining: description: Remaining spending limit in USD example: 74.5 format: double nullable: true type: number limit_reset: description: Type of limit reset for the API key example: monthly nullable: true type: string name: description: Name of the API key example: My Production Key type: string updated_at: description: ISO 8601 timestamp of when the API key was last updated example: '2025-08-24T15:45:00Z' nullable: true type: string usage: description: Total OpenRouter credit usage (in USD) for the API key example: 25.5 format: double type: number usage_daily: description: OpenRouter credit usage (in USD) for the current UTC day example: 25.5 format: double type: number usage_monthly: description: OpenRouter credit usage (in USD) for the current UTC month example: 25.5 format: double type: number usage_weekly: description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday) example: 25.5 format: double type: number workspace_id: description: The workspace ID this API key belongs to. example: 0df9e665-d932-5740-b2c7-b52af166bc11 type: string required: - hash - name - label - disabled - limit - limit_remaining - limit_reset - include_byok_in_limit - usage - usage_daily - usage_weekly - usage_monthly - byok_usage - byok_usage_daily - byok_usage_weekly - byok_usage_monthly - created_at - updated_at - creator_user_id - workspace_id type: object required: - data type: object description: API key updated successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Update an API key tags: - API Keys x-speakeasy-name-override: update /messages: post: description: >- Creates a message using the Anthropic Messages API format. Supports text, images, PDFs, tools, and extended thinking. operationId: createMessages requestBody: content: application/json: example: max_tokens: 1024 messages: - content: Hello, how are you? role: user model: anthropic/claude-sonnet-4 schema: $ref: '#/components/schemas/MessagesRequest' required: true responses: '200': content: application/json: example: content: - text: I'm doing well, thank you for asking! How can I help you today? type: text id: msg_abc123 model: anthropic/claude-sonnet-4 role: assistant stop_reason: end_turn type: message usage: input_tokens: 12 output_tokens: 18 schema: $ref: '#/components/schemas/MessagesResult' text/event-stream: example: data: delta: text: Hello type: text_delta index: 0 type: content_block_delta event: content_block_delta schema: properties: data: $ref: '#/components/schemas/MessagesStreamEvents' event: type: string required: - event - data type: object x-speakeasy-sse-sentinel: '[DONE]' description: Successful response '400': content: application/json: example: error: message: 'Invalid request: messages is required' type: invalid_request_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Invalid request error '401': content: application/json: example: error: message: Invalid API key type: authentication_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Authentication error '403': content: application/json: example: error: message: Permission denied type: permission_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Permission denied error '404': content: application/json: example: error: message: Model not found type: not_found_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Not found error '429': content: application/json: example: error: message: Rate limit exceeded type: rate_limit_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Rate limit error '500': content: application/json: example: error: message: Internal server error type: api_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: API error '503': content: application/json: example: error: message: Service temporarily overloaded type: overloaded_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Overloaded error '529': content: application/json: example: error: message: Provider is temporarily overloaded type: overloaded_error type: error schema: $ref: '#/components/schemas/MessagesErrorResponse' description: Overloaded error summary: Create a message tags: - Anthropic Messages x-speakeasy-ignore: true x-speakeasy-name-override: create x-speakeasy-stream-request-field: stream /models: get: operationId: getModels parameters: - description: Filter models by use case category in: query name: category required: false schema: description: Filter models by use case category enum: - programming - roleplay - marketing - marketing/seo - technology - science - translation - legal - finance - health - trivia - academia example: programming type: string - description: Filter models by supported parameter (comma-separated) in: query name: supported_parameters required: false schema: description: Filter models by supported parameter (comma-separated) example: temperature type: string - description: >- Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text". in: query name: output_modalities required: false schema: description: >- Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text". example: text type: string - description: Return results as RSS feed in: query name: use_rss required: false schema: description: Return results as RSS feed example: 'true' type: string - description: Use chat links in RSS feed items in: query name: use_rss_chat_links required: false schema: description: Use chat links in RSS feed items example: 'true' type: string responses: '200': content: application/json: example: data: - architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT canonical_slug: openai/gpt-4 context_length: 8192 created: 1692901234 default_parameters: null description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. expiration_date: null id: openai/gpt-4 knowledge_cutoff: null links: details: /api/v1/models/openai/gpt-5.4/endpoints name: GPT-4 per_request_limits: null pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' supported_parameters: - temperature - top_p - max_tokens supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 schema: $ref: '#/components/schemas/ModelsListResponse' application/rss+xml: example: >- OpenRouter Models schema: type: string description: Returns a list of models or RSS feed '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all models and their properties tags: - Models x-speakeasy-name-override: list /models/{author}/{slug}/endpoints: get: operationId: listEndpoints parameters: - description: The author/organization of the model in: path name: author required: true schema: description: The author/organization of the model example: openai type: string - description: The model slug in: path name: slug required: true schema: description: The model slug example: gpt-4 type: string responses: '200': content: application/json: example: data: architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT created: 1692901234 description: GPT-4 is a large multimodal model. endpoints: [] id: openai/gpt-4 name: GPT-4 schema: example: data: architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT created: 1692901234 description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. endpoints: - context_length: 8192 latency_last_30m: p50: 0.25 p75: 0.35 p90: 0.48 p99: 0.85 max_completion_tokens: 4096 max_prompt_tokens: 8192 model_id: openai/gpt-4 model_name: GPT-4 name: 'OpenAI: GPT-4' pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' provider_name: OpenAI quantization: fp16 status: default supported_parameters: - temperature - top_p - max_tokens supports_implicit_caching: true tag: openai throughput_last_30m: p50: 45.2 p75: 38.5 p90: 28.3 p99: 15.1 uptime_last_1d: 99.8 uptime_last_30m: 99.5 uptime_last_5m: 100 id: openai/gpt-4 name: GPT-4 properties: data: $ref: '#/components/schemas/ListEndpointsResponse' required: - data type: object description: Returns a list of endpoints '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all endpoints for a model tags: - Endpoints x-speakeasy-name-override: list /models/count: get: operationId: listModelsCount parameters: - description: >- Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text". in: query name: output_modalities required: false schema: description: >- Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text". example: text type: string responses: '200': content: application/json: example: data: count: 150 schema: $ref: '#/components/schemas/ModelsCountResponse' description: Returns the total count of available models '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get total count of available models tags: - Models x-speakeasy-name-override: count /models/user: get: description: >- List models filtered by user provider preferences, [privacy settings](https://openrouter.ai/docs/guides/privacy/provider-logging), and [guardrails](https://openrouter.ai/docs/guides/features/guardrails). If requesting through `eu.openrouter.ai/api/v1/...` the results will be filtered to models that satisfy [EU in-region routing](https://openrouter.ai/docs/guides/privacy/provider-logging#enterprise-eu-in-region-routing). operationId: listModelsUser responses: '200': content: application/json: example: data: - architecture: input_modalities: - text instruct_type: chatml modality: text->text output_modalities: - text tokenizer: GPT canonical_slug: openai/gpt-4 context_length: 8192 created: 1692901234 default_parameters: null description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. expiration_date: null id: openai/gpt-4 knowledge_cutoff: null links: details: /api/v1/models/openai/gpt-5.4/endpoints name: GPT-4 per_request_limits: null pricing: completion: '0.00006' image: '0' prompt: '0.00003' request: '0' supported_parameters: - temperature - top_p - max_tokens supported_voices: null top_provider: context_length: 8192 is_moderated: true max_completion_tokens: 4096 schema: $ref: '#/components/schemas/ModelsListResponse' description: Returns a list of models filtered by user provider preferences '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error security: - bearer: [] summary: List models filtered by user provider preferences, privacy settings, and guardrails tags: - Models x-speakeasy-name-override: listForUser /organization/members: get: description: >- List all members of the organization associated with the authenticated management key. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listOrganizationMembers parameters: - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - email: jane.doe@example.com first_name: Jane id: user_2dHFtVWx2n56w6HkM0000000000 last_name: Doe role: member total_count: 25 schema: properties: data: description: List of organization members items: properties: email: description: Email address of the member example: jane.doe@example.com type: string first_name: description: First name of the member example: Jane nullable: true type: string id: description: User ID of the organization member example: user_2dHFtVWx2n56w6HkM0000000000 type: string last_name: description: Last name of the member example: Doe nullable: true type: string role: description: Role of the member in the organization enum: - org:admin - org:member example: org:member type: string required: - id - first_name - last_name - email - role type: object type: array total_count: description: Total number of members in the organization example: 25 type: integer required: - data - total_count type: object description: List of organization members '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List organization members tags: - Organization x-speakeasy-name-override: listMembers x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit /providers: get: operationId: listProviders responses: '200': content: application/json: example: data: - datacenters: - US - IE headquarters: US name: OpenAI privacy_policy_url: https://openai.com/privacy slug: openai status_page_url: https://status.openai.com terms_of_service_url: https://openai.com/terms schema: example: data: - datacenters: - US - IE headquarters: US name: OpenAI privacy_policy_url: https://openai.com/privacy slug: openai status_page_url: https://status.openai.com terms_of_service_url: https://openai.com/terms properties: data: items: example: datacenters: - US - IE headquarters: US name: OpenAI privacy_policy_url: https://openai.com/privacy slug: openai status_page_url: https://status.openai.com terms_of_service_url: https://openai.com/terms properties: datacenters: description: ISO 3166-1 Alpha-2 country codes of the provider datacenter locations example: - US - IE items: enum: - AD - AE - AF - AG - AI - AL - AM - AO - AQ - AR - AS - AT - AU - AW - AX - AZ - BA - BB - BD - BE - BF - BG - BH - BI - BJ - BL - BM - BN - BO - BQ - BR - BS - BT - BV - BW - BY - BZ - CA - CC - CD - CF - CG - CH - CI - CK - CL - CM - CN - CO - CR - CU - CV - CW - CX - CY - CZ - DE - DJ - DK - DM - DO - DZ - EC - EE - EG - EH - ER - ES - ET - FI - FJ - FK - FM - FO - FR - GA - GB - GD - GE - GF - GG - GH - GI - GL - GM - GN - GP - GQ - GR - GS - GT - GU - GW - GY - HK - HM - HN - HR - HT - HU - ID - IE - IL - IM - IN - IO - IQ - IR - IS - IT - JE - JM - JO - JP - KE - KG - KH - KI - KM - KN - KP - KR - KW - KY - KZ - LA - LB - LC - LI - LK - LR - LS - LT - LU - LV - LY - MA - MC - MD - ME - MF - MG - MH - MK - ML - MM - MN - MO - MP - MQ - MR - MS - MT - MU - MV - MW - MX - MY - MZ - NA - NC - NE - NF - NG - NI - NL - 'NO' - NP - NR - NU - NZ - OM - PA - PE - PF - PG - PH - PK - PL - PM - PN - PR - PS - PT - PW - PY - QA - RE - RO - RS - RU - RW - SA - SB - SC - SD - SE - SG - SH - SI - SJ - SK - SL - SM - SN - SO - SR - SS - ST - SV - SX - SY - SZ - TC - TD - TF - TG - TH - TJ - TK - TL - TM - TN - TO - TR - TT - TV - TW - TZ - UA - UG - UM - US - UY - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - YT - ZA - ZM - ZW type: string nullable: true type: array headquarters: description: ISO 3166-1 Alpha-2 country code of the provider headquarters enum: - AD - AE - AF - AG - AI - AL - AM - AO - AQ - AR - AS - AT - AU - AW - AX - AZ - BA - BB - BD - BE - BF - BG - BH - BI - BJ - BL - BM - BN - BO - BQ - BR - BS - BT - BV - BW - BY - BZ - CA - CC - CD - CF - CG - CH - CI - CK - CL - CM - CN - CO - CR - CU - CV - CW - CX - CY - CZ - DE - DJ - DK - DM - DO - DZ - EC - EE - EG - EH - ER - ES - ET - FI - FJ - FK - FM - FO - FR - GA - GB - GD - GE - GF - GG - GH - GI - GL - GM - GN - GP - GQ - GR - GS - GT - GU - GW - GY - HK - HM - HN - HR - HT - HU - ID - IE - IL - IM - IN - IO - IQ - IR - IS - IT - JE - JM - JO - JP - KE - KG - KH - KI - KM - KN - KP - KR - KW - KY - KZ - LA - LB - LC - LI - LK - LR - LS - LT - LU - LV - LY - MA - MC - MD - ME - MF - MG - MH - MK - ML - MM - MN - MO - MP - MQ - MR - MS - MT - MU - MV - MW - MX - MY - MZ - NA - NC - NE - NF - NG - NI - NL - 'NO' - NP - NR - NU - NZ - OM - PA - PE - PF - PG - PH - PK - PL - PM - PN - PR - PS - PT - PW - PY - QA - RE - RO - RS - RU - RW - SA - SB - SC - SD - SE - SG - SH - SI - SJ - SK - SL - SM - SN - SO - SR - SS - ST - SV - SX - SY - SZ - TC - TD - TF - TG - TH - TJ - TK - TL - TM - TN - TO - TR - TT - TV - TW - TZ - UA - UG - UM - US - UY - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - YT - ZA - ZM - ZW - null example: US nullable: true type: string name: description: Display name of the provider example: OpenAI type: string privacy_policy_url: description: URL to the provider's privacy policy example: https://openai.com/privacy nullable: true type: string slug: description: URL-friendly identifier for the provider example: openai type: string status_page_url: description: URL to the provider's status page example: https://status.openai.com nullable: true type: string terms_of_service_url: description: URL to the provider's terms of service example: https://openai.com/terms nullable: true type: string required: - name - slug - privacy_policy_url type: object type: array required: - data type: object description: Returns a list of providers '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all providers tags: - Providers x-speakeasy-name-override: list /rerank: post: description: Submits a rerank request to the rerank router operationId: createRerank requestBody: content: application/json: schema: description: Rerank request input example: documents: - Paris is the capital of France. - Berlin is the capital of Germany. model: cohere/rerank-v3.5 query: What is the capital of France? top_n: 3 properties: documents: description: The list of documents to rerank example: - Paris is the capital of France. - Berlin is the capital of Germany. items: type: string type: array model: description: The rerank model to use example: cohere/rerank-v3.5 type: string provider: allOf: - $ref: '#/components/schemas/ProviderPreferences' - description: Provider routing preferences for the request. query: description: The search query to rerank documents against example: What is the capital of France? type: string top_n: description: Number of most relevant documents to return example: 3 minimum: 1 type: integer required: - model - query - documents type: object required: true responses: '200': content: application/json: schema: description: Rerank response containing ranked results example: id: gen-rerank-1234567890-abc model: cohere/rerank-v3.5 results: - document: text: Paris is the capital of France. index: 0 relevance_score: 0.98 usage: search_units: 1 total_tokens: 150 properties: id: description: Unique identifier for the rerank response (ORID format) example: gen-rerank-1234567890-abc type: string model: description: The model used for reranking example: cohere/rerank-v3.5 type: string provider: description: The provider that served the rerank request example: Cohere type: string results: description: List of rerank results sorted by relevance example: - document: text: Paris is the capital of France. index: 0 relevance_score: 0.98 items: description: A single rerank result example: document: text: Paris is the capital of France. index: 0 relevance_score: 0.98 properties: document: description: The document object containing the original text properties: text: description: The document text example: Paris is the capital of France. type: string required: - text type: object index: description: Index of the document in the original input list example: 0 type: integer relevance_score: description: Relevance score of the document to the query example: 0.98 format: double type: number required: - index - relevance_score - document type: object type: array usage: description: Usage statistics example: search_units: 1 total_tokens: 150 properties: cost: description: Cost of the request in credits example: 0.001 format: double type: number search_units: description: Number of search units consumed (Cohere billing) example: 1 type: integer total_tokens: description: Total number of tokens used example: 150 type: integer type: object required: - model - results type: object text/event-stream: example: 'data: [DONE]' schema: description: Not used for rerank - rerank does not support streaming type: string x-speakeasy-sse-sentinel: '[DONE]' description: Rerank response '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Submit a rerank request tags: - Rerank x-speakeasy-name-override: rerank /responses: post: description: Creates a streaming or non-streaming response using OpenResponses API format operationId: createResponses requestBody: content: application/json: example: input: Tell me a joke model: openai/gpt-4o schema: $ref: '#/components/schemas/ResponsesRequest' required: true responses: '200': content: application/json: example: created_at: 1700000000 id: resp_abc123 model: openai/gpt-4o object: response output: - content: - text: Why did the chicken cross the road? To get to the other side! type: output_text role: assistant type: message status: completed usage: completion_tokens: 20 prompt_tokens: 10 total_tokens: 30 schema: $ref: '#/components/schemas/OpenResponsesResult' text/event-stream: example: data: delta: Hello type: response.output_text.delta schema: properties: data: $ref: '#/components/schemas/StreamEvents' required: - data type: object x-speakeasy-sse-sentinel: '[DONE]' description: Successful response '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '408': content: application/json: example: error: code: 408 message: Operation timed out. Please try again later. schema: $ref: '#/components/schemas/RequestTimeoutResponse' description: Request Timeout - Operation exceeded time limit '413': content: application/json: example: error: code: 413 message: Request payload too large schema: $ref: '#/components/schemas/PayloadTooLargeResponse' description: Payload Too Large - Request payload exceeds size limits '422': content: application/json: example: error: code: 422 message: Invalid argument schema: $ref: '#/components/schemas/UnprocessableEntityResponse' description: Unprocessable Entity - Semantic validation failure '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure '503': content: application/json: example: error: code: 503 message: Service temporarily unavailable schema: $ref: '#/components/schemas/ServiceUnavailableResponse' description: Service Unavailable - Service temporarily unavailable '524': content: application/json: example: error: code: 524 message: Request timed out. Please try again later. schema: $ref: '#/components/schemas/EdgeNetworkTimeoutResponse' description: Infrastructure Timeout - Provider request timed out at edge network '529': content: application/json: example: error: code: 529 message: Provider returned error schema: $ref: '#/components/schemas/ProviderOverloadedResponse' description: Provider Overloaded - Provider is temporarily overloaded summary: Create a response tags: - beta.responses x-speakeasy-name-override: send x-speakeasy-stream-request-field: stream /videos: post: description: Submits a video generation request and returns a polling URL to check status operationId: createVideos requestBody: content: application/json: example: aspect_ratio: '16:9' duration: 8 model: google/veo-3.1 prompt: A serene mountain landscape at sunset resolution: 720p schema: $ref: '#/components/schemas/VideoGenerationRequest' required: true responses: '202': content: application/json: example: generation_id: gen-xyz789 id: job-abc123 polling_url: /api/v1/videos/job-abc123 status: pending schema: $ref: '#/components/schemas/VideoGenerationResponse' description: Video generation request accepted '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '402': content: application/json: example: error: code: 402 message: Insufficient credits. Add more using https://openrouter.ai/credits schema: $ref: '#/components/schemas/PaymentRequiredResponse' description: Payment Required - Insufficient credits or quota to complete request '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '429': content: application/json: example: error: code: 429 message: Rate limit exceeded schema: $ref: '#/components/schemas/TooManyRequestsResponse' description: Too Many Requests - Rate limit exceeded '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Submit a video generation request tags: - Video Generation x-speakeasy-name-override: generate /videos/{jobId}: get: description: Returns job status and content URLs when completed operationId: getVideos parameters: - in: path name: jobId required: true schema: example: job-abc123 minLength: 1 type: string responses: '200': content: application/json: example: generation_id: gen-xyz789 id: job-abc123 polling_url: /api/v1/videos/job-abc123 status: complete unsigned_urls: - https://storage.example.com/video.mp4 usage: cost: 0.5 schema: $ref: '#/components/schemas/VideoGenerationResponse' description: Video generation status '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Poll video generation status tags: - Video Generation x-speakeasy-name-override: getGeneration /videos/{jobId}/content: get: description: Streams the generated video content from the upstream provider operationId: listVideosContent parameters: - in: path name: jobId required: true schema: example: job-abc123 minLength: 1 type: string - in: query name: index required: false schema: default: 0 example: 0 minimum: 0 nullable: true type: integer responses: '200': content: application/octet-stream: example: schema: format: binary type: string description: Video content stream '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error '502': content: application/json: example: error: code: 502 message: Provider returned error schema: $ref: '#/components/schemas/BadGatewayResponse' description: Bad Gateway - Provider/upstream API failure summary: Download generated video content tags: - Video Generation x-speakeasy-name-override: getVideoContent /videos/models: get: description: Returns a list of all available video generation models and their properties operationId: listVideosModels responses: '200': content: application/json: example: data: - allowed_passthrough_parameters: [] canonical_slug: google/veo-3.1 created: 1700000000 description: Google video generation model generate_audio: true id: google/veo-3.1 name: Veo 3.1 pricing_skus: generate: '0.50' seed: null supported_aspect_ratios: - '16:9' supported_durations: - 5 - 8 supported_frame_images: - first_frame - last_frame supported_resolutions: - 720p supported_sizes: null schema: $ref: '#/components/schemas/VideoModelsListResponse' description: Returns a list of video generation models '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List all video generation models tags: - Video Generation /workspaces: get: description: >- List all workspaces for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: listWorkspaces parameters: - description: Number of records to skip for pagination in: query name: offset required: false schema: description: Number of records to skip for pagination example: 0 minimum: 0 nullable: true type: integer - description: Maximum number of records to return (max 100) in: query name: limit required: false schema: description: Maximum number of records to return (max 100) example: 50 maximum: 100 minimum: 1 type: integer responses: '200': content: application/json: example: data: - created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: '2025-08-24T15:45:00Z' total_count: 1 schema: $ref: '#/components/schemas/ListWorkspacesResponse' description: List of workspaces '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: List workspaces tags: - Workspaces x-speakeasy-name-override: list x-speakeasy-pagination: inputs: - in: parameters name: offset type: offset - in: parameters name: limit type: limit outputs: results: $.data type: offsetLimit post: description: >- Create a new workspace for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: createWorkspace requestBody: content: application/json: example: default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace name: Production slug: production schema: $ref: '#/components/schemas/CreateWorkspaceRequest' required: true responses: '201': content: application/json: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: null schema: $ref: '#/components/schemas/CreateWorkspaceResponse' description: Workspace created successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Create a workspace tags: - Workspaces x-speakeasy-name-override: create /workspaces/{id}: delete: description: >- Delete an existing workspace. The default workspace cannot be deleted. Workspaces with active API keys cannot be deleted. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: deleteWorkspace parameters: - description: The workspace ID (UUID) or slug in: path name: id required: true schema: description: The workspace ID (UUID) or slug example: production minLength: 1 type: string responses: '200': content: application/json: example: deleted: true schema: $ref: '#/components/schemas/DeleteWorkspaceResponse' description: Workspace deleted successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Delete a workspace tags: - Workspaces x-speakeasy-name-override: delete get: description: Get a single workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: getWorkspace parameters: - description: The workspace ID (UUID) or slug in: path name: id required: true schema: description: The workspace ID (UUID) or slug example: production minLength: 1 type: string responses: '200': content: application/json: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Production slug: production updated_at: '2025-08-24T15:45:00Z' schema: $ref: '#/components/schemas/GetWorkspaceResponse' description: Workspace details '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Get a workspace tags: - Workspaces x-speakeasy-name-override: get patch: description: >- Update an existing workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: updateWorkspace parameters: - description: The workspace ID (UUID) or slug in: path name: id required: true schema: description: The workspace ID (UUID) or slug example: production minLength: 1 type: string requestBody: content: application/json: example: name: Updated Workspace slug: updated-workspace schema: $ref: '#/components/schemas/UpdateWorkspaceRequest' required: true responses: '200': content: application/json: example: data: created_at: '2025-08-24T10:30:00Z' created_by: user_abc123 default_image_model: openai/dall-e-3 default_provider_sort: price default_text_model: openai/gpt-4o description: Production environment workspace id: 550e8400-e29b-41d4-a716-446655440000 io_logging_api_key_ids: null io_logging_sampling_rate: 1 is_data_discount_logging_enabled: true is_observability_broadcast_enabled: false is_observability_io_logging_enabled: false name: Updated Workspace slug: updated-workspace updated_at: '2025-08-25T10:00:00Z' schema: $ref: '#/components/schemas/UpdateWorkspaceResponse' description: Workspace updated successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Update a workspace tags: - Workspaces x-speakeasy-name-override: update /workspaces/{id}/members/add: post: description: >- Add multiple organization members to a workspace. Members are assigned the same role they hold in the organization. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkAddWorkspaceMembers parameters: - description: The workspace ID (UUID) or slug in: path name: id required: true schema: description: The workspace ID (UUID) or slug example: production minLength: 1 type: string requestBody: content: application/json: example: user_ids: - user_abc123 - user_def456 schema: $ref: '#/components/schemas/BulkAddWorkspaceMembersRequest' required: true responses: '200': content: application/json: example: added_count: 1 data: - created_at: '2025-08-24T10:30:00Z' id: 660e8400-e29b-41d4-a716-446655440000 role: member user_id: user_abc123 workspace_id: 550e8400-e29b-41d4-a716-446655440000 schema: $ref: '#/components/schemas/BulkAddWorkspaceMembersResponse' description: Members added successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk add members to a workspace tags: - Workspaces x-speakeasy-name-override: bulkAddMembers /workspaces/{id}/members/remove: post: description: >- Remove multiple members from a workspace. Members with active API keys in the workspace cannot be removed. [Management key](/docs/guides/overview/auth/management-api-keys) required. operationId: bulkRemoveWorkspaceMembers parameters: - description: The workspace ID (UUID) or slug in: path name: id required: true schema: description: The workspace ID (UUID) or slug example: production minLength: 1 type: string requestBody: content: application/json: example: user_ids: - user_abc123 - user_def456 schema: $ref: '#/components/schemas/BulkRemoveWorkspaceMembersRequest' required: true responses: '200': content: application/json: example: removed_count: 2 schema: $ref: '#/components/schemas/BulkRemoveWorkspaceMembersResponse' description: Members removed successfully '400': content: application/json: example: error: code: 400 message: Invalid request parameters schema: $ref: '#/components/schemas/BadRequestResponse' description: Bad Request - Invalid request parameters or malformed input '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error summary: Bulk remove members from a workspace tags: - Workspaces x-speakeasy-name-override: bulkRemoveMembers security: - apiKey: [] servers: - description: Production server url: https://openrouter.ai/api/v1 x-speakeasy-server-id: production tags: - description: API key management endpoints name: API Keys - description: Analytics and usage endpoints name: Analytics - description: Anthropic Messages endpoints name: Anthropic Messages - description: Chat completion endpoints name: Chat - description: Credit management endpoints name: Credits - description: Text embedding endpoints name: Embeddings - description: Endpoint information name: Endpoints - description: Generation history endpoints name: Generations - description: Guardrails endpoints name: Guardrails - description: Model information endpoints name: Models - description: OAuth authentication endpoints name: OAuth - description: Organization endpoints name: Organization - description: Provider information endpoints name: Providers - description: Rerank endpoints name: Rerank - description: Speech-to-text endpoints name: STT - description: Text-to-speech endpoints name: TTS - description: Video Generation endpoints name: Video Generation - description: Workspaces endpoints name: Workspaces - description: beta.responses endpoints name: beta.responses x-fern-base-path: / x-retry-strategy: initialDelay: 500 maxAttempts: 3 maxDelay: 60000 type: exponential x-speakeasy-retries: backoff: exponent: 1.5 initialInterval: 500 maxElapsedTime: 3600000 maxInterval: 60000 retryConnectionErrors: true statusCodes: - 5XX strategy: backoff