components:
  parameters: {}
  schemas:
    AABenchmarkEntry:
      description: Artificial Analysis benchmark index scores.
      example:
        agentic_index: 55.8
        coding_index: 63.2
        intelligence_index: 71.4
      properties:
        agentic_index:
          description: Artificial Analysis Agentic Index score
          example: 55.8
          format: double
          type:
            - number
            - 'null'
        coding_index:
          description: Artificial Analysis Coding Index score
          example: 63.2
          format: double
          type:
            - number
            - 'null'
        intelligence_index:
          description: Artificial Analysis Intelligence Index score
          example: 71.4
          format: double
          type:
            - number
            - 'null'
      required:
        - intelligence_index
        - coding_index
        - agentic_index
      type: object
    ActivityItem:
      example:
        byok_usage_inference: 0.012
        completion_tokens: 125
        date: '2025-08-24'
        endpoint_id: 550e8400-e29b-41d4-a716-446655440000
        model: openai/gpt-4.1
        model_permaslug: openai/gpt-4.1-2025-04-14
        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
    AdditionalToolsItem:
      description: Additional tools made available to the model at this point in the input
      example:
        role: developer
        tools:
          - name: get_weather
            parameters:
              properties:
                location:
                  type: string
              type: object
            type: function
        type: additional_tools
      properties:
        id:
          type:
            - string
            - 'null'
        role:
          enum:
            - unknown
            - user
            - assistant
            - system
            - critic
            - discriminator
            - developer
            - tool
          type: string
        tools:
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/FunctionTool'
                  - properties: {}
                    type: object
                description: Function tool definition
                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/NamespaceTool'
              - $ref: '#/components/schemas/AdvisorServerTool_OpenRouter'
              - $ref: '#/components/schemas/SubagentServerTool_OpenRouter'
              - $ref: '#/components/schemas/DatetimeServerTool'
              - $ref: '#/components/schemas/FilesServerTool'
              - $ref: '#/components/schemas/FusionServerTool_OpenRouter'
              - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
              - $ref: '#/components/schemas/SearchModelsServerTool_OpenRouter'
              - $ref: '#/components/schemas/WebFetchServerTool'
              - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter'
              - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter'
              - $ref: '#/components/schemas/BashServerTool'
              - $ref: '#/components/schemas/ShellServerTool_OpenRouter'
              - additionalProperties: {}
                properties:
                  type:
                    type: string
                required:
                  - type
                type: object
          type: array
        type:
          enum:
            - additional_tools
          type: string
      required:
        - type
        - role
        - tools
      type: object
    AdvisorNestedTool:
      additionalProperties: {}
      description: >-
        A tool made available to the advisor sub-agent. Only OpenRouter server
        tools (e.g. openrouter:web_search) are supported; function tools are
        rejected because the advisor has no way to execute them. The advisor
        tool may not list itself.
      example:
        type: openrouter:web_search
      properties:
        parameters:
          additionalProperties: {}
          type: object
        type:
          type: string
      required:
        - type
      type: object
    AdvisorReasoning:
      description: >-
        Reasoning configuration forwarded to the advisor call. Use this to
        control reasoning effort and token budget for models that support
        extended thinking.
      example:
        effort: high
      properties:
        effort:
          description: Reasoning effort level for the advisor call.
          enum:
            - max
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
          type: string
        max_tokens:
          description: Maximum number of reasoning tokens the advisor may use.
          type: integer
      type: object
    AdvisorServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: consults a higher-intelligence advisor
        model (any OpenRouter model) for guidance mid-generation and returns its
        response. The advisor may run as a sub-agent with its own tools. Include
        multiple entries to offer several named advisors; at most one entry may
        omit `name` to act as the default advisor.
      example:
        parameters:
          model: ~anthropic/claude-opus-latest
          name: reviewer
        type: openrouter:advisor
      properties:
        parameters:
          $ref: '#/components/schemas/AdvisorServerToolConfig'
        type:
          enum:
            - openrouter:advisor
          type: string
      required:
        - type
      type: object
    AdvisorServerToolConfig:
      description: Configuration for one openrouter:advisor server tool entry.
      example:
        model: ~anthropic/claude-opus-latest
        name: reviewer
      properties:
        forward_transcript:
          description: >-
            When true, the full parent conversation is forwarded to the advisor
            so it sees the same context the executor does (and the tool-call
            `prompt`, if given, is appended as a final user turn). When false or
            omitted, the advisor receives only the `prompt` the executor passes
            in the tool call.
          example: false
          type: boolean
        instructions:
          description: >-
            System instructions for the advisor sub-agent. When omitted, the
            advisor responds with no system prompt of its own.
          example: You are a senior staff engineer. Give a focused, decisive plan.
          type: string
        max_completion_tokens:
          description: >-
            Maximum number of output tokens (including reasoning) the advisor
            may produce. When omitted, the provider's default applies.
          example: 2048
          type: integer
        max_tool_calls:
          description: >-
            Maximum number of tool-calling steps the advisor sub-agent may take
            during its agentic loop. Capped at 25. Only relevant when the
            advisor is given tools.
          example: 5
          maximum: 25
          minimum: 1
          type: integer
        model:
          description: >-
            Slug of the advisor model to consult (any OpenRouter model). When
            omitted, the executor can choose it via the tool call's `model`
            argument; if neither is set, the model from the outer API request is
            used. The advisor tool itself cannot be the advisor model.
          example: ~anthropic/claude-opus-latest
          type: string
        name:
          description: >-
            Optional name for this advisor. The model sees one tool per named
            advisor (and one default for an unnamed entry). Names must be unique
            across advisor entries. Letters, digits, spaces, underscores, and
            dashes; trimmed; 1–64 chars.
          example: reviewer
          maxLength: 64
          minLength: 1
          pattern: ^[a-zA-Z0-9 _-]+$
          type: string
        reasoning:
          $ref: '#/components/schemas/AdvisorReasoning'
        stream:
          description: >-
            When true, the advisor's advice streams incrementally as it is
            produced. In the Responses API this emits
            `response.output_text.delta` events targeting the advisor output
            item; the final `advice` field is still set on the completed item.
            Has no effect on the Chat Completions API (where the advice arrives
            only as the final tool result). When false or omitted, the advice
            arrives only as the final result.
          example: false
          type: boolean
        temperature:
          description: >-
            Sampling temperature forwarded to the advisor call. When omitted,
            the provider's default applies.
          example: 0.7
          format: double
          type: number
        tools:
          description: >-
            Tools the advisor sub-agent may use while forming its advice. The
            advisor runs as an agentic sub-agent over these tools, then returns
            its text. Only OpenRouter server tools are supported — function
            tools are rejected — and the list must not include the advisor tool
            itself.
          items:
            $ref: '#/components/schemas/AdvisorNestedTool'
          type: array
      type: object
    AgentMessageItem:
      additionalProperties: {}
      description: A message routed between agents in a multi-agent session
      example:
        author: /root/worker
        content:
          - text: Task complete.
            type: input_text
        recipient: /root
        type: agent_message
      properties:
        agent:
          additionalProperties: {}
          properties:
            agent_name:
              type: string
          required:
            - agent_name
          type:
            - object
            - 'null'
        author:
          type: string
        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
              - additionalProperties: {}
                properties:
                  encrypted_content:
                    type: string
                  type:
                    enum:
                      - encrypted_content
                    type: string
                required:
                  - type
                  - encrypted_content
                type: object
          type: array
        id:
          type:
            - string
            - 'null'
        recipient:
          type: string
        type:
          enum:
            - agent_message
          type: string
      required:
        - type
        - author
        - recipient
        - content
      type: object
    AnnotationAddedEvent:
      allOf:
        - $ref: '#/components/schemas/BaseAnnotationAddedEvent'
        - properties: {}
          type: object
      description: Event emitted when a text annotation is added to output
      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
    AnthropicAdvisorMessageUsageIteration:
      allOf:
        - $ref: '#/components/schemas/AnthropicBaseUsageIteration'
        - properties:
            model:
              type: string
            type:
              enum:
                - advisor_message
              type: string
          required:
            - type
            - model
          type: object
      example:
        cache_creation: null
        cache_creation_input_tokens: 0
        cache_read_input_tokens: 0
        input_tokens: 823
        model: claude-opus-4-6
        output_tokens: 1612
        type: advisor_message
    AnthropicAdvisorToolResult:
      example:
        content:
          text: Advisor response text
          type: advisor_result
        tool_use_id: srvtoolu_01abc
        type: advisor_tool_result
      properties:
        content:
          additionalProperties: {}
          type: object
        tool_use_id:
          type: string
        type:
          enum:
            - advisor_tool_result
          type: string
      required:
        - type
        - tool_use_id
        - content
      type: object
    AnthropicAllowedCallers:
      example:
        - direct
      items:
        enum:
          - direct
          - code_execution_20250825
          - code_execution_20260120
        type: string
      type: array
    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:
      description: >-
        Enable automatic prompt caching. When set at the top level, the system
        automatically applies cache breakpoints to the last cacheable block in
        the request. When set on an individual content block, it marks an
        explicit cache breakpoint; block-level markers also work on OpenAI
        models that support explicit prompt caching — OpenRouter converts them
        to the provider's native format.
      example:
        type: ephemeral
      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
      properties:
        ephemeral_1h_input_tokens:
          type: integer
        ephemeral_5m_input_tokens:
          type: integer
      required:
        - ephemeral_5m_input_tokens
        - ephemeral_1h_input_tokens
      type:
        - object
        - 'null'
    AnthropicCaller:
      discriminator:
        mapping:
          code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller'
          code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller'
          direct: '#/components/schemas/AnthropicDirectCaller'
        propertyName: type
      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:
          type:
            - string
            - 'null'
        end_char_index:
          type: integer
        file_id:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        end_block_index:
          type: integer
        file_id:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        end_page_number:
          type: integer
        file_id:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
      default: null
      example:
        enabled: true
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type:
        - object
        - 'null'
    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:
          type:
            - string
            - 'null'
        type:
          enum:
            - search_result_location
          type: string
      required:
        - type
        - cited_text
        - search_result_index
        - source
        - title
        - start_block_index
        - end_block_index
      type: object
    AnthropicCitationSearchResultLocationParam:
      example:
        cited_text: Example cited text
        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:
          type:
            - string
            - 'null'
        type:
          enum:
            - search_result_location
          type: string
      required:
        - type
        - cited_text
        - search_result_index
        - source
        - title
        - start_block_index
        - end_block_index
      type: object
    AnthropicCitationWebSearchResultLocation:
      example:
        cited_text: Example cited text
        encrypted_index: enc_idx_0
        title: Example Page
        type: web_search_result_location
        url: https://example.com
      properties:
        cited_text:
          type: string
        encrypted_index:
          type: string
        title:
          type:
            - string
            - 'null'
        type:
          enum:
            - web_search_result_location
          type: string
        url:
          type: string
      required:
        - type
        - cited_text
        - encrypted_index
        - title
        - url
      type: object
    AnthropicCitationWebSearchResultLocationParam:
      example:
        cited_text: Example cited text
        encrypted_index: enc_idx_0
        title: Example Page
        type: web_search_result_location
        url: https://example.com
      properties:
        cited_text:
          type: string
        encrypted_index:
          type: string
        title:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        encrypted_content:
          type:
            - string
            - 'null'
        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
      properties:
        expires_at:
          type: string
        id:
          type: string
      required:
        - id
        - expires_at
      type:
        - object
        - 'null'
    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:
          type:
            - string
            - 'null'
        type:
          enum:
            - document
          type: string
      required:
        - 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:
          properties:
            enabled:
              type: boolean
          type:
            - object
            - 'null'
        context:
          type:
            - string
            - 'null'
        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'
            - $ref: '#/components/schemas/AnthropicFileDocumentSource'
        title:
          type:
            - string
            - 'null'
        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
    AnthropicFileDocumentSource:
      example:
        file_id: or_file_011CNha8iCJcU1wXNR6q4V8w
        type: file
      properties:
        file_id:
          type: string
        type:
          enum:
            - file
          type: string
      required:
        - type
        - file_id
      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
      properties:
        type:
          enum:
            - input_tokens
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type:
        - object
        - 'null'
    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
      properties:
        ephemeral_1h_input_tokens:
          type: integer
        ephemeral_5m_input_tokens:
          type: integer
      type:
        - object
        - 'null'
    AnthropicMessageUsageIteration:
      allOf:
        - $ref: '#/components/schemas/AnthropicBaseUsageIteration'
        - properties:
            model:
              type: string
            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
    AnthropicOutputTokensDetails:
      example:
        thinking_tokens: 0
      properties:
        thinking_tokens:
          type: integer
      required:
        - thinking_tokens
      type:
        - object
        - 'null'
    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
      properties:
        category:
          enum:
            - cyber
            - bio
            - null
          type:
            - string
            - 'null'
        explanation:
          type:
            - string
            - 'null'
        type:
          enum:
            - refusal
          type: string
      required:
        - type
        - category
        - explanation
      type:
        - object
        - 'null'
    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
    AnthropicServerToolUsage:
      example:
        web_fetch_requests: 0
        web_search_requests: 1
      properties:
        web_fetch_requests:
          type: integer
        web_search_requests:
          type: integer
      required:
        - web_search_requests
        - web_fetch_requests
      type:
        - object
        - 'null'
    AnthropicServiceTier:
      enum:
        - standard
        - priority
        - batch
        - null
      example: standard
      type:
        - string
        - 'null'
    AnthropicSpeed:
      enum:
        - fast
        - standard
        - null
      example: standard
      type:
        - string
        - 'null'
    AnthropicTextBlock:
      example:
        citations: null
        text: Hello, world!
        type: text
      properties:
        citations:
          items:
            $ref: '#/components/schemas/AnthropicTextCitation'
          type:
            - array
            - 'null'
        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/AnthropicCitationSearchResultLocationParam
                web_search_result_location: >-
                  #/components/schemas/AnthropicCitationWebSearchResultLocationParam
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/AnthropicCitationCharLocationParam'
              - $ref: '#/components/schemas/AnthropicCitationPageLocationParam'
              - $ref: >-
                  #/components/schemas/AnthropicCitationContentBlockLocationParam
              - $ref: >-
                  #/components/schemas/AnthropicCitationWebSearchResultLocationParam
              - $ref: >-
                  #/components/schemas/AnthropicCitationSearchResultLocationParam
          type:
            - array
            - 'null'
        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
          type:
            - array
            - 'null'
        new_lines:
          type:
            - integer
            - 'null'
        new_start:
          type:
            - integer
            - 'null'
        old_lines:
          type:
            - integer
            - 'null'
        old_start:
          type:
            - integer
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
          type:
            - integer
            - 'null'
        start_line:
          type:
            - integer
            - 'null'
        total_lines:
          type:
            - integer
            - 'null'
        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
      type:
        - string
        - 'null'
    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:
          type:
            - string
            - 'null'
        type:
          enum:
            - tool_search_tool_result_error
          type: string
      required:
        - error_code
        - error_message
        - type
      type: object
    AnthropicToolSearchToolBm25:
      properties:
        allowed_callers:
          $ref: '#/components/schemas/AnthropicAllowedCallers'
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        defer_loading:
          type: boolean
        name:
          enum:
            - tool_search_tool_bm25
          type: string
        strict:
          type: boolean
        type:
          enum:
            - tool_search_tool_bm25_20251119
            - tool_search_tool_bm25
          type: string
      required:
        - type
        - name
      type: object
    AnthropicToolSearchToolRegex:
      properties:
        allowed_callers:
          $ref: '#/components/schemas/AnthropicAllowedCallers'
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        defer_loading:
          type: boolean
        name:
          enum:
            - tool_search_tool_regex
          type: string
        strict:
          type: boolean
        type:
          enum:
            - tool_search_tool_regex_20251119
            - tool_search_tool_regex
          type: string
      required:
        - type
        - name
      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: {}
        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
        output_tokens_details: null
        server_tool_use: null
        service_tier: standard
      properties:
        cache_creation:
          $ref: '#/components/schemas/AnthropicCacheCreation'
        cache_creation_input_tokens:
          type:
            - integer
            - 'null'
        cache_read_input_tokens:
          type:
            - integer
            - 'null'
        inference_geo:
          type:
            - string
            - 'null'
        input_tokens:
          type: integer
        output_tokens:
          type: integer
        output_tokens_details:
          $ref: '#/components/schemas/AnthropicOutputTokensDetails'
        server_tool_use:
          $ref: '#/components/schemas/AnthropicServerToolUsage'
        service_tier:
          $ref: '#/components/schemas/AnthropicServiceTier'
      required:
        - input_tokens
        - output_tokens
        - output_tokens_details
        - cache_creation_input_tokens
        - cache_read_input_tokens
        - cache_creation
        - inference_geo
        - server_tool_use
        - service_tier
      type: object
    AnthropicUsageIteration:
      anyOf:
        - $ref: '#/components/schemas/AnthropicCompactionUsageIteration'
        - $ref: '#/components/schemas/AnthropicMessageUsageIteration'
        - $ref: '#/components/schemas/AnthropicAdvisorMessageUsageIteration'
        - $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:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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
      properties:
        city:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
        region:
          type:
            - string
            - 'null'
        timezone:
          type:
            - string
            - 'null'
        type:
          enum:
            - approximate
          type: string
      required:
        - type
      type:
        - object
        - 'null'
    ApiErrorType:
      description: Canonical OpenRouter error type, stable across all API formats
      enum:
        - context_length_exceeded
        - max_tokens_exceeded
        - token_limit_exceeded
        - string_too_long
        - authentication
        - permission_denied
        - payment_required
        - rate_limit_exceeded
        - provider_overloaded
        - provider_unavailable
        - invalid_request
        - invalid_prompt
        - not_found
        - precondition_failed
        - payload_too_large
        - unprocessable
        - content_policy_violation
        - refusal
        - invalid_image
        - image_too_large
        - image_too_small
        - unsupported_image_format
        - image_not_found
        - image_download_failed
        - server
        - timeout
        - unmapped
      example: rate_limit_exceeded
      type: string
    ApplyPatchCallItem:
      description: >-
        A tool call emitted by the model requesting a V4A patch operation. The
        client applies the patch and echoes an `apply_patch_call_output` on the
        next turn.
      example:
        call_id: call_abc123
        id: apc_abc123
        operation:
          diff: |-
            @@ function main() {
            +  console.log("hi");
             }
          path: /src/main.ts
          type: update_file
        status: completed
        type: apply_patch_call
      properties:
        call_id:
          type: string
        id:
          type:
            - string
            - 'null'
        operation:
          $ref: '#/components/schemas/ApplyPatchCallOperation'
        status:
          $ref: '#/components/schemas/ApplyPatchCallStatus'
        type:
          enum:
            - apply_patch_call
          type: string
      required:
        - type
        - call_id
        - status
        - operation
      type: object
    ApplyPatchCallOperation:
      description: >-
        The patch operation requested by an `apply_patch_call`. `create_file`
        and `update_file` carry a V4A diff; `delete_file` omits it.
      discriminator:
        mapping:
          create_file: '#/components/schemas/ApplyPatchCreateFileOperation'
          delete_file: '#/components/schemas/ApplyPatchDeleteFileOperation'
          update_file: '#/components/schemas/ApplyPatchUpdateFileOperation'
        propertyName: type
      example:
        diff: |-
          @@ function main() {
          +  console.log("hi");
           }
        path: /src/main.ts
        type: update_file
      oneOf:
        - $ref: '#/components/schemas/ApplyPatchCreateFileOperation'
        - $ref: '#/components/schemas/ApplyPatchUpdateFileOperation'
        - $ref: '#/components/schemas/ApplyPatchDeleteFileOperation'
    ApplyPatchCallOperationDiffDeltaEvent:
      description: >-
        Incremental chunk of `operation.diff` for an `apply_patch_call`. Matches
        OpenAI's streaming shape.
      example:
        delta: |
          +console.log("hi");
        item_id: apc_abc123
        output_index: 0
        sequence_number: 5
        type: response.apply_patch_call_operation_diff.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.apply_patch_call_operation_diff.delta
          type: string
      required:
        - type
        - item_id
        - output_index
        - delta
        - sequence_number
      type: object
    ApplyPatchCallOperationDiffDoneEvent:
      description: >-
        Emitted when `operation.diff` streaming completes for an
        `apply_patch_call`.
      example:
        diff: |
          @@
          +console.log("hi");
        item_id: apc_abc123
        output_index: 0
        sequence_number: 12
        type: response.apply_patch_call_operation_diff.done
      properties:
        diff:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.apply_patch_call_operation_diff.done
          type: string
      required:
        - type
        - item_id
        - output_index
        - diff
        - sequence_number
      type: object
    ApplyPatchCallOutputItem:
      description: >-
        The client's echo of an `apply_patch_call` after applying the patch.
        `output` is an optional human-readable log; `status` is `completed` when
        the patch was applied successfully, `failed` otherwise.
      example:
        call_id: call_abc123
        output: Applied patch to /src/main.ts
        status: completed
        type: apply_patch_call_output
      properties:
        call_id:
          type: string
        id:
          type:
            - string
            - 'null'
        output:
          type:
            - string
            - 'null'
        status:
          enum:
            - completed
            - failed
          type: string
        type:
          enum:
            - apply_patch_call_output
          type: string
      required:
        - type
        - call_id
        - status
      type: object
    ApplyPatchCallStatus:
      description: Lifecycle state of an `apply_patch_call` output item.
      enum:
        - in_progress
        - completed
      example: completed
      type: string
    ApplyPatchCreateFileOperation:
      description: >-
        The `create_file` variant of an `apply_patch_call.operation`. Carries a
        V4A diff describing the new file contents.
      example:
        diff: |
          @@
          +console.log("hi");
        path: /src/main.ts
        type: create_file
      properties:
        diff:
          type: string
        path:
          type: string
        type:
          enum:
            - create_file
          type: string
      required:
        - type
        - path
        - diff
      type: object
    ApplyPatchDeleteFileOperation:
      description: >-
        The `delete_file` variant of an `apply_patch_call.operation`. Identifies
        the file to remove; no diff is required.
      example:
        path: /src/main.ts
        type: delete_file
      properties:
        path:
          type: string
        type:
          enum:
            - delete_file
          type: string
      required:
        - type
        - path
      type: object
    ApplyPatchEngineEnum:
      description: >-
        Which apply_patch engine to use. "auto" (default) uses native
        passthrough when the endpoint advertises native apply_patch support,
        otherwise falls back to OpenRouter's HITL validator. "native" forces
        native passthrough — when the endpoint does not support native, the
        request falls back to HITL. "openrouter" always runs the HITL validator.
        Native passthrough streams the diff incrementally via
        `apply_patch_call_operation_diff.delta` events; HITL buffers the diff
        for atomic delivery as a single delta.
      enum:
        - auto
        - native
        - openrouter
      example: auto
      type: string
    ApplyPatchServerTool:
      description: Apply patch tool configuration
      example:
        type: apply_patch
      properties:
        type:
          enum:
            - apply_patch
          type: string
      required:
        - type
      type: object
    ApplyPatchServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: validates V4A diff patches for file
        operations (create, update, delete). Restricted to the Responses API.
      example:
        type: openrouter:apply_patch
      properties:
        parameters:
          $ref: '#/components/schemas/ApplyPatchServerToolConfig'
        type:
          enum:
            - openrouter:apply_patch
          type: string
      required:
        - type
      type: object
    ApplyPatchServerToolConfig:
      description: Configuration for the openrouter:apply_patch server tool
      example:
        engine: auto
      properties:
        engine:
          $ref: '#/components/schemas/ApplyPatchEngineEnum'
      type: object
    ApplyPatchUpdateFileOperation:
      description: >-
        The `update_file` variant of an `apply_patch_call.operation`. Carries a
        V4A diff describing edits to an existing file.
      example:
        diff: |-
          @@ function main() {
          +  console.log("hi");
           }
        path: /src/main.ts
        type: update_file
      properties:
        diff:
          type: string
        path:
          type: string
        type:
          enum:
            - update_file
          type: string
      required:
        - type
        - path
        - diff
      type: object
    AppRankingsItem:
      example:
        app_id: 12345
        app_name: Cline
        rank: 1
        total_requests: 4321
        total_tokens: '12345678'
      properties:
        app_id:
          description: Stable numeric identifier of the app on OpenRouter.
          example: 12345
          type: integer
        app_name:
          description: Public display name of the app.
          example: Cline
          type: string
        rank:
          description: >-
            1-based position of the app within this response, per the requested
            `sort`.
          example: 1
          type: integer
        total_requests:
          description: Number of requests attributed to the app inside the date window.
          example: 4321
          type: integer
        total_tokens:
          description: >-
            Sum of `prompt_tokens + completion_tokens` attributed to the app
            inside the date window, returned as a decimal string so 64-bit
            values are not truncated.
          example: '12345678'
          type: string
      required:
        - rank
        - app_id
        - app_name
        - total_tokens
        - total_requests
      type: object
    AppRankingsResponse:
      example:
        data:
          - app_id: 12345
            app_name: Cline
            rank: 1
            total_requests: 4321
            total_tokens: '12345678'
          - app_id: 67890
            app_name: Roo Code
            rank: 2
            total_requests: 2109
            total_tokens: '9876543'
        meta:
          as_of: '2026-05-12T02:00:00Z'
          end_date: '2026-05-11'
          start_date: '2026-04-12'
          version: v1
      properties:
        data:
          description: >-
            Apps ranked per the requested `sort`, re-numbered 1..N after
            category filtering. `popular` sorts by `total_tokens` descending;
            `trending` sorts by absolute excess token growth descending and may
            return fewer than `limit` rows when few apps are growing.
          items:
            $ref: '#/components/schemas/AppRankingsItem'
          type: array
        meta:
          $ref: '#/components/schemas/RankingsDailyMeta'
      required:
        - data
        - meta
      type: object
    AutoBetaRouterPlugin:
      example:
        allowed_models:
          - anthropic/*
          - openai/gpt-4o
        cost_tier: low
        enabled: true
        id: auto-beta-router
      properties:
        allowed_models:
          description: >-
            List of model patterns to filter which models the auto-beta-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
        cost_quality_tradeoff:
          deprecated: true
          description: >-
            Deprecated: Use cost_tier instead. Balances routing between cost and
            quality on a 0-10 scale. The auto-beta-router ranks models for the
            classified task type by community spend share, then filters
            candidates by their average cost per generation for that task.
            Higher values favor cheaper models: 10 keeps only models around the
            cheapest 10th percentile, while 0 permits models up to the 90th
            percentile for cost. Defaults to 9. Numeric cost_quality_tradeoff
            remains supported, retains ceiling behavior, and takes precedence
            over cost_tier when both are provided.
          example: 9
          maximum: 10
          minimum: 0
          type: integer
        cost_tier:
          description: >-
            Named cost/quality setting. For auto-beta-router, tiers select
            cost-percentile bands: low = [0, 20), medium = [20, 40), high = [40,
            60), xhigh = [60, 80), and max = [80, 100]. Numeric
            cost_quality_tradeoff takes precedence and retains ceiling behavior.
          enum:
            - low
            - medium
            - high
            - xhigh
            - max
          example: low
          type: string
        enabled:
          description: >-
            Set to false to disable the auto-beta-router plugin for this
            request. Defaults to true.
          type: boolean
        id:
          enum:
            - auto-beta-router
          type: string
      required:
        - id
      type: object
    AutoRouterPlugin:
      example:
        allowed_models:
          - anthropic/*
          - openai/gpt-4o
        cost_tier: medium
        enabled: true
        id: auto-router
        pin_model: false
      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
        cost_quality_tradeoff:
          deprecated: true
          description: >-
            Deprecated: Use cost_tier instead. Controls cost vs. quality routing
            tradeoff (0–10). 0 = pure quality (best model regardless of cost),
            10 = maximize for cost (cheapest model wins). Intermediate values
            blend quality and cost signals continuously. Defaults to 7. Numeric
            cost_quality_tradeoff remains supported and takes precedence over
            cost_tier when both are provided.
          example: 7
          maximum: 10
          minimum: 0
          type: integer
        cost_tier:
          description: >-
            Shorthand for cost_quality_tradeoff. Higher tiers spend more on
            better models: low = 9, medium = 7, high = 5, xhigh = 3, and max =
            1. Numeric cost_quality_tradeoff takes precedence when both are
            provided.
          enum:
            - low
            - medium
            - high
            - xhigh
            - max
          example: medium
          type: string
        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
        pin_model:
          description: >-
            When true, reuses the model from the most recent assistant message's
            `model` attribute for subsequent turns. Defaults to false.
          example: false
          type: boolean
      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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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
    BaseCustomToolCallInputDeltaEvent:
      description: >-
        Event emitted when a custom tool call's freeform input is being
        streamed. Mirrors `response.function_call_arguments.delta` but for
        `custom` tools whose input is opaque text rather than JSON arguments.
      example:
        delta: '*** Begin Patch'
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.custom_tool_call_input.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.custom_tool_call_input.delta
          type: string
      required:
        - type
        - item_id
        - output_index
        - delta
        - sequence_number
      type: object
    BaseCustomToolCallInputDoneEvent:
      description: >-
        Event emitted when a custom tool call's freeform input streaming is
        complete. Mirrors `response.function_call_arguments.done` but for
        `custom` tools.
      example:
        input: |-
          *** Begin Patch
          *** End Patch
        item_id: item-1
        output_index: 0
        sequence_number: 6
        type: response.custom_tool_call_input.done
      properties:
        input:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.custom_tool_call_input.done
          type: string
      required:
        - type
        - item_id
        - output_index
        - input
        - 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:
          type:
            - string
            - 'null'
        message:
          type: string
        param:
          type:
            - string
            - 'null'
        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
                      - type: 'null'
                  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'
              - $ref: '#/components/schemas/OpenAIResponseCustomToolCall'
              - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput'
              - $ref: '#/components/schemas/ApplyPatchCallItem'
              - $ref: '#/components/schemas/ApplyPatchCallOutputItem'
          type: array
        - type: 'null'
      example:
        - content: What is the weather today?
          role: user
    BaseMessagesResult:
      description: Base Anthropic Messages API response before OpenRouter extensions
      example:
        container: null
        content:
          - citations: []
            text: Hello!
            type: text
        id: msg_01XFDUDYJgAACzvnptvVoYEL
        model: claude-sonnet-4-5-20250929
        role: assistant
        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: 8
          output_tokens_details: null
          server_tool_use: null
          service_tier: standard
      properties:
        container:
          $ref: '#/components/schemas/AnthropicContainer'
        content:
          items:
            $ref: '#/components/schemas/ORAnthropicContentBlock'
          type: array
        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:
          type:
            - string
            - 'null'
        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
            output_tokens_details: null
            server_tool_use: null
            service_tier: standard
      required:
        - id
        - type
        - role
        - container
        - content
        - model
        - stop_reason
        - stop_details
        - stop_sequence
        - usage
      type: object
    BaseReasoningConfig:
      example:
        effort: medium
        summary: auto
      properties:
        context:
          $ref: '#/components/schemas/ReasoningContext'
        effort:
          $ref: '#/components/schemas/ReasoningEffort'
        mode:
          $ref: '#/components/schemas/ReasoningMode'
        summary:
          $ref: '#/components/schemas/ReasoningSummaryVerbosity'
      type:
        - object
        - 'null'
    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
        frequency_penalty: 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
        presence_penalty: null
        status: completed
        temperature: null
        tool_choice: auto
        tools: []
        top_p: null
      properties:
        background:
          type:
            - boolean
            - 'null'
        completed_at:
          type:
            - integer
            - 'null'
        created_at:
          type: integer
        error:
          $ref: '#/components/schemas/ResponsesErrorField'
        frequency_penalty:
          format: double
          type:
            - number
            - 'null'
        id:
          type: string
        incomplete_details:
          $ref: '#/components/schemas/IncompleteDetails'
        instructions:
          $ref: '#/components/schemas/BaseInputs'
        max_output_tokens:
          type:
            - integer
            - 'null'
        max_tool_calls:
          type:
            - integer
            - 'null'
        metadata:
          $ref: '#/components/schemas/RequestMetadata'
        model:
          type: string
        object:
          enum:
            - response
          type: string
        output:
          items:
            discriminator:
              mapping:
                apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall'
                custom_tool_call: '#/components/schemas/OutputItemCustomToolCall'
                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/OutputItemCustomToolCall'
              - $ref: '#/components/schemas/OutputItemWebSearchCall'
              - $ref: '#/components/schemas/OutputItemFileSearchCall'
              - $ref: '#/components/schemas/OutputItemImageGenerationCall'
              - $ref: '#/components/schemas/OutputItemApplyPatchCall'
          type: array
        output_text:
          type: string
        parallel_tool_calls:
          type: boolean
        presence_penalty:
          format: double
          type:
            - number
            - 'null'
        previous_response_id:
          type:
            - string
            - 'null'
        prompt:
          $ref: '#/components/schemas/StoredPromptTemplate'
        prompt_cache_key:
          type:
            - string
            - 'null'
        prompt_cache_options:
          $ref: '#/components/schemas/PromptCacheOptions'
        reasoning:
          $ref: '#/components/schemas/BaseReasoningConfig'
        safety_identifier:
          type:
            - string
            - 'null'
        service_tier:
          $ref: '#/components/schemas/ServiceTier'
        status:
          $ref: '#/components/schemas/OpenAIResponsesResponseStatus'
        store:
          type: boolean
        temperature:
          format: double
          type:
            - number
            - 'null'
        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'
              - $ref: '#/components/schemas/NamespaceTool'
          type: array
        top_logprobs:
          type: integer
        top_p:
          format: double
          type:
            - number
            - 'null'
        truncation:
          $ref: '#/components/schemas/Truncation'
        usage:
          $ref: '#/components/schemas/OpenAIResponsesUsage'
        user:
          type:
            - string
            - 'null'
      required:
        - id
        - object
        - created_at
        - model
        - status
        - completed_at
        - output
        - error
        - incomplete_details
        - temperature
        - top_p
        - presence_penalty
        - frequency_penalty
        - instructions
        - metadata
        - tools
        - tool_choice
        - parallel_tool_calls
      type: object
    BaseTextDeltaEvent:
      description: Event emitted when a text delta is streamed
      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
    BashServerTool:
      description: >-
        OpenRouter built-in server tool: runs shell commands server-side in a
        sandboxed container
      example:
        parameters:
          environment:
            type: container_auto
        type: openrouter:bash
      properties:
        parameters:
          $ref: '#/components/schemas/BashServerToolConfig'
        type:
          enum:
            - openrouter:bash
          type: string
      required:
        - type
      type: object
    BashServerToolConfig:
      description: Configuration for the openrouter:bash server tool
      example:
        environment:
          type: container_auto
      properties:
        engine:
          $ref: '#/components/schemas/BashServerToolEngine'
        environment:
          $ref: '#/components/schemas/BashServerToolEnvironment'
        sleep_after_seconds:
          $ref: '#/components/schemas/SandboxSleepAfterSeconds'
      type: object
    BashServerToolEngine:
      description: >-
        Which bash engine to use. "openrouter" runs commands server-side in the
        OpenRouter sandbox. "auto" (default) and "native" use native
        passthrough, returning the tool call to your application to run
        client-side; OpenRouter does not execute the commands.
      enum:
        - auto
        - native
        - openrouter
      example: auto
      type: string
    BashServerToolEnvironment:
      description: Execution environment for the bash server tool.
      discriminator:
        mapping:
          container_auto: '#/components/schemas/ContainerAutoEnvironment'
          container_reference: '#/components/schemas/ContainerReferenceEnvironment'
        propertyName: type
      example:
        type: container_auto
      oneOf:
        - $ref: '#/components/schemas/ContainerAutoEnvironment'
        - $ref: '#/components/schemas/ContainerReferenceEnvironment'
    BooleanCapability:
      description: A supported-or-not flag. Present means the parameter is accepted.
      example:
        type: boolean
      properties:
        type:
          enum:
            - boolean
          type: string
      required:
        - type
      type: object
    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
    BYOKKey:
      example:
        allowed_api_key_hashes: null
        allowed_models: null
        allowed_user_ids: null
        created_at: '2025-08-24T10:30:00Z'
        disabled: false
        id: 11111111-2222-3333-4444-555555555555
        is_fallback: false
        label: sk-...AbCd
        name: Production OpenAI Key
        provider: openai
        sort_order: 0
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        allowed_api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            that may use this credential. `null` means no restriction.
          example:
            - f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        allowed_models:
          description: >-
            Optional allowlist of model slugs this credential may be used for.
            `null` means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        allowed_user_ids:
          description: >-
            Optional allowlist of user IDs that may use this credential. `null`
            means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        created_at:
          description: ISO timestamp of when the credential was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        disabled:
          description: Whether this credential is currently disabled.
          example: false
          type: boolean
        id:
          description: Stable public identifier for this BYOK credential.
          example: 11111111-2222-3333-4444-555555555555
          format: uuid
          type: string
        is_fallback:
          description: >-
            Whether this credential is treated as a fallback — used only after
            non-fallback keys for the same provider have been tried.
          example: false
          type: boolean
        label:
          description: >-
            Short masked snippet of the key (e.g. the first/last few characters)
            used to identify it in the UI.
          example: sk-...AbCd
          type: string
        name:
          description: Optional human-readable name for the credential.
          example: Production OpenAI Key
          type:
            - string
            - 'null'
        provider:
          $ref: '#/components/schemas/BYOKProviderSlug'
        sort_order:
          description: >-
            Position within the provider — credentials are tried in ascending
            sort order.
          example: 0
          type: integer
        workspace_id:
          description: ID of the workspace this credential belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - provider
        - workspace_id
        - label
        - disabled
        - is_fallback
        - allowed_models
        - allowed_api_key_hashes
        - allowed_user_ids
        - sort_order
        - created_at
      type: object
    BYOKProviderSlug:
      description: >-
        The upstream provider this credential authenticates against, as a
        lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`).
      enum:
        - ai21
        - aion-labs
        - akashml
        - alibaba
        - amazon-bedrock
        - amazon-nova
        - ambient
        - anthropic
        - arcee-ai
        - atlas-cloud
        - avian
        - azure
        - baidu
        - baseten
        - black-forest-labs
        - byteplus
        - cerebras
        - chutes
        - cirrascale
        - clarifai
        - cloudflare
        - cohere
        - coreweave
        - crusoe
        - darkbloom
        - decart
        - deepgram
        - deepinfra
        - deepseek
        - dekallm
        - digitalocean
        - featherless
        - fireworks
        - fish-audio
        - friendli
        - gmicloud
        - google-ai-studio
        - google-vertex
        - groq
        - heygen
        - inception
        - inceptron
        - inferact-vllm
        - inference-net
        - infermatic
        - inflection
        - io-net
        - ionstream
        - krea
        - liquid
        - mancer
        - mara
        - meta
        - minimax
        - mistral
        - modal
        - modelrun
        - modular
        - moonshotai
        - morph
        - ncompass
        - nebius
        - nex-agi
        - nextbit
        - novita
        - nvidia
        - open-inference
        - openai
        - parasail
        - perceptron
        - perplexity
        - phala
        - poolside
        - quiver
        - recraft
        - reka
        - relace
        - runway
        - sail-research
        - sakana
        - sakana-ai
        - sambanova
        - seed
        - siliconflow
        - sourceful
        - stepfun
        - streamlake
        - switchpoint
        - tencent
        - tenstorrent
        - together
        - upstage
        - venice
        - wafer
        - wandb
        - wandb-legacy
        - xai
        - xiaomi
        - z-ai
      example: openai
      type: string
    CapabilityDescriptor:
      description: A typed descriptor for one supported request parameter.
      discriminator:
        mapping:
          boolean: '#/components/schemas/BooleanCapability'
          enum: '#/components/schemas/EnumCapability'
          range: '#/components/schemas/RangeCapability'
        propertyName: type
      example:
        type: enum
        values:
          - 1K
          - 2K
          - 4K
      oneOf:
        - $ref: '#/components/schemas/EnumCapability'
        - $ref: '#/components/schemas/RangeCapability'
        - $ref: '#/components/schemas/BooleanCapability'
    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.
        model: openai/gpt-4o
        role: assistant
      properties:
        audio:
          $ref: '#/components/schemas/ChatAudioOutput'
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/ChatContentItems'
              type: array
            - type: 'null'
          description: Assistant message content
        images:
          $ref: '#/components/schemas/ChatAssistantImages'
        model:
          description: Model that generated this assistant message
          example: openai/gpt-4o
          type: string
        name:
          description: Optional name for the assistant
          type: string
        reasoning:
          description: Reasoning output
          type:
            - string
            - 'null'
        reasoning_details:
          $ref: '#/components/schemas/ChatReasoningDetails'
        refusal:
          description: Refusal message if content was refused
          type:
            - string
            - 'null'
        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: >-
        Anthropic-style cache breakpoint for the content part. Interchangeable
        with the OpenAI-style `prompt_cache_breakpoint` marker: OpenRouter
        converts between the two based on the provider serving the request.
      example:
        ttl: 5m
        type: ephemeral
    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. `original` is an
                OpenRouter extension (not in the OpenAI Chat Completions spec)
                requesting true original-resolution media; it is downgraded to
                `high` for providers that lack an original-resolution tier.
              enum:
                - auto
                - low
                - high
                - original
              type: string
            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'
        prompt_cache_breakpoint:
          $ref: '#/components/schemas/PromptCacheBreakpoint'
        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
      type:
        - string
        - 'null'
    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
    ChatFormatJsonObjectConfig:
      description: JSON object response format
      example:
        type: json_object
      properties:
        type:
          enum:
            - json_object
          type: string
      required:
        - type
      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: {}
                  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
                  type:
                    - boolean
                    - 'null'
              required:
                - name
              type: object
            type:
              enum:
                - function
              type: string
          required:
            - type
            - function
          type: object
        - $ref: '#/components/schemas/AdvisorServerTool_OpenRouter'
        - $ref: '#/components/schemas/BashServerTool'
        - $ref: '#/components/schemas/DatetimeServerTool'
        - $ref: '#/components/schemas/FilesServerTool'
        - $ref: '#/components/schemas/FusionServerTool_OpenRouter'
        - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
        - $ref: '#/components/schemas/ChatSearchModelsServerTool'
        - $ref: '#/components/schemas/SubagentServerTool_OpenRouter'
        - $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: {}
          description: JSON Schema object
          example:
            properties:
              answer:
                type: number
            required:
              - answer
            type: object
          type: object
        strict:
          description: Enable strict schema adherence
          example: false
          type:
            - boolean
            - 'null'
      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:
        - text: Let me work through this step by step...
          type: reasoning.text
      items:
        $ref: '#/components/schemas/ReasoningDetailUnion'
      type: array
    ChatReasoningSummaryVerbosityEnum:
      enum:
        - auto
        - concise
        - detailed
        - null
      example: concise
      type:
        - string
        - 'null'
    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:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        debug:
          $ref: '#/components/schemas/ChatDebugOptions'
        frequency_penalty:
          description: Frequency penalty (-2.0 to 2.0)
          example: 0
          format: double
          type:
            - number
            - 'null'
        image_config:
          $ref: '#/components/schemas/ImageConfig'
        logit_bias:
          additionalProperties:
            format: double
            type: number
          description: Token logit bias adjustments
          example:
            '50256': -100
          type:
            - object
            - 'null'
        logprobs:
          description: Return log probabilities
          example: false
          type:
            - boolean
            - 'null'
        max_completion_tokens:
          description: Maximum tokens in completion
          example: 100
          type:
            - integer
            - 'null'
        max_tokens:
          description: >-
            Maximum tokens (deprecated, use max_completion_tokens). Note: some
            providers enforce a minimum of 16.
          example: 100
          type:
            - integer
            - 'null'
        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
        min_p:
          description: >-
            Minimum probability threshold relative to the most likely token.
            Tokens with probability below min_p * (probability of top token) are
            filtered out. Not all providers support this parameter.
          example: 0.1
          format: double
          type:
            - number
            - 'null'
        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
          type:
            - boolean
            - 'null'
        plugins:
          description: >-
            Plugins you want to enable for this request, including their
            settings.
          items:
            discriminator:
              mapping:
                auto-beta-router: '#/components/schemas/AutoBetaRouterPlugin'
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                fusion: '#/components/schemas/FusionPlugin'
                moderation: '#/components/schemas/ModerationPlugin'
                pareto-router: '#/components/schemas/ParetoRouterPlugin'
                response-healing: '#/components/schemas/ResponseHealingPlugin'
                web: '#/components/schemas/WebSearchPlugin'
                web-fetch: '#/components/schemas/WebFetchPlugin'
              propertyName: id
            oneOf:
              - $ref: '#/components/schemas/AutoRouterPlugin'
              - $ref: '#/components/schemas/AutoBetaRouterPlugin'
              - $ref: '#/components/schemas/ModerationPlugin'
              - $ref: '#/components/schemas/WebSearchPlugin'
              - $ref: '#/components/schemas/WebFetchPlugin'
              - $ref: '#/components/schemas/FileParserPlugin'
              - $ref: '#/components/schemas/ResponseHealingPlugin'
              - $ref: '#/components/schemas/ContextCompressionPlugin'
              - $ref: '#/components/schemas/ParetoRouterPlugin'
              - $ref: '#/components/schemas/FusionPlugin'
          type: array
        prediction:
          $ref: '#/components/schemas/Prediction'
        presence_penalty:
          description: Presence penalty (-2.0 to 2.0)
          example: 0
          format: double
          type:
            - number
            - 'null'
        prompt_cache_key:
          type:
            - string
            - 'null'
        prompt_cache_options:
          $ref: '#/components/schemas/PromptCacheOptions'
        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:
                - max
                - xhigh
                - high
                - medium
                - low
                - minimal
                - none
                - null
              example: medium
              type:
                - string
                - 'null'
            summary:
              $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum'
          type: object
        reasoning_effort:
          description: >-
            Shorthand for setting reasoning effort. Equivalent to setting
            reasoning.effort. Cannot be used simultaneously with
            reasoning.effort if they differ.
          enum:
            - max
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
            - null
          example: medium
          type:
            - string
            - 'null'
        repetition_penalty:
          description: >-
            Penalizes tokens based on how much they have already appeared in the
            text. A value of 1.0 means no penalty. Values above 1.0 penalize
            repeated tokens more strongly. Not all providers support this
            parameter.
          example: 1
          format: double
          type:
            - number
            - 'null'
        response_format:
          description: Response format configuration
          discriminator:
            mapping:
              grammar: '#/components/schemas/ChatFormatGrammarConfig'
              json_object: '#/components/schemas/ChatFormatJsonObjectConfig'
              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/ChatFormatJsonObjectConfig'
            - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig'
            - $ref: '#/components/schemas/ChatFormatGrammarConfig'
            - $ref: '#/components/schemas/ChatFormatPythonConfig'
        route:
          $ref: '#/components/schemas/DeprecatedRoute'
        seed:
          description: Random seed for deterministic outputs
          example: 42
          type:
            - integer
            - 'null'
        service_tier:
          description: The service tier to use for processing this request.
          enum:
            - auto
            - default
            - flex
            - priority
            - scale
            - null
          example: auto
          type:
            - string
            - 'null'
        session_id:
          description: >-
            A unique identifier for grouping related requests (e.g., a
            conversation or agent workflow). When provided, OpenRouter uses it
            as the sticky routing key, routing all requests in the session to
            the same provider to maximize prompt cache hits. Also used for
            observability grouping. If provided in both the request body and the
            x-session-id header, the body value takes precedence. Maximum of 256
            characters.
          maxLength: 256
          type: string
        stop:
          anyOf:
            - type: string
            - items:
                type: string
              maxItems: 4
              type: array
            - type: 'null'
          description: Stop sequences (up to 4)
          example:
            - |+

        stop_server_tools_when:
          $ref: '#/components/schemas/StopServerToolsWhen'
        stream:
          default: false
          description: Enable streaming response
          example: false
          type: boolean
        stream_options:
          $ref: '#/components/schemas/ChatStreamOptions'
        temperature:
          description: Sampling temperature (0-2)
          example: 0.7
          format: double
          type:
            - number
            - 'null'
        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_a:
          description: >-
            Consider only tokens with "sufficiently high" probabilities based on
            the probability of the most likely token. Not all providers support
            this parameter.
          example: 0
          format: double
          type:
            - number
            - 'null'
        top_k:
          description: >-
            Limits the model to choose from the top K most likely tokens at each
            step. A value of 1 means the model will always pick the most likely
            next token. Not all providers support this parameter.
          example: 40
          type:
            - integer
            - 'null'
        top_logprobs:
          description: Number of top log probabilities to return (0-20)
          example: 5
          type:
            - integer
            - 'null'
        top_p:
          description: Nucleus sampling parameter (0-1)
          example: 1
          format: double
          type:
            - number
            - 'null'
        trace:
          $ref: '#/components/schemas/TraceConfig'
        user:
          description: >-
            Per-end-user identifier for abuse isolation. Use a stable ID, hash,
            or pseudonym. When a provider requires a user identity, OpenRouter
            folds it into the hashed identity sent upstream and never forwards
            it raw. If omitted, requests use an account-level identity, so
            provider policy blocks can affect the whole account.
          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
        system_fingerprint: fp_44709d6fcb
        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
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        service_tier:
          description: The service tier used by the upstream provider for this request
          example: default
          type:
            - string
            - 'null'
        system_fingerprint:
          description: System fingerprint
          example: fp_44709d6fcb
          type:
            - string
            - 'null'
        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
    ChatServerToolChoice:
      description: >-
        OpenRouter extension: force a specific server tool by naming it directly
        in `tool_choice.type` instead of wrapping it in `{ type: "function",
        function: { name } }`.
      example:
        type: openrouter:web_search
      properties:
        type:
          description: >-
            OpenRouter server-tool type to force (e.g. `openrouter:web_search`,
            `web_search`, `web_search_preview`).
          example: openrouter:web_search
          type: string
      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
            metadata:
              error_type: rate_limit_exceeded
          properties:
            code:
              description: Error code
              example: 429
              format: int32
              type: integer
            message:
              description: Error message
              example: Rate limit exceeded
              type: string
            metadata:
              description: Structured error metadata
              properties:
                error_type:
                  $ref: '#/components/schemas/ApiErrorType'
                provider_code:
                  description: Upstream provider-specific error code, when available
                  type: string
              required:
                - error_type
              type: object
          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
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        service_tier:
          description: The service tier used by the upstream provider for this request
          example: default
          type:
            - string
            - 'null'
        system_fingerprint:
          description: System fingerprint
          example: fp_44709d6fcb
          type: string
        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
          type:
            - string
            - 'null'
        reasoning:
          description: Reasoning content delta
          example: I need to
          type:
            - string
            - 'null'
        reasoning_details:
          $ref: '#/components/schemas/ChatStreamReasoningDetails'
        refusal:
          description: Refusal message delta
          example: null
          type:
            - string
            - 'null'
        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
    ChatStreamingResponse:
      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
      properties:
        data:
          $ref: '#/components/schemas/ChatStreamChunk'
      required:
        - data
      type: object
    ChatStreamOptions:
      description: Streaming configuration options
      example:
        include_usage: 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
        - 'null'
    ChatStreamReasoningDetails:
      description: Reasoning details for extended thinking models
      example:
        - text: Let me think about this...
          type: reasoning.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
          type:
            - array
            - 'null'
        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
                type:
                  - array
                  - 'null'
              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
      properties:
        content:
          description: Log probabilities for content tokens
          items:
            $ref: '#/components/schemas/ChatTokenLogprob'
          type:
            - array
            - 'null'
        refusal:
          description: Log probabilities for refusal tokens
          items:
            $ref: '#/components/schemas/ChatTokenLogprob'
          type:
            - array
            - 'null'
      required:
        - content
      type:
        - object
        - 'null'
    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'
        - $ref: '#/components/schemas/ChatServerToolChoice'
      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
        server_tool_use_details:
          tool_calls_executed: 2
          tool_calls_requested: 2
        total_tokens: 25
      properties:
        completion_tokens:
          description: Number of tokens in the completion
          type: integer
        completion_tokens_details:
          description: Detailed completion token usage
          properties:
            accepted_prediction_tokens:
              description: Accepted prediction tokens
              type:
                - integer
                - 'null'
            audio_tokens:
              description: Tokens used for audio output
              type:
                - integer
                - 'null'
            reasoning_tokens:
              description: Tokens used for reasoning
              type:
                - integer
                - 'null'
            rejected_prediction_tokens:
              description: Rejected prediction tokens
              type:
                - integer
                - 'null'
          type:
            - object
            - 'null'
        cost:
          description: Cost of the completion
          format: double
          type:
            - number
            - 'null'
        cost_details:
          $ref: '#/components/schemas/CostDetails'
        is_byok:
          description: Whether a request was made using a Bring Your Own Key configuration
          type: boolean
        prompt_tokens:
          description: Number of tokens in the prompt
          type: integer
        prompt_tokens_details:
          description: Detailed prompt token usage
          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
            - 'null'
        server_tool_use_details:
          $ref: '#/components/schemas/ServerToolUseDetails'
        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, Firecrawl,
            Parallel, Perplexity, and most native providers (Anthropic, OpenAI,
            xAI). Cannot be used with excluded_domains.
          items:
            type: string
          type: array
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        excluded_domains:
          description: >-
            Exclude search results from these domains. Supported by Exa,
            Firecrawl, Parallel, Perplexity, Anthropic, OpenAI, and xAI. Cannot
            be used with allowed_domains.
          items:
            type: string
          type: array
        max_characters:
          description: >-
            Exact maximum number of characters of content per search result.
            Applies to the Exa, Parallel, and Perplexity engines; ignored with
            native provider search and Firecrawl. For Exa, caps highlight
            content per result. For Parallel, caps excerpt content per result
            (default 1,500 when omitted). For Perplexity, maps to the native
            `max_tokens_per_page` parameter (converted from characters to
            tokens) and trims the response to the exact character cap. When both
            `max_characters` and `search_context_size` are set, `max_characters`
            takes precedence. When omitted, falls back to `search_context_size`
            mapping (Exa) or engine defaults (Parallel, Perplexity).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults
            to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          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. Defaults to 50 when not specified.
          example: 50
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          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:
          type:
            - string
            - 'null'
        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
          type:
            - array
            - 'null'
        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
                  type:
                    - string
                    - 'null'
                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
    CompactionItem:
      additionalProperties: {}
      description: A context compaction marker with encrypted summary
      example:
        encrypted_content: enc_abc123...
        type: compaction
      properties:
        encrypted_content:
          type: string
        id:
          type:
            - string
            - 'null'
        type:
          enum:
            - compaction
          type: string
      required:
        - type
        - encrypted_content
      type: object
    CompletedEvent:
      description: Event emitted when a response has completed successfully
      example:
        response:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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: {}
            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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    ContainerAutoEnvironment:
      description: An OpenRouter-managed, auto-provisioned ephemeral container.
      example:
        type: container_auto
      properties:
        type:
          enum:
            - container_auto
          type: string
      required:
        - type
      type: object
    ContainerReferenceEnvironment:
      description: Reference to a previously created container to reuse.
      example:
        container_id: cntr_abc123
        type: container_reference
      properties:
        container_id:
          description: Identifier of an existing container to reuse (max 20 characters).
          example: cntr_abc123
          maxLength: 20
          minLength: 1
          pattern: ^[\w-]+$
          type: string
        type:
          enum:
            - container_reference
          type: string
      required:
        - type
        - container_id
      type: object
    ContentFilterAction:
      description: Action taken when the pattern matches
      enum:
        - redact
        - block
        - flag
      example: block
      type: string
    ContentFilterBuiltinAction:
      description: Action taken when the builtin filter triggers
      enum:
        - redact
        - block
        - flag
      example: block
      type: string
    ContentFilterBuiltinEntry:
      description: >-
        A builtin content filter entry. Builtin filters include PII detectors
        and the regex-based prompt injection detector.
      example:
        action: redact
        label: '[EMAIL]'
        slug: email
      properties:
        action:
          $ref: '#/components/schemas/ContentFilterBuiltinAction'
        label:
          description: >-
            Read-only, system-assigned redaction placeholder derived from the
            slug (e.g. "[EMAIL]", "[PHONE]"). Not settable by the caller.
          example: '[EMAIL]'
          maxLength: 100
          type: string
        scan_scope:
          $ref: '#/components/schemas/PromptInjectionScanScope'
        slug:
          $ref: '#/components/schemas/ContentFilterBuiltinSlug'
      required:
        - slug
        - action
      type: object
    ContentFilterBuiltinEntryInput:
      description: >-
        A builtin content filter entry for create/update requests. Labels are
        system-assigned and cannot be set by the caller.
      example:
        action: redact
        slug: email
      properties:
        action:
          $ref: '#/components/schemas/ContentFilterBuiltinAction'
        label:
          deprecated: true
          description: >-
            Deprecated: labels are system-assigned and cannot be set by the
            caller. Accepted for backward compatibility but silently ignored.
          maxLength: 100
          type: string
        scan_scope:
          $ref: '#/components/schemas/PromptInjectionScanScope'
        slug:
          $ref: '#/components/schemas/ContentFilterBuiltinSlug'
      required:
        - slug
        - action
      type: object
    ContentFilterBuiltinSlug:
      description: The builtin filter identifier
      enum:
        - email
        - phone
        - ssn
        - credit-card
        - ip-address
        - person-name
        - address
        - regex-prompt-injection
      example: regex-prompt-injection
      type: string
    ContentFilterEntry:
      description: >-
        A custom regex content filter that scans request messages for matching
        patterns.
      example:
        action: redact
        label: '[API_KEY]'
        pattern: \b(sk-[a-zA-Z0-9]{48})\b
      properties:
        action:
          $ref: '#/components/schemas/ContentFilterAction'
        label:
          description: Optional label used in redaction placeholders or error messages
          example: '[API_KEY]'
          maxLength: 100
          type:
            - string
            - 'null'
        pattern:
          description: A regex pattern to match against request content
          example: \b(sk-[a-zA-Z0-9]{48})\b
          minLength: 1
          type: string
      required:
        - pattern
        - action
      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
    ContentPartAudio:
      example:
        audio_url:
          url: https://example.com/audio.mp3
        type: audio_url
      properties:
        audio_url:
          properties:
            url:
              type: string
          required:
            - url
          type: object
        type:
          enum:
            - audio_url
          type: string
      required:
        - type
        - audio_url
      type: object
    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
    ContentPartInputAudio:
      example:
        input_audio:
          data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...
          format: wav
        type: input_audio
      properties:
        input_audio:
          $ref: '#/components/schemas/MultimodalMedia'
        type:
          enum:
            - input_audio
          type: string
      required:
        - type
        - input_audio
      type: object
    ContentPartInputFile:
      example:
        input_file:
          data: data:application/pdf;base64,JVBERi0xLjQKJeLjz9MKMyAw...
          format: pdf
        type: input_file
      properties:
        input_file:
          $ref: '#/components/schemas/MultimodalMedia'
        type:
          enum:
            - input_file
          type: string
      required:
        - type
        - input_file
      type: object
    ContentPartInputVideo:
      example:
        input_video:
          data: data:video/mp4;base64,AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQy...
          format: mp4
        type: input_video
      properties:
        input_video:
          $ref: '#/components/schemas/MultimodalMedia'
        type:
          enum:
            - input_video
          type: string
      required:
        - type
        - input_video
      type: object
    ContentPartVideo:
      example:
        type: video_url
        video_url:
          url: https://example.com/clip.mp4
      properties:
        type:
          enum:
            - video_url
          type: string
        video_url:
          properties:
            url:
              type: string
          required:
            - url
          type: object
      required:
        - type
        - video_url
      type: object
    ContextCompactionItem:
      additionalProperties: {}
      description: A context compaction marker with an optional encrypted summary
      example:
        encrypted_content: enc_abc123...
        type: context_compaction
      properties:
        encrypted_content:
          type:
            - string
            - 'null'
        id:
          type:
            - string
            - 'null'
        type:
          enum:
            - context_compaction
          type: string
      required:
        - type
      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
      properties:
        upstream_inference_completions_cost:
          format: double
          type: number
        upstream_inference_cost:
          format: double
          type:
            - number
            - 'null'
        upstream_inference_prompt_cost:
          format: double
          type: number
      required:
        - upstream_inference_prompt_cost
        - upstream_inference_completions_cost
      type:
        - object
        - 'null'
    CreateBYOKKeyRequest:
      example:
        key: sk-proj-abc123...
        name: Production OpenAI Key
        provider: openai
      properties:
        allowed_models:
          description: >-
            Optional allowlist of model slugs this credential may be used for.
            `null` means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        allowed_user_ids:
          description: >-
            Optional allowlist of user IDs that may use this credential. `null`
            means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        disabled:
          description: Whether this credential should be created in a disabled state.
          example: false
          type: boolean
        is_fallback:
          description: >-
            Whether this credential is treated as a fallback — used only after
            non-fallback keys for the same provider have been tried.
          example: false
          type: boolean
        key:
          description: >-
            The raw provider API key or credential. This value is encrypted at
            rest and never returned in API responses.
          example: sk-proj-abc123...
          minLength: 1
          type: string
        name:
          description: Optional human-readable name for the credential.
          example: Production OpenAI Key
          maxLength: 255
          type:
            - string
            - 'null'
        provider:
          $ref: '#/components/schemas/BYOKProviderSlug'
        workspace_id:
          description: >-
            Optional workspace ID. Defaults to the authenticated entity's
            default workspace.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - provider
        - key
      type: object
    CreateBYOKKeyResponse:
      example:
        data:
          allowed_api_key_hashes: null
          allowed_models: null
          allowed_user_ids: null
          created_at: '2025-08-24T10:30:00Z'
          disabled: false
          id: 11111111-2222-3333-4444-555555555555
          is_fallback: false
          label: sk-...AbCd
          name: Production OpenAI Key
          provider: openai
          sort_order: 0
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/BYOKKey'
            - description: The created BYOK credential.
      required:
        - data
      type: object
    CreatedEvent:
      description: Event emitted when a response is created
      example:
        response:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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
        content_filter_builtins:
          - action: block
            slug: regex-prompt-injection
        content_filters: null
        description: A guardrail for limiting API usage
        enforce_zdr_anthropic: true
        enforce_zdr_google: false
        enforce_zdr_openai: true
        enforce_zdr_other: false
        enforce_zdr_xai: 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
          type:
            - array
            - 'null'
        allowed_providers:
          description: List of allowed provider IDs
          example:
            - openai
            - anthropic
            - deepseek
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        content_filter_builtins:
          description: >-
            Builtin content filters to apply. Every builtin slug supports
            "block", "redact", and the detect-only "flag" action.
          example:
            - action: block
              slug: regex-prompt-injection
          items:
            $ref: '#/components/schemas/ContentFilterBuiltinEntryInput'
          type:
            - array
            - 'null'
        content_filters:
          description: Custom regex content filters to apply to request messages
          example:
            - action: redact
              label: '[API_KEY]'
              pattern: \b(sk-[a-zA-Z0-9]{48})\b
          items:
            $ref: '#/components/schemas/ContentFilterEntry'
          type:
            - array
            - 'null'
        description:
          description: Description of the guardrail
          example: A guardrail for limiting API usage
          maxLength: 1000
          type:
            - string
            - 'null'
        enable_free_model_publication:
          description: Whether this guardrail allows free endpoints that publish prompts.
          example: false
          type:
            - boolean
            - 'null'
        enable_free_model_training:
          description: >-
            Whether this guardrail allows free endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enable_paid_model_training:
          description: >-
            Whether this guardrail allows paid endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai,
            enforce_zdr_google, enforce_zdr_xai, and enforce_zdr_other instead.
            When provided, its value is copied into any of those per-provider
            fields that are not explicitly specified on the request.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_anthropic:
          description: >-
            Whether to enforce zero data retention for Anthropic models. Falls
            back to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_google:
          description: >-
            Whether to enforce zero data retention for Google models. Falls back
            to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_openai:
          description: >-
            Whether to enforce zero data retention for OpenAI models. Falls back
            to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from
            Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when
            not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_xai:
          description: >-
            Whether to enforce zero data retention for xAI models. Falls back to
            enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        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
          type:
            - array
            - 'null'
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        include_byok_in_budgets:
          description: >-
            Whether BYOK (bring-your-own-key) inference spend counts toward this
            guardrail's limit_usd, in addition to OpenRouter credit spend.
            Defaults to false.
          example: false
          type: boolean
        limit_usd:
          description: Spending limit in USD
          example: 50
          format: double
          type:
            - number
            - 'null'
        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
          content_filter_builtins:
            - action: redact
              label: '[EMAIL]'
              slug: email
          content_filters: null
          created_at: '2025-08-24T10:30:00Z'
          description: A guardrail for limiting API usage
          enforce_zdr: null
          enforce_zdr_anthropic: true
          enforce_zdr_google: false
          enforce_zdr_openai: true
          enforce_zdr_other: false
          enforce_zdr_xai: false
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          include_byok_in_budgets: false
          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
    CreateObservabilityDestinationRequest:
      example:
        config:
          baseUrl: https://us.cloud.langfuse.com
          publicKey: pk-l...EfGh
          secretKey: sk-l...AbCd
        name: Production Langfuse
        type: langfuse
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes whose traffic is
            forwarded. `null` or omitted means all keys. Must contain at least
            one hash if provided.
          example: null
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        config:
          additionalProperties: {}
          description: >-
            Provider-specific configuration. The shape depends on `type` and is
            validated server-side.
          example:
            baseUrl: https://us.cloud.langfuse.com
            publicKey: pk-l...EfGh
            secretKey: sk-l...AbCd
          type: object
        enabled:
          default: true
          description: Whether this destination should be enabled immediately.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable'
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type: string
        privacy_mode:
          default: false
          description: >-
            When true, request/response bodies are not forwarded — only
            metadata.
          example: false
          type: boolean
        sampling_rate:
          description: Sampling rate between 0.0001 and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          description: The destination type. Only stable destination types are accepted.
          enum:
            - arize
            - braintrust
            - clickhouse
            - datadog
            - grafana
            - langfuse
            - langsmith
            - newrelic
            - opik
            - otel-collector
            - posthog
            - ramp
            - s3
            - sentry
            - snowflake
            - weave
            - webhook
          example: langfuse
          type: string
        workspace_id:
          description: >-
            Optional workspace ID. Defaults to the authenticated entity's
            default workspace.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - type
        - name
        - config
      type: object
    CreateObservabilityDestinationResponse:
      example:
        data:
          api_key_hashes: null
          config:
            baseUrl: https://us.cloud.langfuse.com
            publicKey: pk-l...EfGh
            secretKey: sk-l...AbCd
          created_at: '2025-08-24T10:30:00Z'
          enabled: true
          filter_rules: null
          id: 99999999-aaaa-bbbb-cccc-dddddddddddd
          name: Production Langfuse
          privacy_mode: false
          sampling_rate: 1
          type: langfuse
          updated_at: '2025-08-24T15:45:00Z'
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/ObservabilityDestination'
            - description: The newly created observability destination.
      required:
        - data
      type: object
    CreatePresetFromInferenceResponse:
      description: Response containing the created preset with its designated version.
      example:
        data:
          created_at: '2026-04-20T10:00:00Z'
          creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
          description: null
          designated_version:
            config:
              model: openai/gpt-4o
              temperature: 0.7
            created_at: '2026-04-20T10:00:00Z'
            creator_id: user_2dHFtVWx2n56w6HkM0000000000
            id: 550e8400-e29b-41d4-a716-446655440000
            preset_id: 650e8400-e29b-41d4-a716-446655440001
            system_prompt: You are a helpful assistant.
            updated_at: '2026-04-20T10:00:00Z'
            version: 1
          designated_version_id: 550e8400-e29b-41d4-a716-446655440000
          id: 650e8400-e29b-41d4-a716-446655440001
          name: my-preset
          slug: my-preset
          status: active
          status_updated_at: null
          updated_at: '2026-04-20T10:00:00Z'
          workspace_id: 750e8400-e29b-41d4-a716-446655440002
      properties:
        data:
          $ref: '#/components/schemas/PresetWithDesignatedVersion'
      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
          type:
            - string
            - 'null'
        default_provider_sort:
          description: >-
            Default provider sort preference (price, throughput, latency,
            exacto)
          example: price
          type:
            - string
            - 'null'
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          type:
            - string
            - 'null'
        description:
          description: Description of the workspace
          example: Production environment workspace
          maxLength: 500
          type:
            - string
            - 'null'
        io_logging_api_key_ids:
          description: Optional array of API key IDs to filter I/O logging
          example: null
          items:
            type: integer
          type:
            - array
            - 'null'
        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 segments separated by
            single hyphens, no leading/trailing hyphens)
          example: production
          maxLength: 50
          minLength: 1
          pattern: ^[a-z0-9]+(?:-[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_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
          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
    CustomToolCallInputDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseCustomToolCallInputDeltaEvent'
        - properties: {}
          type: object
      description: >-
        Event emitted when a custom tool call's freeform input is being
        streamed. Mirrors `response.function_call_arguments.delta` but for
        `custom` tools whose input is opaque text rather than JSON arguments.
      example:
        delta: '*** Begin Patch'
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.custom_tool_call_input.delta
    CustomToolCallInputDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseCustomToolCallInputDoneEvent'
        - properties: {}
          type: object
      description: >-
        Event emitted when a custom tool call's freeform input streaming is
        complete. Mirrors `response.function_call_arguments.done` but for
        `custom` tools.
      example:
        input: |-
          *** Begin Patch
          *** End Patch
        item_id: item-1
        output_index: 0
        sequence_number: 6
        type: response.custom_tool_call_input.done
    CustomToolCallItem:
      description: >-
        A call to a custom (freeform-grammar) tool created by the model —
        distinct from `function_call`. Used for tools like Codex CLI's
        `apply_patch` whose payload is opaque text rather than JSON arguments.
      example:
        call_id: call-abc123
        id: ctc-abc123
        input: |-
          *** Begin Patch
          *** End Patch
        name: apply_patch
        type: custom_tool_call
      properties:
        call_id:
          type: string
        id:
          type: string
        input:
          type: string
        name:
          type: string
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        type:
          enum:
            - custom_tool_call
          type: string
      required:
        - type
        - call_id
        - name
        - input
      type: object
    CustomToolCallOutputItem:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput'
        - 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 custom (freeform-grammar) tool call execution. Mirrors
        `function_call_output` but is matched to a `custom_tool_call` rather
        than a `function_call`.
      example:
        call_id: call-abc123
        id: ctco-abc123
        output: patch applied successfully
        type: custom_tool_call_output
    DABenchmarkEntry:
      description: A single Design Arena benchmark entry for a specific arena+category
      example:
        arena: models
        category: website
        elo: 1385.2
        rank: 5
        win_rate: 62.5
      properties:
        arena:
          description: Arena type (e.g. models, builders, agents)
          example: models
          type: string
        category:
          description: Category within the arena (e.g. website, gamedev, uicomponent)
          example: website
          type: string
        elo:
          description: ELO rating from head-to-head arena battles
          example: 1385.2
          format: double
          type: number
        rank:
          description: >-
            Rank position within this arena+category among models available on
            OpenRouter (1 = highest ELO)
          example: 5
          type: integer
        win_rate:
          description: Win rate percentage in arena battles
          example: 62.5
          format: double
          type: number
      required:
        - arena
        - category
        - elo
        - win_rate
        - rank
      type: object
    DatetimeServerTool:
      description: 'OpenRouter built-in server tool: returns the current date and time'
      example:
        parameters:
          timezone: America/New_York
        type: openrouter:datetime
      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
    DebugEvent:
      description: >-
        Debug event emitted when debug.echo_upstream_body is true. Contains the
        transformed upstream request body or timing milestones.
      example:
        debug:
          echo_upstream_body:
            messages: []
            model: anthropic/claude-sonnet-4
        sequence_number: 1
        type: response.debug
      properties:
        debug:
          properties:
            echo_upstream_body:
              additionalProperties: {}
              type: object
            timings:
              properties:
                epoch_ms:
                  type: integer
                event:
                  enum:
                    - adapter_request
                    - upstream_headers_received
                    - first_token_received
                    - upstream_body_ended
                  type: string
                start_ms:
                  type: integer
              required:
                - start_ms
                - event
                - epoch_ms
              type: object
          type: object
        sequence_number:
          type: integer
        type:
          enum:
            - response.debug
          type: string
      required:
        - type
        - debug
        - sequence_number
      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
      properties:
        frequency_penalty:
          format: double
          type:
            - number
            - 'null'
        presence_penalty:
          format: double
          type:
            - number
            - 'null'
        repetition_penalty:
          format: double
          type:
            - number
            - 'null'
        temperature:
          format: double
          type:
            - number
            - 'null'
        top_k:
          type:
            - integer
            - 'null'
        top_p:
          format: double
          type:
            - number
            - 'null'
      type:
        - object
        - 'null'
    DeleteBYOKKeyResponse:
      example:
        deleted: true
      properties:
        deleted:
          const: true
          description: Confirmation that the BYOK credential was deleted.
          example: true
          type: boolean
      required:
        - deleted
      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
    DeleteObservabilityDestinationResponse:
      example:
        deleted: true
      properties:
        deleted:
          const: true
          description: Always `true` on success.
          type: boolean
      required:
        - deleted
      type: object
    DeleteWorkspaceBudgetResponse:
      example:
        deleted: true
      properties:
        deleted:
          const: true
          description: Confirmation that the budget was deleted (or did not exist)
          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
      type:
        - string
        - 'null'
      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
            - type: 'null'
        phase:
          anyOf:
            - enum:
                - commentary
              type: string
            - enum:
                - final_answer
              type: string
            - type: 'null'
          description: >-
            The phase of an assistant message. Use `commentary` for an
            intermediate assistant message and `final_answer` for the final
            assistant message. For follow-up requests with models like
            `gpt-5.3-codex` and later, preserve and resend phase on all
            assistant messages. Omitting it can degrade performance. Not used
            for user messages.
          example: final_answer
        role:
          anyOf:
            - enum:
                - user
              type: string
            - 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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    EndpointInfo:
      example:
        model: openai/gpt-4o
        provider: OpenAI
        selected: true
      properties:
        model:
          type: string
        provider:
          type: string
        selected:
          type: boolean
      required:
        - provider
        - model
        - selected
      type: object
    EndpointsMetadata:
      example:
        available:
          - model: openai/gpt-4o
            provider: OpenAI
            selected: true
        total: 3
      properties:
        available:
          items:
            $ref: '#/components/schemas/EndpointInfo'
          type: array
        total:
          type: integer
      required:
        - total
        - available
      type: object
    EndpointStatus:
      enum:
        - 0
        - -1
        - -2
        - -3
        - -5
        - -10
      example: 0
      type: integer
    EnumCapability:
      description: A parameter that accepts one of a discrete set of string values.
      example:
        type: enum
        values:
          - 1K
          - 2K
          - 4K
      properties:
        type:
          enum:
            - enum
          type: string
        values:
          items:
            type: string
          type: array
      required:
        - type
        - values
      type: object
    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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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
    FileDeleteResponse:
      description: Confirmation that a file was deleted.
      example:
        id: or_file_011CNha8iCJcU1wXNR6q4V8w
        type: file_deleted
      properties:
        id:
          type: string
        type:
          enum:
            - file_deleted
          type: string
      required:
        - id
        - type
      type: object
    FileListResponse:
      description: A page of files belonging to the requesting workspace.
      example:
        cursor: null
        data:
          - created_at: '2025-01-01T00:00:00Z'
            downloadable: false
            filename: document.pdf
            id: or_file_011CNha8iCJcU1wXNR6q4V8w
            mime_type: application/pdf
            size_bytes: 1024000
            type: file
        first_id: or_file_011CNha8iCJcU1wXNR6q4V8w
        has_more: false
        last_id: or_file_011CNha8iCJcU1wXNR6q4V8w
      properties:
        cursor:
          description: >-
            Opaque cursor for the next page; null when there are no more
            results.
          type:
            - string
            - 'null'
        data:
          items:
            $ref: '#/components/schemas/FileMetadata'
          type: array
        first_id:
          type:
            - string
            - 'null'
        has_more:
          type: boolean
        last_id:
          type:
            - string
            - 'null'
      required:
        - data
        - has_more
        - first_id
        - last_id
        - cursor
      type: object
    FileMetadata:
      description: Metadata describing a stored file.
      example:
        created_at: '2025-01-01T00:00:00Z'
        downloadable: false
        filename: document.pdf
        id: or_file_011CNha8iCJcU1wXNR6q4V8w
        mime_type: application/pdf
        size_bytes: 1024000
        type: file
      properties:
        created_at:
          type: string
        downloadable:
          type: boolean
        filename:
          type: string
        id:
          type: string
        mime_type:
          type: string
        size_bytes:
          type: integer
        type:
          enum:
            - file
          type: string
      required:
        - id
        - type
        - filename
        - mime_type
        - size_bytes
        - created_at
        - downloadable
      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'
            - type: 'null'
        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
    FilesServerTool:
      description: >-
        OpenRouter built-in server tool: read, write, edit, and list workspace
        files via the Files API. Requires the `x-openrouter-file-ids:
        openrouter` request header.
      example:
        parameters: {}
        type: openrouter:files
      properties:
        parameters:
          $ref: '#/components/schemas/FilesServerToolConfig'
        type:
          enum:
            - openrouter:files
          type: string
      required:
        - type
      type: object
    FilesServerToolConfig:
      description: Configuration for the openrouter:files server tool
      example: {}
      properties: {}
      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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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: {}
          type: object
        strict:
          type:
            - boolean
            - 'null'
        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:
        frame_type: first_frame
        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:
          type:
            - string
            - 'null'
        name:
          type: string
        parameters:
          additionalProperties: {}
          type:
            - object
            - 'null'
        strict:
          type:
            - boolean
            - 'null'
        type:
          enum:
            - function
          type: string
      required:
        - type
        - name
        - parameters
      type: object
    FusionAnalysisResult:
      description: Structured analysis produced by the fusion analyst model.
      example:
        blind_spots:
          - No model considered the impact on existing API consumers.
        consensus:
          - All panel models agree the request is asking for a concise summary.
        contradictions:
          - stances:
              - model: openai/gpt-5
                stance: Favors an incremental rollout.
              - model: anthropic/claude-sonnet-4.5
                stance: Favors a single coordinated migration.
            topic: Recommended approach
        partial_coverage:
          - models:
              - openai/gpt-5
            point: Only one model addressed the rollback strategy.
        unique_insights:
          - insight: >-
              Highlighted a backwards-compatibility risk the other models
              missed.
            model: anthropic/claude-sonnet-4.5
      properties:
        blind_spots:
          items:
            type: string
          type: array
        consensus:
          items:
            type: string
          type: array
        contradictions:
          items:
            properties:
              stances:
                items:
                  properties:
                    model:
                      type: string
                    stance:
                      type: string
                  required:
                    - model
                    - stance
                  type: object
                type: array
              topic:
                type: string
            required:
              - topic
              - stances
            type: object
          type: array
        partial_coverage:
          items:
            properties:
              models:
                items:
                  type: string
                type: array
              point:
                type: string
            required:
              - models
              - point
            type: object
          type: array
        unique_insights:
          items:
            properties:
              insight:
                type: string
              model:
                type: string
            required:
              - model
              - insight
            type: object
          type: array
      required:
        - consensus
        - contradictions
        - partial_coverage
        - unique_insights
        - blind_spots
      type: object
    FusionCallAnalysisCompletedEvent:
      description: Emitted when the fusion analyst completes with the structured analysis.
      example:
        analysis:
          blind_spots: []
          consensus: []
          contradictions: []
          partial_coverage: []
          unique_insights: []
        item_id: st_fusion_abc
        output_index: 0
        sequence_number: 40
        type: response.fusion_call.analysis.completed
      properties:
        analysis:
          $ref: '#/components/schemas/FusionAnalysisResult'
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.analysis.completed
          type: string
      required:
        - type
        - analysis
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallAnalysisInProgressEvent:
      description: >-
        Emitted when the fusion analyst starts producing the structured
        analysis.
      example:
        analyst_model: openai/gpt-5
        item_id: st_fusion_abc
        judge_model: openai/gpt-5
        output_index: 0
        sequence_number: 25
        type: response.fusion_call.analysis.in_progress
      properties:
        analyst_model:
          description: Slug of the model producing the structured analysis.
          type: string
        item_id:
          type: string
        judge_model:
          deprecated: true
          description: >-
            Deprecated alias of `analyst_model`, kept so existing consumers keep
            working. Always carries the same value. Use `analyst_model`.
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.analysis.in_progress
          type: string
      required:
        - type
        - analyst_model
        - judge_model
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallCompletedEvent:
      description: Emitted when the openrouter:fusion tool call finishes.
      example:
        item_id: st_fusion_abc
        output_index: 0
        sequence_number: 41
        type: response.fusion_call.completed
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.completed
          type: string
      required:
        - type
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallInProgressEvent:
      description: Emitted when an openrouter:fusion tool call begins executing.
      example:
        item_id: st_fusion_abc
        output_index: 0
        sequence_number: 3
        type: response.fusion_call.in_progress
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.in_progress
          type: string
      required:
        - type
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallPanelAddedEvent:
      description: Emitted when a fusion analysis-panel model starts.
      example:
        item_id: st_fusion_abc
        model: openai/gpt-5
        output_index: 0
        sequence_number: 4
        type: response.fusion_call.panel.added
      properties:
        item_id:
          type: string
        model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.panel.added
          type: string
      required:
        - type
        - model
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallPanelCompletedEvent:
      description: Emitted when a fusion panel model finishes with its full content.
      example:
        content: Full panel response text...
        item_id: st_fusion_abc
        model: openai/gpt-5
        output_index: 0
        sequence_number: 20
        type: response.fusion_call.panel.completed
      properties:
        content:
          type: string
        item_id:
          type: string
        model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.panel.completed
          type: string
      required:
        - type
        - model
        - content
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallPanelDeltaEvent:
      description: Incremental content token from a fusion panel model.
      example:
        delta: Carbon taxes
        item_id: st_fusion_abc
        model: openai/gpt-5
        output_index: 0
        sequence_number: 5
        type: response.fusion_call.panel.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.panel.delta
          type: string
      required:
        - type
        - model
        - delta
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallPanelFailedEvent:
      description: Emitted when a fusion panel model fails.
      example:
        error: Upstream provider error
        item_id: st_fusion_abc
        model: openai/gpt-5
        output_index: 0
        sequence_number: 18
        status_code: 502
        type: response.fusion_call.panel.failed
      properties:
        error:
          type: string
        item_id:
          type: string
        model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        status_code:
          type: integer
        type:
          enum:
            - response.fusion_call.panel.failed
          type: string
      required:
        - type
        - model
        - error
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionCallPanelReasoningDeltaEvent:
      description: Incremental reasoning token from a fusion panel model.
      example:
        delta: Considering both sides
        item_id: st_fusion_abc
        model: openai/gpt-5
        output_index: 0
        sequence_number: 6
        type: response.fusion_call.panel.reasoning.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.panel.reasoning.delta
          type: string
      required:
        - type
        - model
        - delta
        - output_index
        - item_id
        - sequence_number
      type: object
    FusionPlugin:
      example:
        analysis_models:
          - ~anthropic/claude-opus-latest
          - ~openai/gpt-latest
          - ~google/gemini-pro-latest
        enabled: true
        id: fusion
        model: ~anthropic/claude-opus-latest
      properties:
        analysis_models:
          description: >-
            Slugs of models to run in parallel as the "expert panel" the analyst
            analyzes. Each model receives the same user prompt with web_search +
            web_fetch enabled. Capped at 8 models to bound cost amplification.
            When omitted, defaults to the Quality preset from the /labs/fusion
            UI (~anthropic/claude-opus-latest, ~openai/gpt-latest,
            ~google/gemini-pro-latest).
          example:
            - ~anthropic/claude-opus-latest
            - ~openai/gpt-latest
            - ~google/gemini-pro-latest
          items:
            type: string
          maxItems: 8
          minItems: 1
          type: array
        enabled:
          description: >-
            Set to false to disable the fusion plugin for this request. Defaults
            to true.
          type: boolean
        id:
          enum:
            - fusion
          type: string
        max_tool_calls:
          description: >-
            Maximum number of tool-calling steps each panelist (analysis model)
            and the analyst model may take during their agentic web-research
            loop. Models with web_search/web_fetch enabled iterate until they
            produce a text response or hit this ceiling. Defaults to 8. Capped
            at 16.
          example: 12
          maximum: 16
          minimum: 1
          type: integer
        model:
          description: >-
            Slug of the model that performs both the analyst step (with
            web_search + web_fetch) and the final synthesis. When omitted,
            defaults to the first model in the Quality preset.
          example: ~anthropic/claude-opus-latest
          type: string
        preset:
          description: >-
            A curated OpenRouter fusion preset (slugs follow `<task>-<tier>`,
            e.g. `general-high`). Expands server-side into the preset's
            analysis_models panel and analyst model, so callers never name
            individual models. Explicitly provided `analysis_models` / `model`
            take precedence.
          enum:
            - general-high
            - general-budget
            - general-fast
          example: general-high
          type: string
        tools:
          description: >-
            Server tools available to panelist and analyst inner calls. Each
            entry uses the same `{ type, parameters? }` shorthand as the outer
            Chat Completions request. When omitted, defaults to `[{ type:
            "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass
            an empty array to disable tools entirely (panelists answer from
            parametric knowledge only).
          example:
            - parameters:
                excluded_domains:
                  - example.com
              type: openrouter:web_search
            - type: openrouter:web_fetch
          items:
            properties:
              parameters:
                additionalProperties:
                  anyOf:
                    - type: string
                    - format: double
                      type: number
                    - type: boolean
                    - type: 'null'
                    - items:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                          - type: boolean
                          - type: 'null'
                          - type: 'null'
                      type: array
                    - additionalProperties:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                          - type: boolean
                          - type: 'null'
                          - type: 'null'
                      type: object
                    - type: 'null'
                description: >-
                  Optional configuration forwarded as the tool's `parameters`
                  object.
                type: object
              type:
                description: >-
                  Server tool type identifier (e.g. "openrouter:web_search",
                  "openrouter:web_fetch").
                type: string
            required:
              - type
            type: object
          maxItems: 8
          type: array
      required:
        - id
      type: object
    FusionServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: fans out the user prompt to a panel of
        analysis models, then asks an analyst model to summarize their
        collective output as structured JSON the outer model can synthesize
        from.
      example:
        parameters:
          analysis_models:
            - ~anthropic/claude-opus-latest
            - ~openai/gpt-latest
        type: openrouter:fusion
      properties:
        parameters:
          $ref: '#/components/schemas/FusionServerToolConfig'
        type:
          enum:
            - openrouter:fusion
          type: string
      required:
        - type
      type: object
    FusionServerToolConfig:
      description: Configuration for the openrouter:fusion server tool.
      example:
        analysis_models:
          - ~anthropic/claude-opus-latest
          - ~openai/gpt-latest
          - ~google/gemini-pro-latest
      properties:
        analysis_models:
          description: >-
            Slugs of models to run in parallel as the analysis panel. Each model
            receives the user prompt with openrouter:web_search and
            openrouter:web_fetch enabled, then an analyst model summarizes the
            collective output into structured analysis JSON. Capped at 8 models
            to bound cost amplification. Defaults to the Quality preset from
            /labs/fusion.
          example:
            - ~anthropic/claude-opus-latest
            - ~openai/gpt-latest
            - ~google/gemini-pro-latest
          items:
            type: string
          maxItems: 8
          minItems: 1
          type: array
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        max_completion_tokens:
          description: >-
            Maximum number of output tokens (including reasoning tokens) each
            panelist and the analyst model may produce per inner call. Controls
            the total output budget so reasoning-heavy models like GPT-5.5 do
            not exhaust their token allowance before producing visible text.
            When omitted, panelists default to 32000 and the analyst to 20000.
          example: 16384
          type: integer
        max_tool_calls:
          description: >-
            Maximum number of tool-calling steps each panelist (analysis model)
            and the analyst model may take during their agentic web-research
            loop. Models with web_search/web_fetch enabled iterate until they
            produce a text response or hit this ceiling. Defaults to 8. Capped
            at 16.
          example: 12
          maximum: 16
          minimum: 1
          type: integer
        model:
          description: >-
            Slug of the analyst model that produces the structured analysis
            JSON. Defaults to the model used in the outer API request.
          example: ~anthropic/claude-opus-latest
          type: string
        reasoning:
          description: >-
            Reasoning configuration forwarded to panelist and analyst inner
            calls. Use this to control reasoning effort and token budget for
            models that support extended thinking.
          properties:
            effort:
              description: Reasoning effort level for panelist and analyst inner calls.
              enum:
                - max
                - xhigh
                - high
                - medium
                - low
                - minimal
                - none
              type: string
            max_tokens:
              description: >-
                Maximum number of reasoning tokens each panelist and analyst
                model may use. Helps bound cost when models allocate too much
                budget to chain-of-thought.
              type: integer
          type: object
        temperature:
          description: >-
            Temperature forwarded to panelist inner calls. The analyst always
            runs at temperature 0 regardless of this value. When omitted, the
            provider's default applies.
          example: 0.7
          format: double
          type: number
        tools:
          description: >-
            Server tools available to panelist and analyst inner calls. Each
            entry uses the same `{ type, parameters? }` shorthand as the outer
            Chat Completions request. When omitted, defaults to `[{ type:
            "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass
            an empty array to disable tools entirely (panelists answer from
            parametric knowledge only).
          example:
            - parameters:
                excluded_domains:
                  - example.com
              type: openrouter:web_search
            - type: openrouter:web_fetch
          items:
            properties:
              parameters:
                additionalProperties: {}
                description: >-
                  Optional configuration forwarded as the tool's `parameters`
                  object.
                type: object
              type:
                description: >-
                  Server tool type identifier (e.g. "openrouter:web_search",
                  "openrouter:web_fetch").
                type: string
            required:
              - type
            type: object
          maxItems: 8
          type: array
      type: object
    FusionSource:
      description: A web page retrieved via web search during a fusion run.
      example:
        title: Example article title
        url: https://example.com/article
      properties:
        title:
          description: Title of the retrieved web page.
          type: string
        url:
          description: URL of the web page a panel or the analyst retrieved during the run.
          type: string
      required:
        - url
        - title
      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: {}
                  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...
              type:
                - string
                - 'null'
            reasoning:
              description: Reasoning/thinking output, if any
              example: null
              type:
                - string
                - 'null'
          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'
          data_region: global
          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_fetches: 0
          num_input_audio_prompt: 0
          num_media_completion: 0
          num_media_prompt: 1
          num_search_results: 5
          origin: https://openrouter.ai/
          preset_id: a9e8d400-592a-494f-908c-375efa66cafd
          provider_name: Infermatic
          provider_responses: null
          request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
          router: openrouter/auto
          service_tier: priority
          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
          web_search_engine: exa
      properties:
        data:
          description: Generation data
          properties:
            api_type:
              description: Type of API used for the generation
              enum:
                - completions
                - embeddings
                - rerank
                - tts
                - stt
                - video
                - image
                - null
              type:
                - string
                - 'null'
            app_id:
              description: ID of the app that made the request
              example: 12345
              type:
                - integer
                - 'null'
            cache_discount:
              description: Discount applied due to caching
              example: 0.0002
              format: double
              type:
                - number
                - 'null'
            cancelled:
              description: Whether the generation was cancelled
              example: false
              type:
                - boolean
                - 'null'
            created_at:
              description: ISO 8601 timestamp of when the generation was created
              example: '2024-07-15T23:33:19.433273+00:00'
              type: string
            data_region:
              description: >-
                The data region this generation was routed through: 'global',
                'europe', or 'us'.
              enum:
                - global
                - europe
                - us
              example: global
              type: string
            external_user:
              description: External user identifier
              example: user-123
              type:
                - string
                - 'null'
            finish_reason:
              description: Reason the generation finished
              example: stop
              type:
                - string
                - 'null'
            generation_time:
              description: Time taken for generation in milliseconds
              example: 1200
              format: double
              type:
                - number
                - 'null'
            http_referer:
              description: Referer header from the request
              type:
                - string
                - 'null'
            id:
              description: Unique identifier for the generation
              example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
              type: string
            is_byok:
              description: Whether this used bring-your-own-key
              example: false
              type: boolean
            latency:
              description: Total latency in milliseconds
              example: 1250
              format: double
              type:
                - number
                - 'null'
            model:
              description: Model used for the generation
              example: sao10k/l3-stheno-8b
              type: string
            moderation_latency:
              description: Moderation latency in milliseconds
              example: 50
              format: double
              type:
                - number
                - 'null'
            native_finish_reason:
              description: Native finish reason as reported by provider
              example: stop
              type:
                - string
                - 'null'
            native_tokens_cached:
              description: Native cached tokens as reported by provider
              example: 3
              type:
                - integer
                - 'null'
            native_tokens_completion:
              description: Native completion tokens as reported by provider
              example: 25
              type:
                - integer
                - 'null'
            native_tokens_completion_images:
              description: Native completion image tokens as reported by provider
              example: 0
              type:
                - integer
                - 'null'
            native_tokens_prompt:
              description: Native prompt tokens as reported by provider
              example: 10
              type:
                - integer
                - 'null'
            native_tokens_reasoning:
              description: Native reasoning tokens as reported by provider
              example: 5
              type:
                - integer
                - 'null'
            num_fetches:
              description: Number of web fetches performed
              example: 0
              type:
                - integer
                - 'null'
            num_input_audio_prompt:
              description: Number of audio inputs in the prompt
              example: 0
              type:
                - integer
                - 'null'
            num_media_completion:
              description: Number of media items in the completion
              example: 0
              type:
                - integer
                - 'null'
            num_media_prompt:
              description: Number of media items in the prompt
              example: 1
              type:
                - integer
                - 'null'
            num_search_results:
              description: Number of search results included
              example: 5
              type:
                - integer
                - 'null'
            origin:
              description: Origin URL of the request
              example: https://openrouter.ai/
              type: string
            preset_id:
              description: >-
                ID of the preset used for this generation, null if no preset was
                used
              example: a9e8d400-592a-494f-908c-375efa66cafd
              type:
                - string
                - 'null'
            provider_name:
              description: Name of the provider that served the request
              example: Infermatic
              type:
                - string
                - 'null'
            provider_responses:
              description: >-
                List of provider responses for this generation, including
                fallback attempts
              items:
                $ref: '#/components/schemas/ProviderResponse'
              type:
                - array
                - 'null'
            request_id:
              description: >-
                Unique identifier grouping all generations from a single API
                request
              example: req-1727282430-aBcDeFgHiJkLmNoPqRsT
              type:
                - string
                - 'null'
            response_cache_source_id:
              description: >-
                If this generation was served from response cache, contains the
                original generation ID. Null otherwise.
              type:
                - string
                - 'null'
            router:
              description: Router used for the request (e.g., openrouter/auto)
              example: openrouter/auto
              type:
                - string
                - 'null'
            service_tier:
              description: >-
                Service tier the upstream provider reported running this request
                on, or null if it did not report one.
              example: priority
              type:
                - string
                - 'null'
            session_id:
              description: >-
                Session identifier grouping multiple generations in the same
                session
              type:
                - string
                - 'null'
            streamed:
              description: Whether the response was streamed
              example: true
              type:
                - boolean
                - 'null'
            tokens_completion:
              description: Number of tokens in the completion
              example: 25
              type:
                - integer
                - 'null'
            tokens_prompt:
              description: Number of tokens in the prompt
              example: 10
              type:
                - integer
                - 'null'
            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
              type:
                - string
                - 'null'
            upstream_inference_cost:
              description: Cost charged by the upstream provider
              example: 0.0012
              format: double
              type:
                - number
                - 'null'
            usage:
              description: Usage amount in USD
              example: 0.0015
              format: double
              type: number
            user_agent:
              description: User-Agent header from the request
              type:
                - string
                - 'null'
            web_search_engine:
              description: >-
                The resolved web search engine used for this generation (e.g.
                exa, firecrawl, parallel)
              example: exa
              type:
                - string
                - 'null'
          required:
            - id
            - upstream_id
            - total_cost
            - cache_discount
            - upstream_inference_cost
            - created_at
            - model
            - app_id
            - streamed
            - cancelled
            - provider_name
            - latency
            - moderation_latency
            - generation_time
            - finish_reason
            - service_tier
            - tokens_prompt
            - tokens_completion
            - native_tokens_prompt
            - native_tokens_completion
            - native_tokens_completion_images
            - native_tokens_reasoning
            - native_tokens_cached
            - num_media_prompt
            - num_input_audio_prompt
            - num_media_completion
            - num_search_results
            - num_fetches
            - web_search_engine
            - origin
            - usage
            - is_byok
            - native_finish_reason
            - external_user
            - api_type
            - preset_id
            - router
            - provider_responses
            - user_agent
            - http_referer
            - data_region
          type: object
      required:
        - data
      type: object
    GetBYOKKeyResponse:
      example:
        data:
          allowed_api_key_hashes: null
          allowed_models: null
          allowed_user_ids: null
          created_at: '2025-08-24T10:30:00Z'
          disabled: false
          id: 11111111-2222-3333-4444-555555555555
          is_fallback: false
          label: sk-...AbCd
          name: Production OpenAI Key
          provider: openai
          sort_order: 0
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/BYOKKey'
            - description: The BYOK credential.
      required:
        - data
      type: object
    GetGuardrailResponse:
      example:
        data:
          allowed_models: null
          allowed_providers:
            - openai
            - anthropic
            - google
          content_filter_builtins:
            - action: redact
              label: '[EMAIL]'
              slug: email
          content_filters: null
          created_at: '2025-08-24T10:30:00Z'
          description: Guardrail for production environment
          enforce_zdr: null
          enforce_zdr_anthropic: true
          enforce_zdr_google: false
          enforce_zdr_openai: true
          enforce_zdr_other: false
          enforce_zdr_xai: false
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          include_byok_in_budgets: false
          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
    GetObservabilityDestinationResponse:
      example:
        data:
          api_key_hashes: null
          config:
            baseUrl: https://us.cloud.langfuse.com
            publicKey: pk-l...EfGh
            secretKey: sk-l...AbCd
          created_at: '2025-08-24T10:30:00Z'
          enabled: true
          filter_rules: null
          id: 99999999-aaaa-bbbb-cccc-dddddddddddd
          name: Production Langfuse
          privacy_mode: false
          sampling_rate: 1
          type: langfuse
          updated_at: '2025-08-24T15:45:00Z'
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/ObservabilityDestination'
            - description: The observability destination.
      required:
        - data
      type: object
    GetPresetResponse:
      description: A preset with its currently designated version.
      example:
        data:
          created_at: '2026-04-20T10:00:00Z'
          creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
          description: null
          designated_version:
            config:
              model: openai/gpt-4o
              temperature: 0.7
            created_at: '2026-04-20T10:00:00Z'
            creator_id: user_2dHFtVWx2n56w6HkM0000000000
            id: 550e8400-e29b-41d4-a716-446655440000
            preset_id: 650e8400-e29b-41d4-a716-446655440001
            system_prompt: You are a helpful assistant.
            updated_at: '2026-04-20T10:00:00Z'
            version: 1
          designated_version_id: 550e8400-e29b-41d4-a716-446655440000
          id: 650e8400-e29b-41d4-a716-446655440001
          name: my-preset
          slug: my-preset
          status: active
          status_updated_at: null
          updated_at: '2026-04-20T10:00:00Z'
          workspace_id: 750e8400-e29b-41d4-a716-446655440002
      properties:
        data:
          $ref: '#/components/schemas/PresetWithDesignatedVersion'
      required:
        - data
      type: object
    GetPresetVersionResponse:
      description: A single version of a preset.
      example:
        data:
          config:
            model: openai/gpt-4o
            temperature: 0.7
          created_at: '2026-04-20T10:00:00Z'
          creator_id: user_2dHFtVWx2n56w6HkM0000000000
          id: 550e8400-e29b-41d4-a716-446655440000
          preset_id: 650e8400-e29b-41d4-a716-446655440001
          system_prompt: You are a helpful assistant.
          updated_at: '2026-04-20T10:00:00Z'
          version: 1
      properties:
        data:
          $ref: '#/components/schemas/PresetDesignatedVersion'
      required:
        - data
      type: object
    GetWorkspaceResponse:
      example:
        data:
          created_at: '2025-08-24T10:30:00Z'
          created_by: user_abc123
          default_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
          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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    Guardrail:
      example:
        allowed_models: null
        allowed_providers:
          - openai
          - anthropic
          - google
        content_filter_builtins:
          - action: redact
            label: '[EMAIL]'
            slug: email
        content_filters: null
        created_at: '2025-08-24T10:30:00Z'
        description: Guardrail for production environment
        enable_free_model_publication: false
        enable_free_model_training: true
        enable_paid_model_training: true
        enforce_zdr: null
        enforce_zdr_anthropic: true
        enforce_zdr_google: false
        enforce_zdr_openai: true
        enforce_zdr_other: false
        enforce_zdr_xai: false
        id: 550e8400-e29b-41d4-a716-446655440000
        ignored_models: null
        ignored_providers: null
        include_byok_in_budgets: false
        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
          type:
            - array
            - 'null'
        allowed_providers:
          description: List of allowed provider IDs
          example:
            - openai
            - anthropic
            - google
          items:
            type: string
          type:
            - array
            - 'null'
        content_filter_builtins:
          description: >-
            Builtin content filters applied to requests. Includes PII detectors
            and the regex-based prompt injection detector.
          example:
            - action: redact
              label: '[EMAIL]'
              slug: email
          items:
            $ref: '#/components/schemas/ContentFilterBuiltinEntry'
          type:
            - array
            - 'null'
        content_filters:
          description: Custom regex content filters applied to request messages
          example:
            - action: redact
              label: '[API_KEY]'
              pattern: \b(sk-[a-zA-Z0-9]{48})\b
          items:
            $ref: '#/components/schemas/ContentFilterEntry'
          type:
            - array
            - 'null'
        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
          type:
            - string
            - 'null'
        enable_free_model_publication:
          description: Whether this guardrail allows free endpoints that publish prompts.
          example: false
          type:
            - boolean
            - 'null'
        enable_free_model_training:
          description: >-
            Whether this guardrail allows free endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enable_paid_model_training:
          description: >-
            Whether this guardrail allows paid endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai,
            enforce_zdr_google, enforce_zdr_xai, and enforce_zdr_other instead.
            When provided, its value is copied into any of those per-provider
            fields that are not explicitly specified on the request.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_anthropic:
          description: >-
            Whether to enforce zero data retention for Anthropic models. Falls
            back to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_google:
          description: >-
            Whether to enforce zero data retention for Google models. Falls back
            to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_openai:
          description: >-
            Whether to enforce zero data retention for OpenAI models. Falls back
            to enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from
            Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when
            not provided.
          example: false
          type:
            - boolean
            - 'null'
        enforce_zdr_xai:
          description: >-
            Whether to enforce zero data retention for xAI models. Falls back to
            enforce_zdr when not provided.
          example: false
          type:
            - boolean
            - 'null'
        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
          type:
            - array
            - 'null'
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          type:
            - array
            - 'null'
        include_byok_in_budgets:
          description: >-
            Whether BYOK (bring-your-own-key) inference spend counts toward this
            guardrail's limit_usd, in addition to OpenRouter credit spend.
          example: false
          type: boolean
        limit_usd:
          description: Spending limit in USD
          example: 100
          format: double
          type:
            - number
            - 'null'
        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'
          type:
            - string
            - 'null'
        workspace_id:
          description: The workspace ID this guardrail belongs to.
          example: 0df9e665-d932-5740-b2c7-b52af166bc11
          type: string
      required:
        - id
        - name
        - include_byok_in_budgets
        - created_at
        - workspace_id
      type: object
    GuardrailInterval:
      description: Interval at which the limit resets (daily, weekly, monthly)
      enum:
        - daily
        - weekly
        - monthly
        - null
      example: monthly
      type:
        - string
        - 'null'
    ImageConfig:
      additionalProperties:
        anyOf:
          - type: string
          - format: double
            type: number
          - items: {}
            type: array
      description: >-
        Provider-specific image configuration options. Keys and values vary by
        model/provider. See
        https://openrouter.ai/docs/guides/overview/multimodal/image-generation
        for more details.
      example:
        aspect_ratio: '16:9'
        quality: high
      type: object
    ImageEndpoint:
      description: An endpoint that serves a given image model.
      example:
        allowed_passthrough_parameters: []
        pricing:
          - billable: output_image
            cost_usd: 0.05
            unit: image
        provider_name: Bytedance
        provider_slug: bytedance
        provider_tag: bytedance
        supported_parameters:
          resolution:
            type: enum
            values:
              - 1K
              - 2K
              - 4K
          seed:
            type: boolean
        supports_streaming: false
      properties:
        allowed_passthrough_parameters:
          description: >-
            Provider-specific options accepted under
            provider.options[provider_slug].
          example: []
          items:
            type: string
          type: array
        pricing:
          description: Billable pricing lines for this endpoint.
          example:
            - billable: output_image
              cost_usd: 0.05
              unit: image
          items:
            $ref: '#/components/schemas/ImagePricingEntry'
          type: array
        provider_name:
          description: Provider display name
          example: Bytedance
          type: string
        provider_slug:
          description: Provider slug
          example: bytedance
          type: string
        provider_tag:
          description: Provider tag for request-side selection
          example: bytedance
          type:
            - string
            - 'null'
        supported_parameters:
          allOf:
            - $ref: '#/components/schemas/SupportedParameters'
            - description: >-
                The definitive set of parameters this endpoint accepts for this
                model.
        supports_streaming:
          description: >-
            Whether this endpoint supports native SSE streaming (`stream: true`
            in the request).
          example: false
          type: boolean
      required:
        - provider_name
        - provider_slug
        - provider_tag
        - supported_parameters
        - allowed_passthrough_parameters
        - supports_streaming
        - pricing
      type: object
    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
    ImageGenCompletedEvent:
      description: Emitted when generation completes and the final image is available
      example:
        b64_json: <base64-encoded-final-image>
        created: 1748372400
        type: image_generation.completed
        usage:
          completion_tokens: 4175
          cost: 0.04
          prompt_tokens: 0
          total_tokens: 4175
      properties:
        b64_json:
          description: Base64-encoded final image data
          type: string
        created:
          description: Unix timestamp (seconds) when the image was generated
          type: integer
        media_type:
          description: >-
            Media type (MIME type) of the image, e.g. `image/png`, `image/jpeg`,
            `image/webp`, `image/svg+xml`. May be omitted if the format could
            not be determined.
          example: image/png
          type: string
        type:
          description: The event type
          enum:
            - image_generation.completed
          type: string
        usage:
          $ref: '#/components/schemas/ImageGenerationUsage'
      required:
        - type
        - b64_json
        - created
      type: object
    ImageGenerationProviderPreferences:
      description: >-
        Provider routing preferences and provider-specific passthrough
        configuration.
      example:
        allow_fallbacks: false
        only:
          - google-ai-studio
      properties:
        allow_fallbacks:
          description: >
            Whether to allow backup providers to serve requests

            - true: (default) when the primary provider (or your custom
            providers in "order") is unavailable, use the next best provider.

            - false: use only the primary/custom provider, and return the
            upstream error if it's unavailable.
          type:
            - boolean
            - 'null'
        ignore:
          description: >-
            List of provider slugs to ignore. If provided, this list is merged
            with your account-wide ignored provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        only:
          description: >-
            List of provider slugs to allow. If provided, this list is merged
            with your account-wide allowed provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        options:
          allOf:
            - $ref: '#/components/schemas/ProviderOptions'
            - example:
                black-forest-labs:
                  guidance: 3
                  steps: 40
        order:
          description: >-
            An ordered list of provider slugs. The router will attempt to use
            the first provider in the subset of this list that supports your
            requested model, and fall back to the next if it is unavailable. If
            no providers are available, the request will fail with an error
            message.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        sort:
          anyOf:
            - $ref: '#/components/schemas/ProviderSort'
            - $ref: '#/components/schemas/ProviderSortConfig'
            - type: 'null'
          description: >-
            The sorting strategy to use for this request, if "order" is not
            specified. When set, no load balancing is performed.
          example: price
      type: object
    ImageGenerationRequest:
      description: Image generation request input
      example:
        model: bytedance-seed/seedream-4.5
        prompt: a red panda astronaut floating in space, studio lighting
      properties:
        aspect_ratio:
          description: >-
            Normalized aspect ratio of the generated image. Providers clamp to
            their supported subset.
          enum:
            - '1:1'
            - '1:2'
            - '1:4'
            - '1:8'
            - '2:1'
            - '2:3'
            - '3:2'
            - '3:4'
            - '4:1'
            - '4:3'
            - '4:5'
            - '5:4'
            - '8:1'
            - '9:16'
            - '16:9'
            - '9:19.5'
            - 19.5:9
            - '9:20'
            - '20:9'
            - '9:21'
            - '21:9'
            - auto
          example: '16:9'
          type: string
        background:
          description: >-
            Background treatment. `transparent` requires an output_format that
            supports alpha (png or webp).
          enum:
            - auto
            - transparent
            - opaque
          example: auto
          type: string
        input_references:
          description: >-
            Reference images to guide image-to-image generation, as base64 data
            URLs or HTTP(S) URLs.
          items:
            $ref: '#/components/schemas/ContentPartImage'
          maxItems: 16
          type: array
        model:
          description: The image generation model to use
          example: bytedance-seed/seedream-4.5
          type: string
        'n':
          description: >-
            Number of images to generate (1-10). Providers that only support
            single-image generation reject n > 1.
          example: 1
          type: integer
        output_compression:
          description: >-
            Compression level (0-100) for webp/jpeg output. Ignored for png and
            by providers without a compression knob.
          example: 100
          type: integer
        output_format:
          description: >-
            Encoding of the returned image bytes. Most models produce raster
            formats (png, jpeg, webp). SVG is supported by vectorization models
            (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in
            `b64_json`.
          enum:
            - png
            - jpeg
            - webp
            - svg
          example: png
          type: string
        prompt:
          description: Text description of the desired image
          example: a red panda astronaut floating in space, studio lighting
          minLength: 1
          type: string
        provider:
          $ref: '#/components/schemas/ImageGenerationProviderPreferences'
        quality:
          description: Rendering quality. Providers without a quality knob ignore this.
          enum:
            - auto
            - low
            - medium
            - high
          example: high
          type: string
        resolution:
          description: >-
            Normalized resolution tier of the generated image. Concrete pixel
            dimensions are derived per-provider.
          enum:
            - '512'
            - 1K
            - 2K
            - 4K
          example: 2K
          type: string
        seed:
          description: >-
            If specified, the generation will sample deterministically, such
            that repeated requests with the same seed and parameters should
            return the same result. Determinism is not guaranteed for all
            providers.
          type: integer
        size:
          description: >-
            Optional. A convenience shorthand for output dimensions — pass a
            tier ("2K", "4K") or explicit pixels ("2048x2048") and we normalize
            it to the right dimensions for the chosen provider. A tier size is
            equivalent to setting `resolution` and combines with `aspect_ratio`.
            An explicit pixel size is authoritative: a mismatched `resolution`
            or `aspect_ratio` alongside it is rejected with a 400.
          example: 2K
          type: string
        stream:
          description: >-
            If true, partial images are streamed as SSE events as they become
            available. Only supported by providers with native streaming
            (currently OpenAI). Non-streaming providers ignore this flag and
            return a buffered response.
          type: boolean
      required:
        - model
        - prompt
      type: object
    ImageGenerationResponse:
      description: Image generation response
      example:
        created: 1748372400
        data:
          - b64_json: <base64-encoded-image>
        usage:
          completion_tokens: 4175
          cost: 0.04
          prompt_tokens: 0
          total_tokens: 4175
      properties:
        created:
          description: Unix timestamp (seconds) when the image was generated
          example: 1748372400
          type: integer
        data:
          description: Generated images
          items:
            properties:
              b64_json:
                description: Base64-encoded image bytes
                type: string
              media_type:
                description: >-
                  Media type (MIME type) of the image, e.g. `image/png`,
                  `image/jpeg`, `image/webp`, `image/svg+xml`. May be omitted if
                  the format could not be determined.
                example: image/png
                type: string
            required:
              - b64_json
            type: object
          type: array
        usage:
          $ref: '#/components/schemas/ImageGenerationUsage'
      required:
        - created
        - data
      type: object
    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
          type:
            - string
            - 'null'
        input_image_mask:
          properties:
            file_id:
              type: string
            image_url:
              type: string
          type: object
        model:
          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:
          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-5-image
          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: {}
            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
    ImageGenerationUsage:
      description: Token and cost usage for the image generation request, when available
      example:
        completion_tokens: 4175
        cost: 0.04
        prompt_tokens: 0
        total_tokens: 4175
      properties:
        cache_creation:
          $ref: '#/components/schemas/AnthropicCacheCreation'
        completion_tokens:
          description: The tokens generated
          type: integer
        completion_tokens_details:
          properties:
            audio_tokens:
              description: Tokens generated by the model for audio output.
              type:
                - integer
                - 'null'
            image_tokens:
              description: Tokens generated by the model for image output.
              type:
                - integer
                - 'null'
            reasoning_tokens:
              description: Tokens generated by the model for reasoning.
              type:
                - integer
                - 'null'
          type:
            - object
            - 'null'
        cost:
          description: Cost of the completion
          format: double
          type:
            - number
            - 'null'
        cost_details:
          $ref: '#/components/schemas/CostDetails'
        is_byok:
          description: Whether a request was made using a Bring Your Own Key configuration
          type: boolean
        iterations:
          items:
            $ref: '#/components/schemas/AnthropicUsageIteration'
          type:
            - array
            - 'null'
        prompt_tokens:
          description: Including images, input audio, and tools if any
          type: integer
        prompt_tokens_details:
          description: Breakdown of tokens used in the prompt.
          properties:
            audio_tokens:
              description: Tokens used for input audio.
              type:
                - integer
                - 'null'
            cache_write_tokens:
              description: >-
                Tokens written to cache. Only returned for models with explicit
                caching and cache write pricing.
              type:
                - integer
                - 'null'
            cached_tokens:
              description: Tokens cached by the endpoint.
              type:
                - integer
                - 'null'
            file_tokens:
              description: Tokens used for input files/documents.
              type:
                - integer
                - 'null'
            video_tokens:
              description: Tokens used for input video.
              type:
                - integer
                - 'null'
          type:
            - object
            - 'null'
        server_tool_use:
          description: Usage for server-side tool execution (e.g., web search)
          properties:
            tool_calls_executed:
              description: >-
                Number of OpenRouter server tool calls that executed and
                produced a result.
              type:
                - integer
                - 'null'
            tool_calls_requested:
              description: >-
                Total number of OpenRouter server-orchestrated tool calls the
                model requested, across all tool types. Provider-native tools
                (e.g. native web search) are not counted here.
              type:
                - integer
                - 'null'
            web_search_requests:
              description: >-
                Number of web searches performed by server-side tools. For
                server-orchestrated tool calls a web search is also counted in
                tool_calls_requested; provider-native web search may report
                web_search_requests only. Do not sum the two.
              type:
                - integer
                - 'null'
          type:
            - object
            - 'null'
        service_tier:
          description: The service tier used by the upstream provider for this request
          type:
            - string
            - 'null'
        speed:
          $ref: '#/components/schemas/AnthropicSpeed'
        total_tokens:
          description: Sum of the above two fields
          type: integer
      required:
        - prompt_tokens
        - completion_tokens
        - total_tokens
      type: object
    ImageGenPartialImageEvent:
      description: >-
        Emitted when a partial image becomes available during streaming
        generation
      example:
        b64_json: <base64-encoded-partial-image>
        partial_image_index: 0
        type: image_generation.partial_image
      properties:
        b64_json:
          description: Base64-encoded partial image data
          type: string
        partial_image_index:
          description: 0-based index indicating which partial image this is in the sequence
          type: integer
        type:
          description: The event type
          enum:
            - image_generation.partial_image
          type: string
      required:
        - type
        - partial_image_index
        - b64_json
      type: object
    ImageGenStreamErrorEvent:
      description: Emitted when streaming generation fails after the SSE response starts
      example:
        error:
          code: upstream_error
          message: The upstream provider returned an error
          param: null
          type: provider_error
        type: error
      properties:
        error:
          description: Provider error details
          properties:
            code:
              description: Provider error code, when supplied
              type:
                - string
                - 'null'
            message:
              description: Provider error message
              type: string
            param:
              description: Request parameter associated with the error, when supplied
              type:
                - string
                - 'null'
            type:
              description: Provider error type, when supplied
              type:
                - string
                - 'null'
          required:
            - message
          type: object
        type:
          description: The event type
          enum:
            - error
          type: string
      required:
        - type
        - error
      type: object
    ImageGenTextChunkEvent:
      description: >-
        Emitted when a text chunk becomes available during streaming generation
        of text-based formats (e.g. SVG)
      example:
        phase: content
        text: <svg xmlns="http://www.w3.org/2000/svg">
        type: image_generation.text_chunk
      properties:
        phase:
          description: >-
            The generation phase this chunk belongs to. `content` is the
            renderable output; `reasoning` and `draft` are intermediate provider
            phases.
          enum:
            - content
            - reasoning
            - draft
          type: string
        text:
          description: >-
            A text fragment of the image being generated (e.g. partial SVG
            markup)
          type: string
        type:
          description: The event type
          enum:
            - image_generation.text_chunk
          type: string
      required:
        - type
        - text
        - phase
      type: object
    ImageInputModality:
      enum:
        - text
        - image
        - file
        - audio
        - video
      example: text
      type: string
    ImageModelArchitecture:
      example:
        input_modalities:
          - text
          - image
        output_modalities:
          - image
      properties:
        input_modalities:
          description: Supported input modalities
          items:
            $ref: '#/components/schemas/ImageInputModality'
          type: array
        output_modalities:
          description: Supported output modalities
          items:
            $ref: '#/components/schemas/ImageOutputModality'
          type: array
      required:
        - input_modalities
        - output_modalities
      type: object
    ImageModelEndpointsResponse:
      description: The full per-endpoint records for an image model.
      example:
        endpoints:
          - allowed_passthrough_parameters: []
            pricing:
              - billable: output_image
                cost_usd: 0.05
                unit: image
            provider_name: Bytedance
            provider_slug: bytedance
            provider_tag: bytedance
            supported_parameters:
              resolution:
                type: enum
                values:
                  - 1K
                  - 2K
                  - 4K
            supports_streaming: false
        id: bytedance-seed/seedream-4.5
      properties:
        endpoints:
          items:
            $ref: '#/components/schemas/ImageEndpoint'
          type: array
        id:
          description: Model slug
          example: bytedance-seed/seedream-4.5
          type: string
      required:
        - id
        - endpoints
      type: object
    ImageModelListItem:
      description: A single image model in the discovery listing.
      example:
        architecture:
          input_modalities:
            - text
            - image
          output_modalities:
            - image
        created: 1692901234
        description: A text-to-image model.
        endpoints: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints
        id: bytedance-seed/seedream-4.5
        name: Seedream 4.5
        supported_parameters:
          resolution:
            type: enum
            values:
              - 1K
              - 2K
              - 4K
          seed:
            type: boolean
        supports_streaming: false
      properties:
        architecture:
          $ref: '#/components/schemas/ImageModelArchitecture'
        created:
          description: Unix timestamp (seconds) of when the model was created
          example: 1692901234
          type: integer
        description:
          example: A text-to-image model.
          type: string
        endpoints:
          description: Relative URL to the full per-endpoint records for this model
          example: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints
          type: string
        id:
          description: Model slug
          example: bytedance-seed/seedream-4.5
          type: string
        name:
          description: Display name
          example: Seedream 4.5
          type: string
        supported_parameters:
          $ref: '#/components/schemas/SupportedParameters'
        supports_streaming:
          description: >-
            Whether any endpoint of this model supports native SSE streaming on
            the dedicated Image API (i.e. `stream: true` in the request). OR
            across endpoints.
          example: false
          type: boolean
      required:
        - id
        - name
        - description
        - created
        - architecture
        - supported_parameters
        - supports_streaming
        - endpoints
      type: object
    ImageModelsListResponse:
      description: List of image generation models.
      example:
        data:
          - architecture:
              input_modalities:
                - text
              output_modalities:
                - image
            created: 1692901234
            description: A text-to-image model.
            endpoints: /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints
            id: bytedance-seed/seedream-4.5
            name: Seedream 4.5
            supported_parameters:
              resolution:
                type: enum
                values:
                  - 1K
                  - 2K
                  - 4K
            supports_streaming: false
      properties:
        data:
          items:
            $ref: '#/components/schemas/ImageModelListItem'
          type: array
      required:
        - data
      type: object
    ImageOutputModality:
      enum:
        - text
        - image
        - embeddings
        - audio
        - video
        - rerank
        - speech
        - transcription
      example: image
      type: string
    ImagePricingEntry:
      description: One billable pricing line for an image provider.
      example:
        billable: output_image
        cost_usd: 0.05
        unit: image
      properties:
        billable:
          enum:
            - output_image
            - input_image
            - input_font
            - input_reference
            - input_text
          type: string
        cost_usd:
          format: double
          type: number
        unit:
          enum:
            - image
            - megapixel
            - token
          type: string
        variant:
          type: string
      required:
        - billable
        - unit
        - cost_usd
      type: object
    ImageStreamingResponse:
      example:
        data:
          b64_json: <base64-encoded-partial-image>
          partial_image_index: 0
          type: image_generation.partial_image
      properties:
        data:
          anyOf:
            - $ref: '#/components/schemas/ImageGenPartialImageEvent'
            - $ref: '#/components/schemas/ImageGenTextChunkEvent'
            - $ref: '#/components/schemas/ImageGenCompletedEvent'
            - $ref: '#/components/schemas/ImageGenStreamErrorEvent'
      required:
        - data
      type: object
    IncompleteDetails:
      example:
        reason: max_output_tokens
      properties:
        reason:
          enum:
            - max_output_tokens
            - content_filter
          type: string
      type:
        - object
        - 'null'
    IncompleteEvent:
      description: Event emitted when a response is incomplete
      example:
        response:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
          type:
            - string
            - 'null'
        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
            - original
          type: string
        image_url:
          type:
            - string
            - 'null'
        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'
          type:
            - array
            - 'null'
        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
    InputReference:
      description: >-
        A reference asset used to guide video generation. Image references are
        supported by all providers; audio and video references are only honored
        by providers that support them (currently BytePlus Seedance 2.0).
      discriminator:
        mapping:
          audio_url: '#/components/schemas/ContentPartAudio'
          image_url: '#/components/schemas/ContentPartImage'
          video_url: '#/components/schemas/ContentPartVideo'
        propertyName: type
      example:
        image_url:
          url: https://example.com/image.png
        type: image_url
      oneOf:
        - $ref: '#/components/schemas/ContentPartImage'
        - $ref: '#/components/schemas/ContentPartAudio'
        - $ref: '#/components/schemas/ContentPartVideo'
    Inputs:
      anyOf:
        - type: string
        - items:
            anyOf:
              - $ref: '#/components/schemas/ReasoningItem'
              - $ref: '#/components/schemas/EasyInputMessage'
              - $ref: '#/components/schemas/InputMessageItem'
              - $ref: '#/components/schemas/FunctionCallItem'
              - $ref: '#/components/schemas/FunctionCallOutputItem'
              - $ref: '#/components/schemas/ApplyPatchCallItem'
              - $ref: '#/components/schemas/ApplyPatchCallOutputItem'
              - allOf:
                  - $ref: '#/components/schemas/OutputMessageItem'
                  - properties:
                      content:
                        anyOf:
                          - items:
                              anyOf:
                                - $ref: '#/components/schemas/ResponseOutputText'
                                - $ref: >-
                                    #/components/schemas/OpenAIResponsesRefusalContent
                            type: array
                          - type: string
                          - type: 'null'
                    type: object
                description: An output message item
                example:
                  content:
                    - annotations: []
                      text: Hello! How can I help you?
                      type: output_text
                  id: msg-123
                  role: assistant
                  status: completed
                  type: message
              - allOf:
                  - $ref: '#/components/schemas/OutputReasoningItem'
                  - properties:
                      summary:
                        items:
                          $ref: '#/components/schemas/ReasoningSummaryText'
                        type:
                          - array
                          - 'null'
                    type: object
                description: An output item containing reasoning
                example:
                  content:
                    - text: First, we analyze the problem...
                      type: reasoning_text
                  format: anthropic-claude-v1
                  id: reasoning-123
                  signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
                  status: completed
                  summary:
                    - text: Analyzed the problem and found the optimal solution.
                      type: summary_text
                  type: reasoning
              - $ref: '#/components/schemas/OutputFunctionCallItem'
              - $ref: '#/components/schemas/OutputCustomToolCallItem'
              - $ref: '#/components/schemas/OutputWebSearchCallItem'
              - $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'
              - $ref: '#/components/schemas/OutputFusionServerToolItem'
              - $ref: '#/components/schemas/OutputAdvisorServerToolItem'
              - $ref: '#/components/schemas/OutputSubagentServerToolItem'
              - $ref: '#/components/schemas/OutputFilesServerToolItem'
              - $ref: '#/components/schemas/LocalShellCallItem'
              - $ref: '#/components/schemas/LocalShellCallOutputItem'
              - $ref: '#/components/schemas/ShellCallItem'
              - $ref: '#/components/schemas/ShellCallOutputItem'
              - $ref: '#/components/schemas/McpListToolsItem'
              - $ref: '#/components/schemas/McpApprovalRequestItem'
              - $ref: '#/components/schemas/McpApprovalResponseItem'
              - $ref: '#/components/schemas/McpCallItem'
              - $ref: '#/components/schemas/CustomToolCallItem'
              - $ref: '#/components/schemas/CustomToolCallOutputItem'
              - $ref: '#/components/schemas/CompactionItem'
              - $ref: '#/components/schemas/ContextCompactionItem'
              - $ref: '#/components/schemas/ItemReferenceItem'
              - $ref: '#/components/schemas/AdditionalToolsItem'
              - $ref: '#/components/schemas/AgentMessageItem'
          type: array
      description: Input for a response request - can be a string or array of items
      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:
        prompt_cache_breakpoint:
          $ref: '#/components/schemas/PromptCacheBreakpoint'
        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
      type:
        - string
        - 'null'
    InternalServerResponse:
      description: Internal Server Error - Unexpected server error
      example:
        error:
          code: 500
          message: Internal Server Error
      properties:
        error:
          $ref: '#/components/schemas/InternalServerResponseErrorData'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    ItemReferenceItem:
      description: A reference to a previous response item by ID
      example:
        id: msg-abc123
        type: item_reference
      properties:
        id:
          type: string
        type:
          enum:
            - item_reference
          type: string
      required:
        - type
        - id
      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
          type:
            - string
            - 'null'
        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/Legacy_ChatContentVideoInput'
      required:
        - type
        - video_url
      type: object
    Legacy_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
    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, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          example: 5
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          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
    ListBYOKKeysResponse:
      example:
        data:
          - allowed_api_key_hashes: null
            allowed_models: null
            allowed_user_ids: null
            created_at: '2025-08-24T10:30:00Z'
            disabled: false
            id: 11111111-2222-3333-4444-555555555555
            is_fallback: false
            label: sk-...AbCd
            name: Production OpenAI Key
            provider: openai
            sort_order: 0
            workspace_id: 550e8400-e29b-41d4-a716-446655440000
        total_count: 1
      properties:
        data:
          description: List of BYOK credentials.
          items:
            $ref: '#/components/schemas/BYOKKey'
          type: array
        total_count:
          description: Total number of BYOK credentials matching the filters.
          example: 1
          type: integer
      required:
        - data
        - total_count
      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_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
              - 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'
            - 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
                  type:
                    - string
                    - 'null'
                output_modalities:
                  description: Supported output modalities
                  items:
                    $ref: '#/components/schemas/OutputModality'
                  type: array
                tokenizer:
                  anyOf:
                    - $ref: '#/components/schemas/ModelGroup'
                    - type: 'null'
              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
            content_filter_builtins:
              - action: redact
                label: '[EMAIL]'
                slug: email
            content_filters: null
            created_at: '2025-08-24T10:30:00Z'
            description: Guardrail for production environment
            enforce_zdr: null
            enforce_zdr_anthropic: true
            enforce_zdr_google: false
            enforce_zdr_openai: true
            enforce_zdr_other: false
            enforce_zdr_xai: false
            id: 550e8400-e29b-41d4-a716-446655440000
            ignored_models: null
            ignored_providers: null
            include_byok_in_budgets: false
            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
    ListObservabilityDestinationsResponse:
      example:
        data:
          - api_key_hashes: null
            config:
              baseUrl: https://us.cloud.langfuse.com
              publicKey: pk-l...EfGh
              secretKey: sk-l...AbCd
            created_at: '2025-08-24T10:30:00Z'
            enabled: true
            filter_rules: null
            id: 99999999-aaaa-bbbb-cccc-dddddddddddd
            name: Production Langfuse
            privacy_mode: false
            sampling_rate: 1
            type: langfuse
            updated_at: '2025-08-24T15:45:00Z'
            workspace_id: 550e8400-e29b-41d4-a716-446655440000
        total_count: 1
      properties:
        data:
          description: List of observability destinations.
          items:
            $ref: '#/components/schemas/ObservabilityDestination'
          type: array
        total_count:
          description: Total number of destinations matching the filters.
          example: 1
          type: integer
      required:
        - data
        - total_count
      type: object
    ListPresetsResponse:
      description: A paginated list of presets.
      example:
        data:
          - created_at: '2026-04-20T10:00:00Z'
            creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
            description: null
            designated_version_id: 550e8400-e29b-41d4-a716-446655440000
            id: 650e8400-e29b-41d4-a716-446655440001
            name: my-preset
            slug: my-preset
            status: active
            status_updated_at: null
            updated_at: '2026-04-20T10:00:00Z'
            workspace_id: 750e8400-e29b-41d4-a716-446655440002
        total_count: 1
      properties:
        data:
          items:
            $ref: '#/components/schemas/Preset'
          type: array
        total_count:
          type: integer
      required:
        - data
        - total_count
      type: object
    ListPresetVersionsResponse:
      description: A paginated list of preset versions.
      example:
        data:
          - config:
              model: openai/gpt-4o
              temperature: 0.7
            created_at: '2026-04-20T10:00:00Z'
            creator_id: user_2dHFtVWx2n56w6HkM0000000000
            id: 550e8400-e29b-41d4-a716-446655440000
            preset_id: 650e8400-e29b-41d4-a716-446655440001
            system_prompt: You are a helpful assistant.
            updated_at: '2026-04-20T10:00:00Z'
            version: 1
        total_count: 1
      properties:
        data:
          items:
            $ref: '#/components/schemas/PresetDesignatedVersion'
          type: array
        total_count:
          type: integer
      required:
        - data
        - total_count
      type: object
    ListWorkspaceBudgetsResponse:
      example:
        data:
          - created_at: '2025-08-24T10:30:00Z'
            id: 770e8400-e29b-41d4-a716-446655440000
            limit_usd: 100
            reset_interval: monthly
            updated_at: '2025-08-24T15:45:00Z'
            workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          description: List of budgets configured for the workspace
          items:
            $ref: '#/components/schemas/WorkspaceBudget'
          type: array
      required:
        - data
      type: object
    ListWorkspaceMembersResponse:
      example:
        data:
          - created_at: '2025-08-24T10:30:00Z'
            id: 660e8400-e29b-41d4-a716-446655440000
            role: member
            user_id: user_abc123
            workspace_id: 550e8400-e29b-41d4-a716-446655440000
        total_count: 1
      properties:
        data:
          description: List of workspace members
          items:
            $ref: '#/components/schemas/WorkspaceMember'
          type: array
        total_count:
          description: Total number of members in the workspace
          example: 5
          type: integer
      required:
        - data
        - total_count
      type: object
    ListWorkspacesResponse:
      example:
        data:
          - created_at: '2025-08-24T10:30:00Z'
            created_by: user_abc123
            default_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
            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
    LocalShellCallItem:
      description: A local shell command execution call
      example:
        action:
          command:
            - ls
            - '-la'
          env:
            PATH: /usr/bin
          timeout_ms: 5000
          type: exec
        call_id: call-abc123
        id: shell-abc123
        status: completed
        type: local_shell_call
      properties:
        action:
          properties:
            command:
              items:
                type: string
              type: array
            env:
              additionalProperties:
                type: string
              type: object
            timeout_ms:
              type:
                - integer
                - 'null'
            type:
              enum:
                - exec
              type: string
            user:
              type:
                - string
                - 'null'
            working_directory:
              type:
                - string
                - 'null'
          required:
            - type
            - command
            - env
          type: object
        call_id:
          type: string
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - local_shell_call
          type: string
      required:
        - type
        - id
        - call_id
        - action
        - status
      type: object
    LocalShellCallOutputItem:
      description: Output from a local shell command execution
      example:
        id: output-abc123
        output: |-
          total 24
          drwxr-xr-x  5 user  staff  160 Jan  1 12:00 .
        status: completed
        type: local_shell_call_output
      properties:
        id:
          type: string
        output:
          type: string
        status:
          anyOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - type: 'null'
        type:
          enum:
            - local_shell_call_output
          type: string
      required:
        - type
        - id
        - output
      type: object
    McpApprovalRequestItem:
      description: Request for approval to execute an MCP tool
      example:
        arguments: '{"id":"123"}'
        id: approval-abc123
        name: delete_record
        server_label: database-server
        type: mcp_approval_request
      properties:
        arguments:
          type: string
        id:
          type: string
        name:
          type: string
        server_label:
          type: string
        type:
          enum:
            - mcp_approval_request
          type: string
      required:
        - type
        - id
        - name
        - arguments
        - server_label
      type: object
    McpApprovalResponseItem:
      description: User response to an MCP tool approval request
      example:
        approval_request_id: approval-abc123
        approve: true
        reason: Approved for execution
        type: mcp_approval_response
      properties:
        approval_request_id:
          type: string
        approve:
          type: boolean
        id:
          type:
            - string
            - 'null'
        reason:
          type:
            - string
            - 'null'
        type:
          enum:
            - mcp_approval_response
          type: string
      required:
        - type
        - approval_request_id
        - approve
      type: object
    McpCallItem:
      description: An MCP tool call with its output or error
      example:
        arguments: '{"query":"SELECT * FROM users"}'
        id: mcp-call-abc123
        name: query_database
        output: '[{"id":1,"name":"Alice"}]'
        server_label: database-server
        type: mcp_call
      properties:
        arguments:
          type: string
        error:
          type:
            - string
            - 'null'
        id:
          type: string
        name:
          type: string
        output:
          type:
            - string
            - 'null'
        server_label:
          type: string
        type:
          enum:
            - mcp_call
          type: string
      required:
        - type
        - id
        - name
        - arguments
        - server_label
      type: object
    McpListToolsItem:
      description: List of available MCP tools from a server
      example:
        id: mcp-list-abc123
        server_label: database-server
        tools:
          - description: Execute a database query
            input_schema:
              properties:
                query:
                  type: string
              type: object
            name: query_database
        type: mcp_list_tools
      properties:
        error:
          type:
            - string
            - 'null'
        id:
          type: string
        server_label:
          type: string
        tools:
          items:
            properties:
              annotations: {}
              description:
                type:
                  - string
                  - 'null'
              input_schema:
                additionalProperties: {}
                type: object
              name:
                type: string
            required:
              - name
              - input_schema
            type: object
          type: array
        type:
          enum:
            - mcp_list_tools
          type: string
      required:
        - type
        - id
        - server_label
        - tools
      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
            - type: 'null'
        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
          type:
            - object
            - 'null'
        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
            - type: 'null'
        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
          type:
            - string
            - 'null'
        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
    MessagesAdvisorToolResultBlock:
      description: >-
        Advisor tool result from a prior assistant turn, replayed back to the
        model on the next turn. Mirrors the block Anthropic returns in assistant
        content when the `advisor_20260301` tool runs.
      example:
        content:
          text: Advisor response text
          type: advisor_result
        tool_use_id: srvtoolu_01abc
        type: advisor_tool_result
      properties:
        content:
          additionalProperties: {}
          type: object
        tool_use_id:
          type: string
        type:
          enum:
            - advisor_tool_result
          type: string
      required:
        - type
        - tool_use_id
        - content
      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:
                  type:
                    - string
                    - 'null'
                encrypted_content:
                  type:
                    - string
                    - 'null'
                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:
          citations: []
          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/ORAnthropicServerToolUseBlock'
            - $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'
            - $ref: '#/components/schemas/AnthropicAdvisorToolResult'
            - properties:
                content:
                  type:
                    - string
                    - 'null'
                encrypted_content:
                  type:
                    - string
                    - 'null'
                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:
          container: null
          stop_details: null
          stop_reason: end_turn
          stop_sequence: null
        type: message_delta
        usage:
          cache_creation_input_tokens: null
          cache_read_input_tokens: null
          input_tokens: null
          output_tokens: 15
          output_tokens_details: null
          server_tool_use: null
      properties:
        delta:
          properties:
            container:
              $ref: '#/components/schemas/AnthropicContainer'
            stop_details:
              $ref: '#/components/schemas/AnthropicRefusalStopDetails'
            stop_reason:
              $ref: '#/components/schemas/ORAnthropicStopReason'
            stop_sequence:
              type:
                - string
                - 'null'
          required:
            - container
            - stop_details
            - stop_reason
            - stop_sequence
          type: object
        type:
          enum:
            - message_delta
          type: string
        usage:
          properties:
            cache_creation:
              $ref: '#/components/schemas/AnthropicCacheCreation'
            cache_creation_input_tokens:
              type:
                - integer
                - 'null'
            cache_read_input_tokens:
              type:
                - integer
                - 'null'
            input_tokens:
              type:
                - integer
                - 'null'
            iterations:
              items:
                $ref: '#/components/schemas/AnthropicUsageIteration'
              type: array
            output_tokens:
              type: integer
            output_tokens_details:
              $ref: '#/components/schemas/AnthropicOutputTokensDetails'
            server_tool_use:
              properties:
                web_fetch_requests:
                  type: integer
                web_search_requests:
                  type: integer
              required:
                - web_search_requests
                - web_fetch_requests
              type:
                - object
                - 'null'
          required:
            - input_tokens
            - output_tokens
            - output_tokens_details
            - cache_creation_input_tokens
            - cache_read_input_tokens
            - server_tool_use
          type: object
      required:
        - type
        - delta
        - usage
      type: object
    MessagesErrorDetail:
      example:
        error_type: invalid_request
        message: Invalid request parameters
        type: invalid_request_error
      properties:
        error_type:
          $ref: '#/components/schemas/ApiErrorType'
        message:
          type: string
        type:
          type: string
      required:
        - type
        - message
      type: object
    MessagesErrorEvent:
      description: Error event in the stream
      example:
        error:
          error_type: provider_overloaded
          message: Overloaded
          type: overloaded_error
        type: error
      properties:
        error:
          properties:
            error_type:
              $ref: '#/components/schemas/ApiErrorType'
            message:
              type: string
            type:
              type: string
          required:
            - type
            - message
          type: object
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        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
    MessagesFallbackParam:
      additionalProperties: {}
      description: >-
        Fallback model to try when the primary model fails or refuses. Only the
        `model` field is supported; per-attempt overrides are rejected.
      example:
        model: claude-opus-4-8
      properties:
        model:
          type: string
      required:
        - model
      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: {}
                      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: {}
                      name:
                        type: string
                      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:
                        type:
                          - string
                          - 'null'
                      encrypted_content:
                        type:
                          - string
                          - 'null'
                      type:
                        enum:
                          - compaction
                        type: string
                    required:
                      - type
                      - content
                    type: object
                  - $ref: '#/components/schemas/MessagesAdvisorToolResultBlock'
                  - $ref: '#/components/schemas/MessagesToolAdditionBlock'
                  - $ref: '#/components/schemas/MessagesToolRemovalBlock'
              type: array
        role:
          enum:
            - user
            - assistant
            - system
          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
          type:
            - string
            - 'null'
        format:
          description: >-
            A schema to specify Claude's output format in responses. See
            [structured
            outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs).
          properties:
            schema:
              additionalProperties: {}
              type: object
            type:
              enum:
                - json_schema
              type: string
          required:
            - type
            - schema
          type:
            - object
            - 'null'
        task_budget:
          description: >-
            Task budget for an agentic turn. The model sees a countdown of
            remaining tokens and uses it to prioritize work and wind down
            gracefully. Advisory — does not enforce a hard cap.
          example:
            total: 400000
            type: tokens
          properties:
            remaining:
              minimum: 0
              type:
                - integer
                - 'null'
            total:
              minimum: 20000
              type: integer
            type:
              enum:
                - tokens
              type: string
          required:
            - type
            - total
          type:
            - object
            - 'null'
      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:
          properties:
            edits:
              items:
                oneOf:
                  - properties:
                      clear_at_least:
                        $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast'
                      clear_tool_inputs:
                        anyOf:
                          - type: boolean
                          - items:
                              type: string
                            type: array
                          - type: 'null'
                      exclude_tools:
                        items:
                          type: string
                        type:
                          - array
                          - 'null'
                      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:
                        type:
                          - string
                          - 'null'
                      pause_after_compaction:
                        type: boolean
                      trigger:
                        anyOf:
                          - allOf:
                              - $ref: >-
                                  #/components/schemas/AnthropicInputTokensTrigger
                              - properties: {}
                                type: object
                          - type: 'null'
                        example:
                          type: input_tokens
                          value: 100000
                      type:
                        enum:
                          - compact_20260112
                        type: string
                    required:
                      - type
                    type: object
              type: array
          type:
            - object
            - 'null'
        fallbacks:
          description: >-
            Fallback models to try if the primary model fails or refuses, in
            order. Handled by OpenRouter multi-model routing rather than
            Anthropic server-side fallbacks; cannot be combined with `models`.
            Each entry accepts only `model`. Maximum of 3 entries.
          example:
            - model: claude-opus-4-8
          items:
            $ref: '#/components/schemas/MessagesFallbackParam'
          type:
            - array
            - 'null'
        max_tokens:
          type: integer
        messages:
          items:
            $ref: '#/components/schemas/MessagesMessageParam'
          type:
            - array
            - 'null'
        metadata:
          properties:
            user_id:
              type:
                - string
                - 'null'
          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-beta-router: '#/components/schemas/AutoBetaRouterPlugin'
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                fusion: '#/components/schemas/FusionPlugin'
                moderation: '#/components/schemas/ModerationPlugin'
                pareto-router: '#/components/schemas/ParetoRouterPlugin'
                response-healing: '#/components/schemas/ResponseHealingPlugin'
                web: '#/components/schemas/WebSearchPlugin'
                web-fetch: '#/components/schemas/WebFetchPlugin'
              propertyName: id
            oneOf:
              - $ref: '#/components/schemas/AutoRouterPlugin'
              - $ref: '#/components/schemas/AutoBetaRouterPlugin'
              - $ref: '#/components/schemas/ModerationPlugin'
              - $ref: '#/components/schemas/WebSearchPlugin'
              - $ref: '#/components/schemas/WebFetchPlugin'
              - $ref: '#/components/schemas/FileParserPlugin'
              - $ref: '#/components/schemas/ResponseHealingPlugin'
              - $ref: '#/components/schemas/ContextCompressionPlugin'
              - $ref: '#/components/schemas/ParetoRouterPlugin'
              - $ref: '#/components/schemas/FusionPlugin'
          type: array
        provider:
          $ref: '#/components/schemas/ProviderPreferences'
        route:
          $ref: '#/components/schemas/DeprecatedRoute'
        service_tier:
          type: string
        session_id:
          description: >-
            A unique identifier for grouping related requests (e.g., a
            conversation or agent workflow). When provided, OpenRouter uses it
            as the sticky routing key, routing all requests in the session to
            the same provider to maximize prompt cache hits. Also used for
            observability grouping. If provided in both the request body and the
            x-session-id header, the body value takes precedence. Maximum of 256
            characters.
          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
        stop_server_tools_when:
          $ref: '#/components/schemas/StopServerToolsWhen'
        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'
                  defer_loading:
                    type: boolean
                  description:
                    type: string
                  input_schema:
                    additionalProperties: {}
                    properties:
                      properties: {}
                      required:
                        items:
                          type: string
                        type:
                          - array
                          - 'null'
                      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
                    type:
                      - array
                      - 'null'
                  blocked_domains:
                    items:
                      type: string
                    type:
                      - array
                      - 'null'
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  max_uses:
                    type:
                      - integer
                      - 'null'
                  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:
                    $ref: '#/components/schemas/AnthropicAllowedCallers'
                  allowed_domains:
                    items:
                      type: string
                    type:
                      - array
                      - 'null'
                  blocked_domains:
                    items:
                      type: string
                    type:
                      - array
                      - 'null'
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  max_uses:
                    type:
                      - integer
                      - 'null'
                  name:
                    enum:
                      - web_search
                    type: string
                  type:
                    enum:
                      - web_search_20260209
                    type: string
                  user_location:
                    $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation'
                required:
                  - type
                  - name
                type: object
              - properties:
                  allowed_callers:
                    $ref: '#/components/schemas/AnthropicAllowedCallers'
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  caching:
                    anyOf:
                      - $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      - type: 'null'
                  defer_loading:
                    type: boolean
                  max_uses:
                    type: integer
                  model:
                    type: string
                  name:
                    enum:
                      - advisor
                    type: string
                  type:
                    enum:
                      - advisor_20260301
                    type: string
                required:
                  - type
                  - name
                  - model
                type: object
              - $ref: '#/components/schemas/BashServerTool'
              - $ref: '#/components/schemas/DatetimeServerTool'
              - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
              - $ref: '#/components/schemas/MessagesSearchModelsServerTool'
              - $ref: '#/components/schemas/WebFetchServerTool'
              - $ref: '#/components/schemas/OpenRouterWebSearchServerTool'
              - additionalProperties: {}
                properties:
                  type:
                    type: string
                required:
                  - type
                type: object
              - $ref: '#/components/schemas/AnthropicToolSearchToolBm25'
              - $ref: '#/components/schemas/AnthropicToolSearchToolRegex'
          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:
              properties:
                applied_edits:
                  items:
                    additionalProperties: {}
                    properties:
                      type:
                        type: string
                    required:
                      - type
                    type: object
                  type: array
              required:
                - applied_edits
              type:
                - object
                - 'null'
            openrouter_metadata:
              $ref: '#/components/schemas/OpenRouterMetadata'
            provider:
              $ref: '#/components/schemas/ProviderName'
            usage:
              allOf:
                - $ref: '#/components/schemas/AnthropicUsage'
                - properties:
                    cost:
                      format: double
                      type:
                        - number
                        - 'null'
                    cost_details:
                      $ref: '#/components/schemas/CostDetails'
                    is_byok:
                      type: boolean
                    iterations:
                      items:
                        $ref: '#/components/schemas/AnthropicUsageIteration'
                      type: array
                    service_tier:
                      type:
                        - string
                        - 'null'
                    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
                output_tokens_details: null
                server_tool_use: null
                service_tier: standard
          type: object
      description: >-
        Non-streaming response from the Anthropic Messages API with OpenRouter
        extensions
      example:
        container: null
        content:
          - citations: []
            text: Hello! I'm doing well, thank you for asking.
            type: text
        id: msg_01XFDUDYJgAACzvnptvVoYEL
        model: claude-sonnet-4-5-20250929
        role: assistant
        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
          output_tokens_details: null
          server_tool_use: null
          service_tier: standard
    MessagesSearchModelsServerTool:
      description: >-
        OpenRouter built-in server tool: searches and filters AI models
        available on OpenRouter
      example:
        parameters:
          max_results: 5
        type: openrouter:experimental__search_models
      properties:
        parameters:
          $ref: '#/components/schemas/SearchModelsServerToolConfig'
        type:
          enum:
            - openrouter:experimental__search_models
          type: string
      required:
        - type
      type: object
    MessagesStartEvent:
      description: Event sent at the start of a streaming message
      example:
        message:
          container: null
          content: []
          id: msg_01XFDUDYJgAACzvnptvVoYEL
          model: claude-sonnet-4-5-20250929
          role: assistant
          stop_details: null
          stop_reason: null
          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: 0
            output_tokens_details: null
            server_tool_use: null
            service_tier: standard
        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
                - Hyperbolic 2
                - InoCloud
                - Kluster
                - Lambda
                - Lepton
                - Lynn 2
                - Lynn
                - Mancer
                - Modal
                - Nineteen
                - OctoAI
                - Recursal
                - Reflection
                - Replicate
                - SambaNova 2
                - SF Compute
                - Targon
                - Together 2
                - Ubicloud
                - 01.AI
                - AkashML
                - AI21
                - AionLabs
                - Alibaba
                - Ambient
                - Baidu
                - Amazon Bedrock
                - Amazon Nova
                - Anthropic
                - Arcee AI
                - AtlasCloud
                - Avian
                - Azure
                - BaseTen
                - BytePlus
                - Black Forest Labs
                - Cerebras
                - Chutes
                - Cirrascale
                - Claude Platform on AWS
                - Clarifai
                - Cloudflare
                - Cohere
                - CoreWeave
                - Crucible
                - Crusoe
                - Darkbloom
                - Decart
                - Deepgram
                - DeepInfra
                - DeepSeek
                - DekaLLM
                - DigitalOcean
                - Featherless
                - Fireworks
                - Fish Audio
                - Friendli
                - GMICloud
                - Google
                - Google AI Studio
                - Groq
                - HeyGen
                - Inception
                - Inceptron
                - InferenceNet
                - Ionstream
                - Infermatic
                - Io Net
                - Inferact vLLM
                - Inflection
                - Liquid
                - Mara
                - Mancer 2
                - Meta
                - Minimax
                - ModelRun
                - Mistral
                - Modular
                - Moonshot AI
                - Morph
                - VoyageAI by MongoDB
                - NCompass
                - Nebius
                - Nex AGI
                - NextBit
                - Novita
                - Nvidia
                - OpenAI
                - OpenInference
                - Parasail
                - Poolside
                - Perceptron
                - Perplexity
                - Phala
                - Recraft
                - Reka
                - Relace
                - Sail Research
                - Sakana AI
                - SambaNova
                - Seed
                - SiliconFlow
                - Sourceful
                - StepFun
                - Stealth
                - StreamLake
                - Switchpoint
                - Tencent
                - Tenstorrent
                - Together
                - Upstage
                - Venice
                - Wafer
                - WandB
                - Quiver
                - Krea
                - Runway
                - Xiaomi
                - xAI
                - Z.AI
                - FakeProvider
              type: string
            role:
              enum:
                - assistant
              type: string
            stop_details:
              $ref: '#/components/schemas/AnthropicRefusalStopDetails'
            stop_reason: {}
            stop_sequence: {}
            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
                output_tokens_details: null
                server_tool_use: null
                service_tier: standard
          required:
            - id
            - type
            - role
            - container
            - content
            - model
            - stop_reason
            - stop_details
            - stop_sequence
            - usage
          type: object
        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:
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        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'
    MessagesStreamingResponse:
      example:
        data:
          delta:
            text: Hello
            type: text_delta
          index: 0
          type: content_block_delta
        event: content_block_delta
      properties:
        data:
          $ref: '#/components/schemas/MessagesStreamEvents'
        event:
          type: string
      required:
        - event
        - data
      type: object
    MessagesToolAdditionBlock:
      description: >-
        Loads a previously deferred tool (declared in `tools` with
        `defer_loading: true`) mid-conversation without invalidating the prompt
        cache. Only valid in `role: "system"` messages. Not supported on Claude
        Sonnet 5 or models older than Claude Opus 4.8.
      example:
        tool:
          name: get_forecast
          type: tool_reference
        type: tool_addition
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        tool:
          oneOf:
            - properties:
                name:
                  type: string
                type:
                  enum:
                    - tool_reference
                  type: string
              required:
                - type
                - name
              type: object
            - properties:
                name:
                  type: string
                server_name:
                  type: string
                type:
                  enum:
                    - mcp_tool_reference
                  type: string
              required:
                - type
                - name
                - server_name
              type: object
            - properties:
                server_name:
                  type: string
                type:
                  enum:
                    - mcp_toolset_reference
                  type: string
              required:
                - type
                - server_name
              type: object
        type:
          enum:
            - tool_addition
          type: string
      required:
        - type
        - tool
      type: object
    MessagesToolRemovalBlock:
      description: >-
        Removes a tool from the conversation mid-conversation without
        invalidating the prompt cache. Only valid in `role: "system"` messages.
        Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.
      example:
        tool:
          name: get_weather
          type: tool_reference
        type: tool_removal
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        tool:
          oneOf:
            - properties:
                name:
                  type: string
                type:
                  enum:
                    - tool_reference
                  type: string
              required:
                - type
                - name
              type: object
            - properties:
                name:
                  type: string
                server_name:
                  type: string
                type:
                  enum:
                    - mcp_tool_reference
                  type: string
              required:
                - type
                - name
                - server_name
              type: object
            - properties:
                server_name:
                  type: string
                type:
                  enum:
                    - mcp_toolset_reference
                  type: string
              required:
                - type
                - server_name
              type: object
        type:
          enum:
            - tool_removal
          type: string
      required:
        - type
        - tool
      type: object
    MetadataLevel:
      description: >-
        Opt-in level for surfacing routing metadata on the response under
        `openrouter_metadata`.
      enum:
        - disabled
        - enabled
      example: enabled
      type: string
    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'
        reasoning:
          default_effort: medium
          default_enabled: true
          mandatory: false
          supported_efforts:
            - high
            - medium
            - low
            - minimal
        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'
        benchmarks:
          $ref: '#/components/schemas/ModelBenchmarks'
        canonical_slug:
          description: Canonical slug for the model
          example: openai/gpt-4
          type: string
        context_length:
          description: Maximum context length in tokens
          example: 8192
          type:
            - integer
            - 'null'
        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'
          type:
            - string
            - 'null'
        hugging_face_id:
          description: Hugging Face model identifier, if applicable
          example: microsoft/DialoGPT-medium
          type:
            - string
            - 'null'
        id:
          description: Unique identifier for the model
          example: openai/gpt-4
          type: string
        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'
          type:
            - string
            - 'null'
        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'
        reasoning:
          $ref: '#/components/schemas/ModelReasoning'
        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
          type:
            - array
            - 'null'
        top_provider:
          $ref: '#/components/schemas/TopProviderInfo'
      required:
        - id
        - canonical_slug
        - name
        - created
        - pricing
        - context_length
        - architecture
        - top_provider
        - per_request_limits
        - supported_parameters
        - default_parameters
        - supported_voices
        - links
      type: object
    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:
          $ref: '#/components/schemas/InstructType'
        modality:
          description: Primary modality of the model
          example: text->text
          type:
            - string
            - 'null'
        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
    ModelBenchmarks:
      description: >-
        Third-party benchmark rankings for this model. Omitted when no benchmark
        data is available.
      example:
        artificial_analysis:
          agentic_index: 55.8
          coding_index: 63.2
          intelligence_index: 71.4
        design_arena:
          - arena: models
            category: website
            elo: 1385.2
            rank: 5
            win_rate: 62.5
      properties:
        artificial_analysis:
          $ref: '#/components/schemas/AABenchmarkEntry'
        design_arena:
          description: Design Arena ELO rankings across arena+category pairs.
          example:
            - arena: models
              category: website
              elo: 1385.2
              rank: 5
              win_rate: 62.5
          items:
            $ref: '#/components/schemas/DABenchmarkEntry'
          type: array
      required:
        - design_arena
      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
    ModelReasoning:
      description: >-
        Reasoning effort configuration. Omitted for non-reasoning models and
        dynamic router models.
      example:
        default_effort: medium
        default_enabled: true
        mandatory: false
        supported_efforts:
          - high
          - medium
          - low
          - minimal
      properties:
        default_effort:
          allOf:
            - $ref: '#/components/schemas/ReasoningEffort'
            - description: >-
                Default reasoning effort when the client enables reasoning
                without specifying effort. Maps to `reasoning.effort` in chat
                requests. When `"none"`, prefer omitting effort unless the user
                explicitly disables reasoning.
        default_enabled:
          description: >-
            Default reasoning enabled state when the client does not set
            `reasoning.enabled`.
          type: boolean
        mandatory:
          description: >-
            When true, reasoning cannot be disabled and effort "none" is
            rejected.
          type: boolean
        supported_efforts:
          description: >-
            Allowed reasoning effort values for this model, in descending effort
            order (highest first). Null means no allowlist — all gateway effort
            values are accepted.
          items:
            $ref: '#/components/schemas/ReasoningEffort'
          type:
            - array
            - 'null'
        supports_max_tokens:
          description: >-
            Present and `true` when the model accepts `reasoning.max_tokens` in
            requests (Anthropic-style) instead of or in addition to
            `reasoning.effort`. Omitted otherwise.
          type: boolean
      required:
        - mandatory
      type: object
    ModelResponse:
      description: Single model response
      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-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:
        data:
          $ref: '#/components/schemas/Model'
      required:
        - data
      type: object
    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-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
        links:
          next: /api/v1/models?offset=500&limit=500
        total_count: 150
      properties:
        data:
          $ref: '#/components/schemas/ModelsListResponseData'
        links:
          description: Pagination links
          properties:
            next:
              description: >-
                URL for the next page of results, or null if this is the last
                page
              example: /api/v1/models?offset=500&limit=500
              type:
                - string
                - 'null'
          required:
            - next
          type: object
        total_count:
          description: Total number of models matching the query
          example: 150
          type: integer
      required:
        - data
        - total_count
        - links
      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-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
    MultimodalMedia:
      example:
        data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...
        format: wav
      properties:
        data:
          type: string
        format:
          type: string
      required:
        - data
      type: object
    NamespaceFunctionTool:
      description: A function tool grouped inside a namespace tool
      example:
        name: spawn_agent
        type: function
      properties:
        allowed_callers:
          items:
            enum:
              - direct
              - programmatic
            type: string
          type:
            - array
            - 'null'
        defer_loading:
          type: boolean
        description:
          type:
            - string
            - 'null'
        name:
          type: string
        output_schema:
          additionalProperties: {}
          type:
            - object
            - 'null'
        parameters:
          additionalProperties: {}
          type:
            - object
            - 'null'
        strict:
          type:
            - boolean
            - 'null'
        type:
          enum:
            - function
          type: string
      required:
        - type
        - name
      type: object
    NamespaceTool:
      description: Groups function/custom tools under a shared namespace
      example:
        description: Tools for spawning and managing sub-agents.
        name: multi_agent_v1
        tools:
          - name: spawn_agent
            type: function
        type: namespace
      properties:
        description:
          type: string
        name:
          type: string
        tools:
          items:
            anyOf:
              - $ref: '#/components/schemas/NamespaceFunctionTool'
              - $ref: '#/components/schemas/CustomTool'
          type: array
        type:
          enum:
            - namespace
          type: string
      required:
        - type
        - name
        - description
        - tools
      type: object
    NotFoundResponse:
      description: Not Found - Resource does not exist
      example:
        error:
          code: 404
          message: Resource not found
      properties:
        error:
          $ref: '#/components/schemas/NotFoundResponseErrorData'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    ObservabilityArizeDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: arize_...AbCd
          baseUrl: https://otlp.arize.com
          modelId: openrouter-prod
          spaceKey: space_...EfGh
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Arize
        privacy_mode: false
        sampling_rate: 1
        type: arize
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            baseUrl:
              default: https://otlp.arize.com
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            modelId:
              description: The name of the tracing project in Arize AX
              minLength: 1
              type: string
            spaceKey:
              minLength: 1
              type: string
          required:
            - apiKey
            - spaceKey
            - modelId
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - arize
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityBraintrustDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: sk-...AbCd
          baseUrl: https://api.braintrust.dev
          projectId: proj_...
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Braintrust
        privacy_mode: false
        sampling_rate: 1
        type: braintrust
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            baseUrl:
              default: https://api.braintrust.dev
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            projectId:
              minLength: 1
              type: string
          required:
            - apiKey
            - projectId
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - braintrust
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityClickhouseDestination:
      example:
        api_key_hashes: null
        config:
          database: analytics
          host: https://clickhouse.example.com:8123
          password: '********'
          table: OPENROUTER_TRACES
          username: default
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production ClickHouse
        privacy_mode: false
        sampling_rate: 1
        type: clickhouse
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            database:
              minLength: 1
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            host:
              minLength: 1
              type: string
            password:
              minLength: 1
              type: string
            table:
              default: OPENROUTER_TRACES
              type: string
            username:
              description: >-
                If you have not set a specific username in ClickHouse, simply
                type in 'default' below.
              minLength: 1
              type: string
          required:
            - host
            - database
            - username
            - password
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - clickhouse
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityDatadogDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: '************...AbCd'
          mlApp: my-llm-app
          url: https://api.us5.datadoghq.com
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Datadog
        privacy_mode: false
        sampling_rate: 1
        type: datadog
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              description: >-
                Datadog API key must have LLM Observability permissions. Create
                at: 
              minLength: 1
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            mlApp:
              description: Name to identify your application in Datadog LLM Observability
              minLength: 1
              type: string
            url:
              default: https://api.us5.datadoghq.com
              description: >-
                Datadog API URL for your region (e.g.,
                https://api.datadoghq.com, https://api.us3.datadoghq.com,
                https://api.datadoghq.eu)
              type: string
          required:
            - apiKey
            - mlApp
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - datadog
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityDestination:
      discriminator:
        mapping:
          arize: '#/components/schemas/ObservabilityArizeDestination'
          braintrust: '#/components/schemas/ObservabilityBraintrustDestination'
          clickhouse: '#/components/schemas/ObservabilityClickhouseDestination'
          datadog: '#/components/schemas/ObservabilityDatadogDestination'
          grafana: '#/components/schemas/ObservabilityGrafanaDestination'
          langfuse: '#/components/schemas/ObservabilityLangfuseDestination'
          langsmith: '#/components/schemas/ObservabilityLangsmithDestination'
          newrelic: '#/components/schemas/ObservabilityNewrelicDestination'
          opik: '#/components/schemas/ObservabilityOpikDestination'
          otel-collector: '#/components/schemas/ObservabilityOtelCollectorDestination'
          posthog: '#/components/schemas/ObservabilityPosthogDestination'
          ramp: '#/components/schemas/ObservabilityRampDestination'
          s3: '#/components/schemas/ObservabilityS3Destination'
          sentry: '#/components/schemas/ObservabilitySentryDestination'
          snowflake: '#/components/schemas/ObservabilitySnowflakeDestination'
          weave: '#/components/schemas/ObservabilityWeaveDestination'
          webhook: '#/components/schemas/ObservabilityWebhookDestination'
        propertyName: type
      example:
        api_key_hashes: null
        config:
          baseUrl: https://us.cloud.langfuse.com
          publicKey: pk-l...EfGh
          secretKey: sk-l...AbCd
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Langfuse
        privacy_mode: false
        sampling_rate: 1
        type: langfuse
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      oneOf:
        - $ref: '#/components/schemas/ObservabilityArizeDestination'
        - $ref: '#/components/schemas/ObservabilityBraintrustDestination'
        - $ref: '#/components/schemas/ObservabilityClickhouseDestination'
        - $ref: '#/components/schemas/ObservabilityDatadogDestination'
        - $ref: '#/components/schemas/ObservabilityGrafanaDestination'
        - $ref: '#/components/schemas/ObservabilityLangfuseDestination'
        - $ref: '#/components/schemas/ObservabilityLangsmithDestination'
        - $ref: '#/components/schemas/ObservabilityNewrelicDestination'
        - $ref: '#/components/schemas/ObservabilityOpikDestination'
        - $ref: '#/components/schemas/ObservabilityOtelCollectorDestination'
        - $ref: '#/components/schemas/ObservabilityPosthogDestination'
        - $ref: '#/components/schemas/ObservabilityRampDestination'
        - $ref: '#/components/schemas/ObservabilityS3Destination'
        - $ref: '#/components/schemas/ObservabilitySentryDestination'
        - $ref: '#/components/schemas/ObservabilitySnowflakeDestination'
        - $ref: '#/components/schemas/ObservabilityWeaveDestination'
        - $ref: '#/components/schemas/ObservabilityWebhookDestination'
    ObservabilityFilterRuleGroup:
      example:
        logic: and
        rules:
          - field: model
            operator: equals
            value: openai/gpt-4o
      properties:
        logic:
          default: and
          enum:
            - and
            - or
          type: string
        rules:
          items:
            properties:
              field:
                enum:
                  - model
                  - provider
                  - session_id
                  - user_id
                  - api_key_name
                  - finish_reason
                  - input
                  - output
                  - total_cost
                  - total_tokens
                  - prompt_tokens
                  - completion_tokens
                type: string
              operator:
                enum:
                  - equals
                  - not_equals
                  - contains
                  - not_contains
                  - regex
                  - starts_with
                  - ends_with
                  - gt
                  - lt
                  - gte
                  - lte
                  - exists
                  - not_exists
                type: string
              value:
                anyOf:
                  - type: string
                  - type: number
            required:
              - field
              - operator
            type: object
          type: array
      required:
        - rules
      type: object
    ObservabilityFilterRulesConfig:
      description: Optional structured filter rules controlling which events are forwarded.
      example: null
      properties:
        enabled:
          default: true
          type: boolean
        groups:
          items:
            $ref: '#/components/schemas/ObservabilityFilterRuleGroup'
          type: array
      required:
        - groups
      type:
        - object
        - 'null'
    ObservabilityFilterRulesConfigNullable:
      description: Optional structured filter rules controlling which events are forwarded.
      example: null
      properties:
        enabled:
          default: true
          type: boolean
        groups:
          items:
            $ref: '#/components/schemas/ObservabilityFilterRuleGroup'
          type: array
      required:
        - groups
      type:
        - object
        - 'null'
    ObservabilityGrafanaDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: glc_...AbCd
          baseUrl: https://otlp-gateway-prod-us-west-0.grafana.net
          instanceId: '123456'
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Grafana
        privacy_mode: false
        sampling_rate: 1
        type: grafana
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            baseUrl:
              default: https://otlp-gateway-prod-us-west-0.grafana.net
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            instanceId:
              minLength: 1
              type: string
          required:
            - apiKey
            - instanceId
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - grafana
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityLangfuseDestination:
      example:
        api_key_hashes: null
        config:
          baseUrl: https://us.cloud.langfuse.com
          publicKey: pk-l...EfGh
          secretKey: sk-l...AbCd
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Langfuse
        privacy_mode: false
        sampling_rate: 1
        type: langfuse
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            baseUrl:
              default: https://us.cloud.langfuse.com
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            publicKey:
              minLength: 1
              type: string
            secretKey:
              minLength: 1
              type: string
          required:
            - secretKey
            - publicKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - langfuse
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityLangsmithDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: lsv2_...AbCd
          endpoint: https://api.smith.langchain.com
          project: main
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production LangSmith
        privacy_mode: false
        sampling_rate: 1
        type: langsmith
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            endpoint:
              default: https://api.smith.langchain.com
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            project:
              default: main
              description: >-
                The name for this project, such as pr-openrouter-demo. Defaults
                to "main" if not set.
              minLength: 1
              type: string
            workspaceId:
              description: >-
                Required for org-scoped API keys. Find this in your LangSmith
                workspace settings.
              type: string
          required:
            - apiKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - langsmith
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityNewrelicDestination:
      example:
        api_key_hashes: null
        config:
          licenseKey: '****...AbCd'
          region: us
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production New Relic
        privacy_mode: false
        sampling_rate: 1
        type: newrelic
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            licenseKey:
              minLength: 1
              type: string
            region:
              default: us
              enum:
                - us
                - eu
              type: string
          required:
            - licenseKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - newrelic
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityOpikDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: '****...AbCd'
          projectName: openrouter-prod
          workspace: my-workspace
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Opik
        privacy_mode: false
        sampling_rate: 1
        type: opik
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            projectName:
              minLength: 1
              type: string
            workspace:
              minLength: 1
              type: string
          required:
            - apiKey
            - workspace
            - projectName
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - opik
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityOtelCollectorDestination:
      example:
        api_key_hashes: null
        config:
          endpoint: https://otel.example.com:4318
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production OTel Collector
        privacy_mode: false
        sampling_rate: 1
        type: otel-collector
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            endpoint:
              type: string
            headers:
              additionalProperties:
                type: string
              description: >-
                Custom HTTP headers as a JSON object. For Axiom, use
                {"Authorization": "Bearer xaat-xxx", "X-Axiom-Dataset":
                "your-dataset"}
              type: object
          required:
            - endpoint
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - otel-collector
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityPosthogDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: phc_...AbCd
          endpoint: https://us.i.posthog.com
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production PostHog
        privacy_mode: false
        sampling_rate: 1
        type: posthog
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            endpoint:
              default: https://us.i.posthog.com
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
          required:
            - apiKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - posthog
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityRampDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: rmp_...AbCd
          baseUrl: https://api.ramp.com/developer/v1/ai-usage/openrouter
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Ramp
        privacy_mode: false
        sampling_rate: 1
        type: ramp
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              description: Generate this in your Ramp integration settings.
              minLength: 1
              type: string
            baseUrl:
              default: https://api.ramp.com/developer/v1/ai-usage/openrouter
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to Ramp.
              type: object
          required:
            - apiKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - ramp
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityS3Destination:
      example:
        api_key_hashes: null
        config:
          accessKeyId: AKIA...AbCd
          bucketName: openrouter-traces
          secretAccessKey: '****...EfGh'
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production S3
        privacy_mode: false
        sampling_rate: 1
        type: s3
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            accessKeyId:
              minLength: 1
              type: string
            bucketName:
              minLength: 1
              type: string
            endpoint:
              description: >-
                Only for S3-compatible services like Cloudflare R2
                (https://account-id.r2.cloudflarestorage.com) or MinIO. Leave
                blank for standard AWS S3.
              format: uri
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            pathTemplate:
              default: '{prefix}/{date}'
              description: >-
                Template for S3 object path. The filename
                ({traceId}-{timestamp}.json) is automatically appended.
                Available variables: {prefix}, {date}, {year}, {month}, {day},
                {apiKeyName}
              type: string
            prefix:
              default: openrouter-traces
              type: string
            region:
              type: string
            secretAccessKey:
              minLength: 1
              type: string
            sessionToken:
              type: string
          required:
            - bucketName
            - accessKeyId
            - secretAccessKey
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - s3
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilitySentryDestination:
      example:
        api_key_hashes: null
        config:
          dsn: https://abc123@o0.ingest.sentry.io/0
          otlpEndpoint: https://o0.ingest.sentry.io/api/0/otlp
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Sentry
        privacy_mode: false
        sampling_rate: 1
        type: sentry
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            dsn:
              minLength: 1
              pattern: ^https:\/\/([^:@]+)(?::[^@]*)?@([^/]+)(?:\/[^/]+)*\/(\d+)\/?$
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            otlpEndpoint:
              type: string
          required:
            - otlpEndpoint
            - dsn
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - sentry
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilitySnowflakeDestination:
      example:
        api_key_hashes: null
        config:
          account: xy12345.us-east-1
          token: '****...AbCd'
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Snowflake
        privacy_mode: false
        sampling_rate: 1
        type: snowflake
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            account:
              minLength: 1
              type: string
            database:
              default: SNOWFLAKE_LEARNING_DB
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            schema:
              default: PUBLIC
              type: string
            table:
              default: OPENROUTER_TRACES
              type: string
            token:
              minLength: 1
              type: string
            warehouse:
              default: COMPUTE_WH
              type: string
          required:
            - account
            - token
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - snowflake
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityWeaveDestination:
      example:
        api_key_hashes: null
        config:
          apiKey: '****...AbCd'
          baseUrl: https://trace.wandb.ai
          entity: my-team
          project: openrouter-prod
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Weave
        privacy_mode: false
        sampling_rate: 1
        type: weave
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            apiKey:
              minLength: 1
              type: string
            baseUrl:
              default: https://trace.wandb.ai
              type: string
            entity:
              minLength: 1
              type: string
            headers:
              additionalProperties:
                type: string
              description: Custom HTTP headers to include in requests to this destination.
              type: object
            project:
              minLength: 1
              type: string
          required:
            - apiKey
            - entity
            - project
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - weave
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    ObservabilityWebhookDestination:
      example:
        api_key_hashes: null
        config:
          url: https://example.com/openrouter-events
        created_at: '2025-08-24T10:30:00Z'
        enabled: true
        filter_rules: null
        id: 99999999-aaaa-bbbb-cccc-dddddddddddd
        name: Production Webhook
        privacy_mode: false
        sampling_rate: 1
        type: webhook
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes (`api_keys.hash`)
            whose traffic is forwarded to this destination. `null` means all
            keys.
          example: null
          items:
            type: string
          type:
            - array
            - 'null'
        config:
          properties:
            headers:
              additionalProperties:
                type: string
              type: object
            method:
              default: POST
              enum:
                - POST
                - PUT
              type: string
            url:
              type: string
          required:
            - url
          type: object
        created_at:
          description: ISO timestamp of when the destination was created.
          example: '2025-08-24T10:30:00Z'
          type: string
        enabled:
          description: Whether this destination is currently enabled.
          example: true
          type: boolean
        filter_rules:
          $ref: '#/components/schemas/ObservabilityFilterRulesConfig'
        id:
          description: Stable public identifier for this destination.
          example: 99999999-aaaa-bbbb-cccc-dddddddddddd
          format: uuid
          type: string
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type:
            - string
            - 'null'
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded to this
            destination — only metadata.
          example: false
          type: boolean
        sampling_rate:
          description: >-
            Sampling rate for events sent to this destination, between 0.0001
            and 1 (1 = 100%).
          example: 1
          format: double
          type: number
        type:
          enum:
            - webhook
          type: string
        updated_at:
          description: ISO timestamp of when the destination was last updated.
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace this destination belongs to.
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - name
        - enabled
        - privacy_mode
        - sampling_rate
        - api_key_hashes
        - filter_rules
        - created_at
        - updated_at
        - type
        - config
      type: object
    OpenAIResponseCustomToolCall:
      example:
        call_id: call-abc123
        id: ctc-abc123
        input: |-
          *** Begin Patch
          *** End Patch
        name: apply_patch
        type: custom_tool_call
      properties:
        call_id:
          type: string
        id:
          type: string
        input:
          type: string
        name:
          type: string
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        type:
          enum:
            - custom_tool_call
          type: string
      required:
        - type
        - call_id
        - name
        - input
      type: object
    OpenAIResponseCustomToolCallOutput:
      example:
        call_id: call-abc123
        output: patch applied successfully
        type: custom_tool_call_output
      properties:
        call_id:
          type: string
        id:
          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
        type:
          enum:
            - custom_tool_call_output
          type: string
      required:
        - type
        - call_id
        - output
      type: object
    OpenAIResponseFunctionToolCall:
      example:
        arguments: '{"location":"San Francisco"}'
        call_id: call-abc123
        id: fc-abc123
        name: get_weather
        status: completed
        type: function_call
      properties:
        arguments:
          type: string
        call_id:
          type: string
        id:
          type: string
        name:
          type: string
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - function_call
          type: string
      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:
          type:
            - string
            - 'null'
        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:
          anyOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - type: 'null'
        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'
        - properties:
            type:
              enum:
                - apply_patch
              type: string
          required:
            - type
          type: object
        - properties:
            type:
              enum:
                - shell
              type: string
          required:
            - type
          type: object
      example: auto
    OpenAIResponsesTruncation:
      enum:
        - auto
        - disabled
        - null
      example: auto
      type:
        - string
        - 'null'
    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:
            cache_write_tokens:
              type:
                - integer
                - 'null'
            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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
            error_type:
              $ref: '#/components/schemas/ApiErrorType'
            openrouter_metadata:
              $ref: '#/components/schemas/OpenRouterMetadata'
            output:
              items:
                $ref: '#/components/schemas/OutputItems'
              type: array
            service_tier:
              type:
                - string
                - 'null'
            text:
              $ref: '#/components/schemas/TextExtendedConfig'
            usage:
              $ref: '#/components/schemas/Usage'
          type: object
      description: Complete non-streaming response from the Responses API
      example:
        completed_at: 1704067210
        created_at: 1704067200
        error: null
        frequency_penalty: 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
        presence_penalty: null
        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
    OpenRouterMetadata:
      example:
        attempt: 1
        endpoints:
          available:
            - model: openai/gpt-4o
              provider: OpenAI
              selected: true
          total: 1
        is_byok: false
        region: iad
        requested: openai/gpt-4o
        strategy: direct
        summary: available=1, selected=OpenAI
      properties:
        attempt:
          type: integer
        attempts:
          items:
            $ref: '#/components/schemas/RouterAttempt'
          type: array
        endpoints:
          $ref: '#/components/schemas/EndpointsMetadata'
        is_byok:
          type: boolean
        params:
          $ref: '#/components/schemas/RouterParams'
        pipeline:
          items:
            $ref: '#/components/schemas/PipelineStage'
          type: array
        region:
          type:
            - string
            - 'null'
        requested:
          type: string
        strategy:
          $ref: '#/components/schemas/RoutingStrategy'
        summary:
          type: string
      required:
        - requested
        - strategy
        - region
        - summary
        - attempt
        - is_byok
        - endpoints
      type: object
    OpenRouterWebSearchServerTool:
      description: >-
        OpenRouter built-in server tool: searches the web for current
        information
      example:
        parameters:
          max_results: 5
        type: openrouter:web_search
      properties:
        parameters:
          $ref: '#/components/schemas/WebSearchConfig'
        type:
          enum:
            - openrouter:web_search
          type: string
      required:
        - type
      type: object
    ORAnthropicContentBlock:
      discriminator:
        mapping:
          advisor_tool_result: '#/components/schemas/AnthropicAdvisorToolResult'
          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/ORAnthropicServerToolUseBlock'
          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/ORAnthropicServerToolUseBlock'
        - $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'
        - $ref: '#/components/schemas/AnthropicAdvisorToolResult'
    ORAnthropicNullableCaller:
      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'
        - type: 'null'
    ORAnthropicServerToolUseBlock:
      example:
        caller:
          type: direct
        id: srvtoolu_01abc
        input: {}
        name: advisor
        type: server_tool_use
      properties:
        caller:
          $ref: '#/components/schemas/ORAnthropicNullableCaller'
        id:
          type: string
        input: {}
        name:
          type: string
        type:
          enum:
            - server_tool_use
          type: string
      required:
        - type
        - id
        - name
      type: object
    ORAnthropicStopReason:
      enum:
        - end_turn
        - max_tokens
        - model_context_window_exceeded
        - stop_sequence
        - tool_use
        - pause_turn
        - refusal
        - compaction
        - null
      example: end_turn
      type:
        - string
        - 'null'
    OutputAdvisorServerToolItem:
      description: An openrouter:advisor server tool output item
      example:
        id: st_tmp_abc123
        status: completed
        type: openrouter:advisor
      properties:
        advice:
          description: >-
            The advisor model's response (the advice text returned to the
            executor).
          type: string
        error:
          description: Error message when the advisor call did not produce advice.
          type: string
        id:
          type: string
        instance_name:
          description: >-
            Provider-safe function name of the specific advisor instance that
            produced this item (e.g. `openrouter_advisor__1`). Present only when
            more than one advisor tool is configured; omitted for the default
            single advisor. Echo this field back unchanged so the advisor's
            cross-request memory stays namespaced to the correct instance. This
            identity is positional: it is derived from the index of the advisor
            entry in the request `tools` array, so clients must keep the order
            of advisor tool entries stable across requests in a conversation.
            Reordering or inserting advisor entries shifts these names and
            causes each advisor's cross-request memory to be attributed to the
            wrong instance.
          example: openrouter_advisor__1
          type: string
        model:
          description: Slug of the advisor model that was consulted.
          type: string
        prompt:
          description: The prompt the executor sent to the advisor.
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:advisor
          type: string
      required:
        - status
        - type
      type: object
    OutputApplyPatchCallItem:
      description: >-
        A native `apply_patch_call` output item matching OpenAI's Responses API
        shape. Emitted when the client requested the `apply_patch` shorthand.
      example:
        call_id: call_abc123
        id: apc_abc123
        operation:
          diff: |-
            @@ function main() {
            +  console.log("hi");
             }
          path: /src/main.ts
          type: update_file
        status: completed
        type: apply_patch_call
      properties:
        call_id:
          type: string
        id:
          type: string
        operation:
          $ref: '#/components/schemas/ApplyPatchCallOperation'
        status:
          $ref: '#/components/schemas/ApplyPatchCallStatus'
        type:
          enum:
            - apply_patch_call
          type: string
      required:
        - type
        - id
        - call_id
        - status
        - operation
      type: object
    OutputApplyPatchServerToolItem:
      description: >-
        An openrouter:apply_patch server tool output item. The turn halts when
        validation succeeds so the client can apply the patch and echo an
        `apply_patch_call_output` on the next turn.
      example:
        call_id: call_abc123
        id: apc_abc123
        operation:
          diff: |-
            @@ function main() {
            +  console.log("hi");
             }
          path: /src/main.ts
          type: update_file
        status: completed
        type: openrouter:apply_patch
      properties:
        call_id:
          type: string
        id:
          type: string
        operation:
          $ref: '#/components/schemas/ApplyPatchCallOperation'
        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:
        arguments:
          description: The raw tool-call arguments string as emitted by the model.
          type: string
        call_id:
          description: The model-generated tool call id from the originating turn.
          type: string
        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: {}
        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
    OutputCustomToolCallItem:
      description: >-
        A call to a custom (freeform-grammar) tool created by the model —
        distinct from `function_call`. Used for tools like Codex CLI's
        `apply_patch` whose payload is opaque text rather than JSON arguments.
      example:
        call_id: call-abc123
        id: ctc-abc123
        input: |-
          *** Begin Patch
          *** End Patch
        name: apply_patch
        type: custom_tool_call
      properties:
        call_id:
          type: string
        id:
          type: string
        input:
          type: string
        name:
          type: string
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        type:
          enum:
            - custom_tool_call
          type: string
      required:
        - type
        - name
        - input
        - call_id
      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
    OutputFilesServerToolItem:
      description: An openrouter:files server tool output item
      example:
        filename: notes.txt
        id: fl_tmp_abc123
        operation: read
        result: '{"id":"file_abc","filename":"notes.txt","content":"hello"}'
        status: completed
        type: openrouter:files
      properties:
        error:
          description: Error message when the file operation failed.
          type: string
        file_id:
          description: The target file id supplied in the tool-call arguments.
          type: string
        filename:
          description: The target filename supplied in the tool-call arguments.
          type: string
        id:
          type: string
        operation:
          description: The file operation performed (list, read, write, or edit).
          type: string
        result:
          description: JSON-serialized result of the file operation.
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:files
          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
    OutputFusionServerToolItem:
      description: An openrouter:fusion server tool output item
      example:
        id: st_tmp_abc123
        status: completed
        type: openrouter:fusion
      properties:
        analysis:
          $ref: '#/components/schemas/FusionAnalysisResult'
        error:
          description: >-
            Error message when the fusion run did not produce an analysis
            result.
          type: string
        failed_models:
          description: >-
            Models that were requested as part of the analysis panel but did not
            produce a response. Present when at least one requested analysis
            model failed. The fusion result is still usable but was produced
            from a degraded panel.
          items:
            properties:
              error:
                description: Error message describing why the model failed.
                type: string
              model:
                description: Slug of the analysis model that failed.
                type: string
              status_code:
                description: >-
                  HTTP status code from the upstream response, when available
                  (e.g. 402, 429).
                type: integer
            required:
              - model
              - error
            type: object
          type: array
        failure_reason:
          description: >-
            Typed failure reason when the fusion run failed. Possible values
            include: all_panels_failed, insufficient_credits, rate_limited,
            judge_not_valid_json, judge_schema_mismatch, judge_upstream_error,
            judge_empty_completion. The four analysis-stage codes keep their
            pre-rename `judge_` spelling so existing consumers keep matching.
          type: string
        id:
          type: string
        responses:
          description: >-
            Analysis models that produced a response in this fusion run, with
            each model's full panel content.
          items:
            properties:
              content:
                type: string
              model:
                type: string
            required:
              - model
            type: object
          type: array
        sources:
          description: >-
            Web pages the analysis panels and analyst retrieved via web search
            during this fusion run, deduplicated by URL across the whole run.
            Present when at least one model cited a source.
          items:
            $ref: '#/components/schemas/FusionSource'
          type: array
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:fusion
          type: string
      required:
        - status
        - type
      type: object
    OutputImageGenerationCallItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemImageGenerationCall'
        - properties:
            prompt:
              description: >-
                The prompt (possibly rewritten) that the image was generated
                from.
              type: string
          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
        prompt:
          description: The prompt (possibly rewritten) that the image was generated from.
          type: string
        result:
          description: >-
            The generated image as a base64-encoded string or URL, matching
            OpenAI image_generation_call format
          type:
            - string
            - 'null'
        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:
              apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall'
              custom_tool_call: '#/components/schemas/OutputItemCustomToolCall'
              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/OutputItemCustomToolCall'
            - $ref: '#/components/schemas/OutputItemWebSearchCall'
            - $ref: '#/components/schemas/OutputItemFileSearchCall'
            - $ref: '#/components/schemas/OutputItemImageGenerationCall'
            - $ref: '#/components/schemas/OutputItemApplyPatchCall'
        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
    OutputItemApplyPatchCall:
      example:
        call_id: call_abc123
        id: apc_abc123
        operation:
          diff: |-
            @@ function main() {
            +  console.log("hi");
             }
          path: /src/main.ts
          type: update_file
        status: completed
        type: apply_patch_call
      properties:
        call_id:
          type: string
        created_by:
          type: string
        id:
          type: string
        operation:
          discriminator:
            mapping:
              create_file: '#/components/schemas/ApplyPatchCreateFileOperation'
              delete_file: '#/components/schemas/ApplyPatchDeleteFileOperation'
              update_file: '#/components/schemas/ApplyPatchUpdateFileOperation'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/ApplyPatchCreateFileOperation'
            - $ref: '#/components/schemas/ApplyPatchUpdateFileOperation'
            - $ref: '#/components/schemas/ApplyPatchDeleteFileOperation'
        status:
          enum:
            - in_progress
            - completed
          type: string
        type:
          enum:
            - apply_patch_call
          type: string
      required:
        - type
        - id
        - call_id
        - operation
        - status
      type: object
    OutputItemCustomToolCall:
      example:
        call_id: call-abc123
        id: ctc-abc123
        input: |-
          *** Begin Patch
          *** End Patch
        name: apply_patch
        type: custom_tool_call
      properties:
        call_id:
          type: string
        id:
          type: string
        input:
          type: string
        name:
          type: string
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        type:
          enum:
            - custom_tool_call
          type: string
      required:
        - type
        - name
        - input
        - call_id
      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:
              apply_patch_call: '#/components/schemas/OutputItemApplyPatchCall'
              custom_tool_call: '#/components/schemas/OutputItemCustomToolCall'
              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/OutputItemCustomToolCall'
            - $ref: '#/components/schemas/OutputItemWebSearchCall'
            - $ref: '#/components/schemas/OutputItemFileSearchCall'
            - $ref: '#/components/schemas/OutputItemImageGenerationCall'
            - $ref: '#/components/schemas/OutputItemApplyPatchCall'
        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
        namespace:
          description: >-
            Namespace qualifier for tools registered as part of a namespace tool
            group (e.g. an MCP server)
          type: string
        status:
          anyOf:
            - enum:
                - completed
              type: string
            - 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
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        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:
          apply_patch_call: '#/components/schemas/OutputApplyPatchCallItem'
          code_interpreter_call: '#/components/schemas/OutputCodeInterpreterCallItem'
          computer_call: '#/components/schemas/OutputComputerCallItem'
          custom_tool_call: '#/components/schemas/OutputCustomToolCallItem'
          file_search_call: '#/components/schemas/OutputFileSearchCallItem'
          function_call: '#/components/schemas/OutputFunctionCallItem'
          image_generation_call: '#/components/schemas/OutputImageGenerationCallItem'
          message: '#/components/schemas/OutputMessageItem'
          openrouter:advisor: '#/components/schemas/OutputAdvisorServerToolItem'
          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:files: '#/components/schemas/OutputFilesServerToolItem'
          openrouter:fusion: '#/components/schemas/OutputFusionServerToolItem'
          openrouter:image_generation: '#/components/schemas/OutputImageGenerationServerToolItem'
          openrouter:mcp: '#/components/schemas/OutputMcpServerToolItem'
          openrouter:memory: '#/components/schemas/OutputMemoryServerToolItem'
          openrouter:subagent: '#/components/schemas/OutputSubagentServerToolItem'
          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'
          shell_call: '#/components/schemas/OutputShellCallItem'
          shell_call_output: '#/components/schemas/OutputShellCallOutputItem'
          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/OutputApplyPatchCallItem'
        - $ref: '#/components/schemas/OutputShellCallItem'
        - $ref: '#/components/schemas/OutputShellCallOutputItem'
        - $ref: '#/components/schemas/OutputWebFetchServerToolItem'
        - $ref: '#/components/schemas/OutputToolSearchServerToolItem'
        - $ref: '#/components/schemas/OutputMemoryServerToolItem'
        - $ref: '#/components/schemas/OutputMcpServerToolItem'
        - $ref: '#/components/schemas/OutputSearchModelsServerToolItem'
        - $ref: '#/components/schemas/OutputFusionServerToolItem'
        - $ref: '#/components/schemas/OutputAdvisorServerToolItem'
        - $ref: '#/components/schemas/OutputSubagentServerToolItem'
        - $ref: '#/components/schemas/OutputFilesServerToolItem'
        - $ref: '#/components/schemas/OutputCustomToolCallItem'
    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:
                  type:
                    - string
                    - 'null'
              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
        - 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: {}
      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
            - type: 'null'
          description: >-
            The phase of an assistant message. Use `commentary` for an
            intermediate assistant message and `final_answer` for the final
            assistant message. For follow-up requests with models like
            `gpt-5.3-codex` and later, preserve and resend phase on all
            assistant messages. Omitting it can degrade performance. Not used
            for user messages.
        role:
          enum:
            - assistant
          type: string
        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'
              type:
                - array
                - 'null'
            format:
              $ref: '#/components/schemas/ReasoningFormat'
            signature:
              description: A signature for the reasoning content, used for verification
              example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
              type:
                - string
                - 'null'
          type: object
      description: An output item containing reasoning
      example:
        content:
          - text: First, we analyze the problem...
            type: reasoning_text
        format: anthropic-claude-v1
        id: reasoning-123
        signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
        status: completed
        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
    OutputShellCallItem:
      description: >-
        A native `shell_call` output item matching OpenAI's Responses API shape.
        Emitted for the sandbox-backed `shell` tool.
      example:
        action:
          commands:
            - echo hello
          max_output_length: null
          timeout_ms: null
        call_id: call_abc123
        id: shc_abc123
        status: completed
        type: shell_call
      properties:
        action:
          properties:
            commands:
              items:
                type: string
              type: array
            max_output_length:
              type:
                - integer
                - 'null'
            timeout_ms:
              type:
                - integer
                - 'null'
          required:
            - commands
            - max_output_length
            - timeout_ms
          type: object
        call_id:
          type: string
        id:
          type: string
        status:
          $ref: '#/components/schemas/ShellCallStatus'
        type:
          enum:
            - shell_call
          type: string
      required:
        - type
        - id
        - call_id
        - status
      type: object
    OutputShellCallOutputItem:
      description: >-
        A native `shell_call_output` item matching OpenAI's Responses API shape.
        Carries per-command stdout, stderr, and the exit/timeout outcome.
      example:
        call_id: call_abc123
        id: sho_abc123
        output:
          - outcome:
              exit_code: 0
              type: exit
            stderr: ''
            stdout: |
              hello
        status: completed
        type: shell_call_output
      properties:
        call_id:
          type: string
        id:
          type: string
        max_output_length:
          type:
            - integer
            - 'null'
        output:
          items:
            properties:
              outcome:
                oneOf:
                  - properties:
                      exit_code:
                        type: integer
                      type:
                        enum:
                          - exit
                        type: string
                    required:
                      - type
                      - exit_code
                    type: object
                  - properties:
                      type:
                        enum:
                          - timeout
                        type: string
                    required:
                      - type
                    type: object
              stderr:
                type: string
              stdout:
                type: string
            required:
              - stdout
              - stderr
              - outcome
            type: object
          type: array
        status:
          $ref: '#/components/schemas/ShellCallStatus'
        type:
          enum:
            - shell_call_output
          type: string
      required:
        - type
        - id
        - call_id
        - status
        - output
      type: object
    OutputSubagentServerToolItem:
      description: An openrouter:subagent server tool output item
      example:
        id: st_tmp_abc123
        status: completed
        type: openrouter:subagent
      properties:
        error:
          description: Error message when the subagent task did not produce an outcome.
          type: string
        id:
          type: string
        instance_name:
          description: >-
            Provider-safe function name of the specific subagent instance that
            produced this item (e.g. `openrouter_subagent__1`). Present only on
            items from non-default instances — the second and later subagent
            entries in the request `tools` array. The first (default) instance
            omits it, even when multiple subagents are configured. When a
            replayed item echoes this field back, the transcript rehydrates the
            call under that instance's tool. This identity is positional: it is
            derived from the index of the subagent entry in the request `tools`
            array, so keep the order of subagent entries stable across requests
            in a conversation.
          example: openrouter_subagent__1
          type: string
        model:
          description: Slug of the worker model that executed the task.
          type: string
        name:
          description: >-
            Configured name of the subagent that executed the task (the `name`
            on its tool entry). Present only for named subagents; omitted for an
            unnamed (default) subagent.
          example: summarizer
          type: string
        outcome:
          description: >-
            The worker model's result (the outcome text returned to the
            delegating model).
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        task_description:
          description: The task description the delegating model sent to the worker.
          type: string
        task_name:
          description: The short task identifier the delegating model supplied.
          type: string
        type:
          enum:
            - openrouter:subagent
          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
        - prediction
        - seed
        - response_format
        - structured_outputs
        - stop
        - tools
        - tool_choice
        - parallel_tool_calls
        - include_reasoning
        - reasoning
        - reasoning_effort
        - web_search_options
        - verbosity
      example: temperature
      type: string
    ParetoRouterPlugin:
      example:
        enabled: true
        id: pareto-router
        max_price: 5
        price_source: prompt
      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
        max_price:
          description: >-
            Maximum input price in USD per million tokens. When set,
            quality-tier selection (min_coding_score) is bypassed: the router
            computes the Pareto frontier over the top coding models and routes
            to the best-scoring frontier model priced at or below this cap,
            falling back through cheaper frontier models, then non-frontier
            models. Enforced against the price source given by price_source.
            Returns 404 when no candidate satisfies the cap.
          example: 5
          format: double
          minimum: 0
          type: number
        min_coding_score:
          description: >-
            Minimum coding quality score between 0 and 1. Maps to internal
            quality tiers: >= 0.66 → high (top coding models), >= 0.33 → medium
            (strong modern flagships), < 0.33 → low (capable coders above the
            median). Omit to default to the highest tier (equivalent to >=
            0.66). Not used when max_price is set (price-based selection takes
            over).
          example: 0.8
          format: double
          maximum: 1
          minimum: 0
          type: number
        price_source:
          description: >-
            Price source for the Pareto frontier cost axis and for enforcing
            max_price. "prompt" uses catalog list price
            (endpoint.pricing.prompt). "weighted_avg" uses traffic-weighted
            effective input price from ClickHouse, falling back to prompt price
            for models without traffic data. Defaults to "prompt".
          enum:
            - prompt
            - weighted_avg
          type: string
      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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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
          type:
            - number
            - 'null'
        p75:
          description: Maximum p75 latency (seconds)
          format: double
          type:
            - number
            - 'null'
        p90:
          description: Maximum p90 latency (seconds)
          format: double
          type:
            - number
            - 'null'
        p99:
          description: Maximum p99 latency (seconds)
          format: double
          type:
            - number
            - 'null'
      type: object
    PercentileStats:
      description: >-
        Latency percentiles in milliseconds over the last 30 minutes. Latency
        measures time to first token. Only visible when authenticated with an
        API key or cookie; returns null for unauthenticated requests.
      example:
        p50: 25.5
        p75: 35.2
        p90: 48.7
        p99: 85.3
      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
        - 'null'
    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
          type:
            - number
            - 'null'
        p75:
          description: Minimum p75 throughput (tokens/sec)
          format: double
          type:
            - number
            - 'null'
        p90:
          description: Minimum p90 throughput (tokens/sec)
          format: double
          type:
            - number
            - 'null'
        p99:
          description: Minimum p99 throughput (tokens/sec)
          format: double
          type:
            - number
            - 'null'
      type: object
    PerRequestLimits:
      description: Per-request token limits
      example:
        completion_tokens: 1000
        prompt_tokens: 1000
      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
        - 'null'
    PipelineStage:
      example:
        data:
          action: redacted
          engines:
            - presidio
          flagged: true
          matched_entity_types:
            - EMAIL
            - PHONE
        name: content-filter
        summary: PII redacted via Presidio (EMAIL, PHONE)
        type: guardrail
      properties:
        cost_usd:
          format: double
          type:
            - number
            - 'null'
        data:
          additionalProperties: {}
          type: object
        guardrail_id:
          type: string
        guardrail_scope:
          type: string
        name:
          type: string
        summary:
          type: string
        type:
          $ref: '#/components/schemas/PipelineStageType'
      required:
        - type
        - name
      type: object
    PipelineStageType:
      description: >-
        Categorical kind of a pipeline stage. Multiple plugins can share a type
        (e.g. all guardrail-level plugins emit `guardrail`); the `name` field
        disambiguates which plugin emitted it.
      enum:
        - guardrail
        - plugin
        - server_tools
        - response_healing
        - context_compression
      example: guardrail
      type: string
    Prediction:
      description: >-
        Static predicted output content. Supported models can use this to reduce
        latency when much of the response is known in advance.
      example:
        content: Expected response
        type: content
      properties:
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/PredictionContentText'
              type: array
        type:
          enum:
            - content
          type: string
      required:
        - type
        - content
      type:
        - object
        - 'null'
    PredictionContentText:
      description: Text content part for a predicted output.
      example:
        text: Expected response
        type: text
      properties:
        text:
          type: string
        type:
          enum:
            - text
          type: string
      required:
        - type
        - text
      type: object
    PreferredMaxLatency:
      anyOf:
        - format: double
          type: number
        - $ref: '#/components/schemas/PercentileLatencyCutoffs'
        - type: 'null'
      description: >-
        Preferred maximum latency (in seconds). Can be a number (applies to p50)
        or an object with percentile-specific cutoffs. Endpoints above the
        threshold(s) may still be used, but are deprioritized in routing. When
        using fallback models, this may cause a fallback model to be used
        instead of the primary model if it meets the threshold.
      example: 5
    PreferredMinThroughput:
      anyOf:
        - format: double
          type: number
        - $ref: '#/components/schemas/PercentileThroughputCutoffs'
        - type: 'null'
      description: >-
        Preferred minimum throughput (in tokens per second). Can be a number
        (applies to p50) or an object with percentile-specific cutoffs.
        Endpoints below the threshold(s) may still be used, but are
        deprioritized in routing. When using fallback models, this may cause a
        fallback model to be used instead of the primary model if it meets the
        threshold.
      example: 100
    Preset:
      description: A preset without version details.
      example:
        created_at: '2026-04-20T10:00:00Z'
        creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
        description: null
        designated_version_id: 550e8400-e29b-41d4-a716-446655440000
        id: 650e8400-e29b-41d4-a716-446655440001
        name: my-preset
        slug: my-preset
        status: active
        status_updated_at: null
        updated_at: '2026-04-20T10:00:00Z'
        workspace_id: 750e8400-e29b-41d4-a716-446655440002
      properties:
        created_at:
          type: string
        creator_user_id:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        designated_version_id:
          type:
            - string
            - 'null'
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        status:
          $ref: '#/components/schemas/PresetStatus'
        status_updated_at:
          type:
            - string
            - 'null'
        updated_at:
          type: string
        workspace_id:
          type:
            - string
            - 'null'
      required:
        - id
        - creator_user_id
        - workspace_id
        - name
        - slug
        - description
        - status
        - designated_version_id
        - created_at
        - updated_at
        - status_updated_at
      type: object
    PresetDesignatedVersion:
      description: >-
        A specific version of a preset, containing config and optional system
        prompt.
      example:
        config:
          model: openai/gpt-4o
          temperature: 0.7
        created_at: '2026-04-20T10:00:00Z'
        creator_id: user_2dHFtVWx2n56w6HkM0000000000
        id: 550e8400-e29b-41d4-a716-446655440000
        preset_id: 650e8400-e29b-41d4-a716-446655440001
        system_prompt: You are a helpful assistant.
        updated_at: '2026-04-20T10:00:00Z'
        version: 1
      properties:
        config:
          additionalProperties: {}
          type: object
        created_at:
          type: string
        creator_id:
          type: string
        id:
          type: string
        preset_id:
          type: string
        system_prompt:
          type:
            - string
            - 'null'
        updated_at:
          type: string
        version:
          type: integer
      required:
        - id
        - preset_id
        - creator_id
        - version
        - system_prompt
        - config
        - created_at
        - updated_at
      type:
        - object
        - 'null'
    PresetStatus:
      description: The status of a preset.
      enum:
        - active
        - disabled
        - archived
      example: active
      type: string
    PresetWithDesignatedVersion:
      allOf:
        - $ref: '#/components/schemas/Preset'
        - properties:
            designated_version:
              $ref: '#/components/schemas/PresetDesignatedVersion'
          required:
            - designated_version
          type: object
      description: A preset with its currently designated version.
      example:
        created_at: '2026-04-20T10:00:00Z'
        creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
        description: null
        designated_version:
          config:
            model: openai/gpt-4o
            temperature: 0.7
          created_at: '2026-04-20T10:00:00Z'
          creator_id: user_2dHFtVWx2n56w6HkM0000000000
          id: 550e8400-e29b-41d4-a716-446655440000
          preset_id: 650e8400-e29b-41d4-a716-446655440001
          system_prompt: You are a helpful assistant.
          updated_at: '2026-04-20T10:00:00Z'
          version: 1
        designated_version_id: 550e8400-e29b-41d4-a716-446655440000
        id: 650e8400-e29b-41d4-a716-446655440001
        name: my-preset
        slug: my-preset
        status: active
        status_updated_at: null
        updated_at: '2026-04-20T10:00:00Z'
        workspace_id: 750e8400-e29b-41d4-a716-446655440002
    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, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          example: 5
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          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, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          example: 5
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          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
      properties:
        city:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
        region:
          type:
            - string
            - 'null'
        timezone:
          type:
            - string
            - 'null'
        type:
          enum:
            - approximate
          type: string
      required:
        - type
      type:
        - object
        - 'null'
    PricingOverride:
      description: >-
        A conditional override of the base pricing. An entry applies only when
        all of its condition fields (e.g. min_prompt_tokens, or the
        utc_start/utc_end time window) match the request; among applicable
        entries, later entries win per price key; price keys absent from an
        entry inherit the base price.
      example:
        completion: '0.00002'
        min_prompt_tokens: 200000
        prompt: '0.000005'
      properties:
        audio:
          description: Overridden price in USD per audio input token
          type: string
        completion:
          description: Overridden price in USD per token for completion (output) generation
          type: string
        input_audio_cache:
          description: Overridden price in USD per cached audio input token
          type: string
        input_cache_read:
          description: Overridden price in USD per cached input token (read)
          type: string
        input_cache_write:
          description: Overridden price in USD per cache-write token
          type: string
        input_cache_write_1h:
          description: Overridden price in USD per 1-hour cache-write token
          type: string
        min_prompt_tokens:
          description: >-
            Condition: the entry applies when the total prompt tokens of a
            request are strictly greater than this threshold
          format: double
          type: number
        prompt:
          description: Overridden price in USD per token for prompt (input) processing
          type: string
        utc_end:
          description: >-
            Condition: exclusive end of a daily UTC time window as an HHMM clock
            number (e.g. 400 = 04:00)
          format: double
          type: number
        utc_start:
          description: >-
            Condition: inclusive start of a daily UTC time window as an HHMM
            clock number (e.g. 100 = 01:00, 1030 = 10:30). The entry applies
            while the current UTC time is inside the half-open window
            [utc_start, utc_end), which may wrap past midnight (utc_start >
            utc_end).
          format: double
          type: number
      type: object
    PromptCacheBreakpoint:
      description: >-
        Marks an explicit prompt-cache boundary on this content block
        (OpenAI-style). Everything through the block carrying this marker is
        part of the candidate cached prefix. Supported natively by OpenAI
        GPT-5.6 and newer; on providers that use Anthropic-style
        `cache_control`, OpenRouter converts the marker to that format
        automatically.
      example:
        mode: explicit
      properties:
        mode:
          enum:
            - explicit
          type: string
      required:
        - mode
      type:
        - object
        - 'null'
    PromptCacheOptions:
      description: >-
        Request-level prompt-cache controls. `mode: "explicit"` disables
        OpenAI-managed breakpoints so only blocks marked with
        `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6
        and newer.
      example:
        mode: explicit
        ttl: 30m
      properties:
        mode:
          enum:
            - explicit
          type: string
        ttl:
          type:
            - string
            - 'null'
      required:
        - mode
      type:
        - object
        - 'null'
    PromptInjectionScanScope:
      description: >-
        Which message roles to scan for prompt injection. Only applies to the
        regex-prompt-injection builtin. Defaults to all_messages.
      enum:
        - user_only
        - all_messages
      example: user_only
      type: string
    ProviderName:
      enum:
        - Modal
        - AkashML
        - AI21
        - AionLabs
        - Alibaba
        - Ambient
        - Baidu
        - Amazon Bedrock
        - Amazon Nova
        - Anthropic
        - Arcee AI
        - AtlasCloud
        - Avian
        - Azure
        - BaseTen
        - BytePlus
        - Black Forest Labs
        - Cerebras
        - Chutes
        - Cirrascale
        - Claude Platform on AWS
        - Clarifai
        - Cloudflare
        - Cohere
        - CoreWeave
        - Crucible
        - Crusoe
        - Darkbloom
        - Decart
        - Deepgram
        - DeepInfra
        - DeepSeek
        - DekaLLM
        - DigitalOcean
        - Featherless
        - Fireworks
        - Fish Audio
        - Friendli
        - GMICloud
        - Google
        - Google AI Studio
        - Groq
        - HeyGen
        - Inception
        - Inceptron
        - InferenceNet
        - Ionstream
        - Infermatic
        - Io Net
        - Inferact vLLM
        - Inflection
        - Liquid
        - Mara
        - Mancer 2
        - Meta
        - Minimax
        - ModelRun
        - Mistral
        - Modular
        - Moonshot AI
        - Morph
        - VoyageAI by MongoDB
        - NCompass
        - Nebius
        - Nex AGI
        - NextBit
        - Novita
        - Nvidia
        - OpenAI
        - OpenInference
        - Parasail
        - Poolside
        - Perceptron
        - Perplexity
        - Phala
        - Recraft
        - Reka
        - Relace
        - Sail Research
        - Sakana AI
        - SambaNova
        - Seed
        - SiliconFlow
        - Sourceful
        - StepFun
        - Stealth
        - StreamLake
        - Switchpoint
        - Tencent
        - Tenstorrent
        - Together
        - Upstage
        - Venice
        - Wafer
        - WandB
        - Quiver
        - Krea
        - Runway
        - Xiaomi
        - xAI
        - Z.AI
        - FakeProvider
      example: OpenAI
      type: string
    ProviderOptions:
      description: >-
        Provider-specific options keyed by provider slug. Only options for the
        matched provider are forwarded; the rest are ignored. Unrecognized keys
        are silently dropped.
      example:
        openai:
          max_tokens: 1000
      properties:
        01ai:
          additionalProperties: {}
          type: object
        ai21:
          additionalProperties: {}
          type: object
        aion-labs:
          additionalProperties: {}
          type: object
        akashml:
          additionalProperties: {}
          type: object
        alibaba:
          additionalProperties: {}
          type: object
        amazon-bedrock:
          additionalProperties: {}
          type: object
        amazon-nova:
          additionalProperties: {}
          type: object
        ambient:
          additionalProperties: {}
          type: object
        anthropic:
          additionalProperties: {}
          type: object
        anyscale:
          additionalProperties: {}
          type: object
        arcee-ai:
          additionalProperties: {}
          type: object
        atlas-cloud:
          additionalProperties: {}
          type: object
        atoma:
          additionalProperties: {}
          type: object
        avian:
          additionalProperties: {}
          type: object
        azure:
          additionalProperties: {}
          type: object
        baidu:
          additionalProperties: {}
          type: object
        baseten:
          additionalProperties: {}
          type: object
        black-forest-labs:
          additionalProperties: {}
          type: object
        byteplus:
          additionalProperties: {}
          type: object
        centml:
          additionalProperties: {}
          type: object
        cerebras:
          additionalProperties: {}
          type: object
        chutes:
          additionalProperties: {}
          type: object
        cirrascale:
          additionalProperties: {}
          type: object
        clarifai:
          additionalProperties: {}
          type: object
        claude-on-aws:
          additionalProperties: {}
          type: object
        cloudflare:
          additionalProperties: {}
          type: object
        cohere:
          additionalProperties: {}
          type: object
        coreweave:
          additionalProperties: {}
          type: object
        crofai:
          additionalProperties: {}
          type: object
        crucible:
          additionalProperties: {}
          type: object
        crusoe:
          additionalProperties: {}
          type: object
        darkbloom:
          additionalProperties: {}
          type: object
        decart:
          additionalProperties: {}
          type: object
        deepgram:
          additionalProperties: {}
          type: object
        deepinfra:
          additionalProperties: {}
          type: object
        deepseek:
          additionalProperties: {}
          type: object
        dekallm:
          additionalProperties: {}
          type: object
        digitalocean:
          additionalProperties: {}
          type: object
        enfer:
          additionalProperties: {}
          type: object
        fake-provider:
          additionalProperties: {}
          type: object
        featherless:
          additionalProperties: {}
          type: object
        fireworks:
          additionalProperties: {}
          type: object
        fish-audio:
          additionalProperties: {}
          type: object
        friendli:
          additionalProperties: {}
          type: object
        gmicloud:
          additionalProperties: {}
          type: object
        google-ai-studio:
          additionalProperties: {}
          type: object
        google-vertex:
          additionalProperties: {}
          type: object
        gopomelo:
          additionalProperties: {}
          type: object
        groq:
          additionalProperties: {}
          type: object
        heygen:
          additionalProperties: {}
          type: object
        huggingface:
          additionalProperties: {}
          type: object
        hyperbolic:
          additionalProperties: {}
          type: object
        hyperbolic-quantized:
          additionalProperties: {}
          type: object
        inception:
          additionalProperties: {}
          type: object
        inceptron:
          additionalProperties: {}
          type: object
        inferact-vllm:
          additionalProperties: {}
          type: object
        inference-net:
          additionalProperties: {}
          type: object
        infermatic:
          additionalProperties: {}
          type: object
        inflection:
          additionalProperties: {}
          type: object
        inocloud:
          additionalProperties: {}
          type: object
        io-net:
          additionalProperties: {}
          type: object
        ionstream:
          additionalProperties: {}
          type: object
        klusterai:
          additionalProperties: {}
          type: object
        krea:
          additionalProperties: {}
          type: object
        lambda:
          additionalProperties: {}
          type: object
        lepton:
          additionalProperties: {}
          type: object
        liquid:
          additionalProperties: {}
          type: object
        lynn:
          additionalProperties: {}
          type: object
        lynn-private:
          additionalProperties: {}
          type: object
        mancer:
          additionalProperties: {}
          type: object
        mancer-old:
          additionalProperties: {}
          type: object
        mara:
          additionalProperties: {}
          type: object
        meta:
          additionalProperties: {}
          type: object
        minimax:
          additionalProperties: {}
          type: object
        mistral:
          additionalProperties: {}
          type: object
        modal:
          additionalProperties: {}
          type: object
        modelrun:
          additionalProperties: {}
          type: object
        modular:
          additionalProperties: {}
          type: object
        moonshotai:
          additionalProperties: {}
          type: object
        morph:
          additionalProperties: {}
          type: object
        ncompass:
          additionalProperties: {}
          type: object
        nebius:
          additionalProperties: {}
          type: object
        nex-agi:
          additionalProperties: {}
          type: object
        nextbit:
          additionalProperties: {}
          type: object
        nineteen:
          additionalProperties: {}
          type: object
        novita:
          additionalProperties: {}
          type: object
        nvidia:
          additionalProperties: {}
          type: object
        octoai:
          additionalProperties: {}
          type: object
        open-inference:
          additionalProperties: {}
          type: object
        openai:
          additionalProperties: {}
          type: object
        parasail:
          additionalProperties: {}
          type: object
        perceptron:
          additionalProperties: {}
          type: object
        perplexity:
          additionalProperties: {}
          type: object
        phala:
          additionalProperties: {}
          type: object
        poolside:
          additionalProperties: {}
          type: object
        quiver:
          additionalProperties: {}
          type: object
        recraft:
          additionalProperties: {}
          type: object
        recursal:
          additionalProperties: {}
          type: object
        reflection:
          additionalProperties: {}
          type: object
        reka:
          additionalProperties: {}
          type: object
        relace:
          additionalProperties: {}
          type: object
        replicate:
          additionalProperties: {}
          type: object
        runway:
          additionalProperties: {}
          type: object
        sail-research:
          additionalProperties: {}
          type: object
        sakana:
          additionalProperties: {}
          type: object
        sakana-ai:
          additionalProperties: {}
          type: object
        sambanova:
          additionalProperties: {}
          type: object
        sambanova-cloaked:
          additionalProperties: {}
          type: object
        seed:
          additionalProperties: {}
          type: object
        sf-compute:
          additionalProperties: {}
          type: object
        siliconflow:
          additionalProperties: {}
          type: object
        sourceful:
          additionalProperties: {}
          type: object
        stealth:
          additionalProperties: {}
          type: object
        stepfun:
          additionalProperties: {}
          type: object
        streamlake:
          additionalProperties: {}
          type: object
        switchpoint:
          additionalProperties: {}
          type: object
        targon:
          additionalProperties: {}
          type: object
        tencent:
          additionalProperties: {}
          type: object
        tenstorrent:
          additionalProperties: {}
          type: object
        together:
          additionalProperties: {}
          type: object
        together-lite:
          additionalProperties: {}
          type: object
        ubicloud:
          additionalProperties: {}
          type: object
        upstage:
          additionalProperties: {}
          type: object
        venice:
          additionalProperties: {}
          type: object
        voyageai:
          additionalProperties: {}
          type: object
        wafer:
          additionalProperties: {}
          type: object
        wandb:
          additionalProperties: {}
          type: object
        wandb-legacy:
          additionalProperties: {}
          type: object
        xai:
          additionalProperties: {}
          type: object
        xiaomi:
          additionalProperties: {}
          type: object
        z-ai:
          additionalProperties: {}
          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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    ProviderPreferences:
      additionalProperties: false
      description: >-
        When multiple model providers are available, optionally indicate your
        routing preference.
      example:
        allow_fallbacks: 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.
          type:
            - boolean
            - 'null'
        data_collection:
          description: >-
            Data collection setting. If no available model provider meets the
            requirement, your request will return an error.

            - allow: (default) allow providers which store user data
            non-transiently and may train on it


            - deny: use only providers which do not collect user data.
          enum:
            - deny
            - allow
            - null
          example: allow
          type:
            - string
            - 'null'
        enforce_distillable_text:
          description: >-
            Whether to restrict routing to only models that allow text
            distillation. When true, only models where the author has allowed
            distillation will be used.
          example: true
          type:
            - boolean
            - 'null'
        ignore:
          description: >-
            List of provider slugs to ignore. If provided, this list is merged
            with your account-wide ignored provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        max_price:
          description: >-
            The object specifying the maximum price you want to pay for this
            request. USD price per million tokens, for prompt and completion.
          properties:
            audio:
              description: Maximum price in USD per audio unit
              type: string
            completion:
              description: Maximum price in USD per million completion tokens
              type: string
            image:
              description: Maximum price in USD per image
              type: string
            prompt:
              description: Maximum price in USD per million prompt tokens
              type: string
            request:
              description: Maximum price in USD per request
              type: string
          type: object
        only:
          description: >-
            List of provider slugs to allow. If provided, this list is merged
            with your account-wide allowed provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        order:
          description: >-
            An ordered list of provider slugs. The router will attempt to use
            the first provider in the subset of this list that supports your
            requested model, and fall back to the next if it is unavailable. If
            no providers are available, the request will fail with an error
            message.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          type:
            - array
            - 'null'
        preferred_max_latency:
          $ref: '#/components/schemas/PreferredMaxLatency'
        preferred_min_throughput:
          $ref: '#/components/schemas/PreferredMinThroughput'
        quantizations:
          description: A list of quantization levels to filter the provider by.
          items:
            $ref: '#/components/schemas/Quantization'
          type:
            - array
            - 'null'
        require_parameters:
          description: >-
            Whether to filter providers to only those that support the
            parameters you've provided. If this setting is omitted or set to
            false, then providers will receive only the parameters they support,
            and ignore the rest.
          type:
            - boolean
            - 'null'
        sort:
          anyOf:
            - $ref: '#/components/schemas/ProviderSort'
            - $ref: '#/components/schemas/ProviderSortConfig'
            - type: 'null'
          description: >-
            The sorting strategy to use for this request, if "order" is not
            specified. When set, no load balancing is performed.
          example: price
        zdr:
          description: >-
            Whether to restrict routing to only ZDR (Zero Data Retention)
            endpoints. When true, only endpoints that do not retain prompts will
            be used.
          example: true
          type:
            - boolean
            - 'null'
      type:
        - object
        - 'null'
    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
          format: double
          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
            - Hyperbolic 2
            - InoCloud
            - Kluster
            - Lambda
            - Lepton
            - Lynn 2
            - Lynn
            - Mancer
            - Modal
            - Nineteen
            - OctoAI
            - Recursal
            - Reflection
            - Replicate
            - SambaNova 2
            - SF Compute
            - Targon
            - Together 2
            - Ubicloud
            - 01.AI
            - AkashML
            - AI21
            - AionLabs
            - Alibaba
            - Ambient
            - Baidu
            - Amazon Bedrock
            - Amazon Nova
            - Anthropic
            - Arcee AI
            - AtlasCloud
            - Avian
            - Azure
            - BaseTen
            - BytePlus
            - Black Forest Labs
            - Cerebras
            - Chutes
            - Cirrascale
            - Claude Platform on AWS
            - Clarifai
            - Cloudflare
            - Cohere
            - CoreWeave
            - Crucible
            - Crusoe
            - Darkbloom
            - Decart
            - Deepgram
            - DeepInfra
            - DeepSeek
            - DekaLLM
            - DigitalOcean
            - Featherless
            - Fireworks
            - Fish Audio
            - Friendli
            - GMICloud
            - Google
            - Google AI Studio
            - Groq
            - HeyGen
            - Inception
            - Inceptron
            - InferenceNet
            - Ionstream
            - Infermatic
            - Io Net
            - Inferact vLLM
            - Inflection
            - Liquid
            - Mara
            - Mancer 2
            - Meta
            - Minimax
            - ModelRun
            - Mistral
            - Modular
            - Moonshot AI
            - Morph
            - VoyageAI by MongoDB
            - NCompass
            - Nebius
            - Nex AGI
            - NextBit
            - Novita
            - Nvidia
            - OpenAI
            - OpenInference
            - Parasail
            - Poolside
            - Perceptron
            - Perplexity
            - Phala
            - Recraft
            - Reka
            - Relace
            - Sail Research
            - Sakana AI
            - SambaNova
            - Seed
            - SiliconFlow
            - Sourceful
            - StepFun
            - Stealth
            - StreamLake
            - Switchpoint
            - Tencent
            - Tenstorrent
            - Together
            - Upstage
            - Venice
            - Wafer
            - WandB
            - Quiver
            - Krea
            - Runway
            - Xiaomi
            - xAI
            - Z.AI
            - FakeProvider
          example: OpenAI
          type: string
        routed_service_tier:
          description: >-
            The service tier this request was routed to (e.g. flex, priority).
            The tier actually applied and billed is determined by the provider
            response and may differ.
          enum:
            - flex
            - priority
          example: priority
          type: string
        status:
          description: HTTP status code from the provider
          example: 200
          type:
            - integer
            - 'null'
      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
          type:
            - string
            - 'null'
        partition:
          description: >-
            Partitioning strategy for sorting: "model" (default) groups
            endpoints by model before sorting (fallback models remain
            fallbacks), "none" sorts all endpoints together regardless of model.
          enum:
            - model
            - none
            - null
          example: model
          type:
            - string
            - 'null'
      type: object
    PublicEndpoint:
      description: Information about a specific model endpoint
      example:
        context_length: 8192
        latency_last_30m:
          p50: 0.25
          p75: 0.35
          p90: 0.48
          p99: 0.85
        max_completion_tokens: 4096
        max_prompt_tokens: 8192
        model_id: openai/gpt-4
        model_name: GPT-4
        name: 'OpenAI: GPT-4'
        pricing:
          completion: '0.00006'
          image: '0'
          prompt: '0.00003'
          request: '0'
        provider_name: OpenAI
        quantization: fp16
        status: 0
        supported_parameters:
          - temperature
          - top_p
          - max_tokens
        supports_implicit_caching: true
        tag: openai
        throughput_last_30m:
          p50: 45.2
          p75: 38.5
          p90: 28.3
          p99: 15.1
        uptime_last_1d: 99.8
        uptime_last_30m: 99.5
        uptime_last_5m: 100
      properties:
        context_length:
          type: integer
        latency_last_30m:
          $ref: '#/components/schemas/PercentileStats'
        max_completion_tokens:
          type:
            - integer
            - 'null'
        max_prompt_tokens:
          type:
            - integer
            - 'null'
        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:
              description: Price in USD per audio input token
              type: string
            audio_output:
              description: Price in USD per audio output token
              type: string
            completion:
              description: Price in USD per token for completion (output) generation
              type: string
            discount:
              description: >-
                Fractional discount applied to this endpoint's pricing; the
                price is multiplied by (1 - discount) (0 = no discount, 1 =
                free)
              format: double
              type: number
            image:
              description: Price in USD per input image
              type: string
            image_output:
              description: Price in USD per output image
              type: string
            image_token:
              description: Price in USD per image token
              type: string
            input_audio_cache:
              description: Price in USD per cached audio input token
              type: string
            input_cache_read:
              description: Price in USD per cached input token (read)
              type: string
            input_cache_write:
              description: >-
                Price per cache-write token, in USD per token. For providers
                with multiple cache TTLs (e.g. Anthropic), this is the default
                (5-minute) cache-write rate.
              type: string
            input_cache_write_1h:
              description: >-
                Price per 1-hour cache-write token, in USD per token. Only
                present for providers that price an extended (1-hour) cache TTL
                separately, such as Anthropic.
              type: string
            internal_reasoning:
              description: Price in USD per internal reasoning token
              type: string
            overrides:
              description: >-
                Conditional overrides of the base pricing (e.g. long-context or
                time-based pricing). An entry applies when all of its condition
                fields (e.g. min_prompt_tokens, or the utc_start/utc_end time
                window) match the request; among applicable entries, later
                entries win per key; price keys absent from an entry inherit the
                base price. The top-level pricing keys always reflect the price
                that applies under default conditions.
              items:
                $ref: '#/components/schemas/PricingOverride'
              type: array
            prompt:
              description: Price in USD per token for prompt (input) processing
              type: string
            request:
              description: Price in USD per request
              type: string
            web_search:
              description: Price in USD per web search
              type: string
          required:
            - prompt
            - completion
          type: object
        provider_name:
          $ref: '#/components/schemas/ProviderName'
        quantization:
          anyOf:
            - $ref: '#/components/schemas/Quantization'
            - type: 'null'
        status:
          $ref: '#/components/schemas/EndpointStatus'
        supported_parameters:
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        supports_implicit_caching:
          type: boolean
        tag:
          type: string
        throughput_last_30m:
          allOf:
            - $ref: '#/components/schemas/PercentileStats'
            - description: >-
                Throughput percentiles in tokens per second over the last 30
                minutes. Throughput measures output token generation speed. Only
                visible when authenticated with an API key or cookie; returns
                null for unauthenticated requests.
        uptime_last_1d:
          description: >-
            Uptime percentage over the last 1 day, calculated as successful
            requests / (successful + error requests) * 100. Rate-limited
            requests are excluded. Returns null if insufficient data.
          format: double
          type:
            - number
            - 'null'
        uptime_last_30m:
          format: double
          type:
            - number
            - 'null'
        uptime_last_5m:
          description: >-
            Uptime percentage over the last 5 minutes, calculated as successful
            requests / (successful + error requests) * 100. Rate-limited
            requests are excluded. Returns null if insufficient data.
          format: double
          type:
            - number
            - 'null'
      required:
        - name
        - model_id
        - model_name
        - context_length
        - pricing
        - provider_name
        - tag
        - quantization
        - max_completion_tokens
        - max_prompt_tokens
        - supported_parameters
        - uptime_last_30m
        - uptime_last_5m
        - uptime_last_1d
        - supports_implicit_caching
        - latency_last_30m
        - throughput_last_30m
      type: object
    PublicPricing:
      description: Pricing information for the model
      example:
        completion: '0.00006'
        image: '0'
        prompt: '0.00003'
        request: '0'
      properties:
        audio:
          description: Price in USD per audio input token
          type: string
        audio_output:
          description: Price in USD per audio output token
          type: string
        completion:
          description: Price in USD per token for completion (output) generation
          type: string
        discount:
          description: >-
            Fractional discount applied to this endpoint's pricing; the price is
            multiplied by (1 - discount) (0 = no discount, 1 = free)
          format: double
          type: number
        image:
          description: Price in USD per input image
          type: string
        image_output:
          description: Price in USD per output image
          type: string
        image_token:
          description: Price in USD per image token
          type: string
        input_audio_cache:
          description: Price in USD per cached audio input token
          type: string
        input_cache_read:
          description: Price in USD per cached input token (read)
          type: string
        input_cache_write:
          description: >-
            Price per cache-write token, in USD per token. For providers with
            multiple cache TTLs (e.g. Anthropic), this is the default (5-minute)
            cache-write rate.
          type: string
        input_cache_write_1h:
          description: >-
            Price per 1-hour cache-write token, in USD per token. Only present
            for providers that price an extended (1-hour) cache TTL separately,
            such as Anthropic.
          type: string
        internal_reasoning:
          description: Price in USD per internal reasoning token
          type: string
        overrides:
          description: >-
            Conditional overrides of the base pricing (e.g. long-context or
            time-based pricing). An entry applies when all of its condition
            fields (e.g. min_prompt_tokens, or the utc_start/utc_end time
            window) match the request; among applicable entries, later entries
            win per key; price keys absent from an entry inherit the base price.
            The top-level pricing keys always reflect the price that applies
            under default conditions.
          items:
            $ref: '#/components/schemas/PricingOverride'
          type: array
        prompt:
          description: Price in USD per token for prompt (input) processing
          type: string
        request:
          description: Price in USD per request
          type: string
        web_search:
          description: Price in USD per web search
          type: string
      required:
        - prompt
        - completion
      type: object
    Quantization:
      enum:
        - int4
        - int8
        - fp4
        - mxfp4
        - nvfp4
        - fp6
        - fp8
        - mxfp8
        - fp16
        - bf16
        - fp32
        - unknown
      example: fp16
      type: string
    RangeCapability:
      description: A parameter that accepts any value within an inclusive numeric range.
      example:
        max: 100
        min: 0
        type: range
      properties:
        max:
          type: number
        min:
          type: number
        type:
          enum:
            - range
          type: string
      required:
        - type
        - min
        - max
      type: object
    RankingsDailyItem:
      example:
        date: '2026-05-11'
        model_permaslug: openai/gpt-4o-2024-05-13
        total_tokens: '12345678'
      properties:
        date:
          description: UTC calendar date the row is aggregated over (YYYY-MM-DD).
          example: '2026-05-11'
          type: string
        model_permaslug:
          description: >-
            Model variant permaslug (e.g. `openai/gpt-4o-2024-05-13`,
            `openai/gpt-4o-2024-05-13:free`). Non-default variants include a
            `:variant` suffix and are ranked as their own entry. The reserved
            value `other` denotes the aggregated row covering every model
            outside the daily top 50 for that date — always sorted last within
            its date.
          example: openai/gpt-4o-2024-05-13
          type: string
        total_tokens:
          description: >-
            Sum of `prompt_tokens + completion_tokens` for the day, returned as
            a decimal string so 64-bit values are not truncated.
          example: '12345678'
          type: string
      required:
        - date
        - model_permaslug
        - total_tokens
      type: object
    RankingsDailyMeta:
      example:
        as_of: '2026-05-12T02:00:00Z'
        end_date: '2026-05-11'
        start_date: '2026-04-12'
        version: v1
      properties:
        as_of:
          description: >-
            ISO-8601 timestamp of when the response was generated. Reflects
            data-freshness because the underlying materialized view continuously
            ingests upstream events.
          example: '2026-05-12T02:00:00Z'
          type: string
        end_date:
          description: Resolved end of the date window (UTC, inclusive).
          example: '2026-05-11'
          type: string
        start_date:
          description: Resolved start of the date window (UTC, inclusive).
          example: '2026-04-12'
          type: string
        version:
          description: >-
            Dataset version. Field names and grain are stable for the life of
            `v1`.
          enum:
            - v1
          type: string
      required:
        - as_of
        - version
        - start_date
        - end_date
      type: object
    RankingsDailyResponse:
      example:
        data:
          - date: '2026-05-11'
            model_permaslug: openai/gpt-4o-2024-05-13
            total_tokens: '12345678'
          - date: '2026-05-11'
            model_permaslug: anthropic/claude-3.5-sonnet-20241022
            total_tokens: '9876543'
        meta:
          as_of: '2026-05-12T02:00:00Z'
          end_date: '2026-05-11'
          start_date: '2026-04-12'
          version: v1
      properties:
        data:
          description: >-
            Up to 51 rows per day — the top 50 public models by `total_tokens`
            for each UTC calendar date in the window, plus one aggregated
            `other` row summing every model outside that top 50 (omitted when
            the long tail is empty). Rows are sorted by `date` ascending, then
            by `total_tokens` descending, with `other` pinned last within its
            date. Ties between real models break alphabetically on
            `model_permaslug` so the order is stable across requests.
          items:
            $ref: '#/components/schemas/RankingsDailyItem'
          type: array
        meta:
          $ref: '#/components/schemas/RankingsDailyMeta'
      required:
        - data
        - meta
      type: object
    ReasoningConfig:
      anyOf:
        - allOf:
            - $ref: '#/components/schemas/BaseReasoningConfig'
            - properties:
                enabled:
                  type:
                    - boolean
                    - 'null'
                max_tokens:
                  type:
                    - integer
                    - 'null'
              type: object
        - type: 'null'
      description: Configuration for reasoning mode in the response
      example:
        enabled: true
        summary: auto
    ReasoningContext:
      description: >-
        Controls which reasoning is available to the model. `auto` uses the
        model default (same as omitting); `all_turns` includes reasoning from
        earlier turns passed in input; `current_turn` limits to the current turn
        only. Only supported by OpenAI GPT-5.6 and newer.
      enum:
        - auto
        - all_turns
        - current_turn
        - null
      example: all_turns
      type:
        - string
        - 'null'
    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:
          type:
            - string
            - 'null'
        index:
          type: integer
        type:
          enum:
            - reasoning.encrypted
          type: string
      required:
        - type
        - data
      type: object
    ReasoningDetailServerToolCall:
      description: >-
        Record of an OpenRouter server-tool invocation (e.g. openrouter:fusion),
        carried in reasoning_details so a prior tool call can be rehydrated into
        a later turn of the same conversation.
      example:
        arguments: '{"prompt":"Compare carbon tax proposals"}'
        result: '{"status":"ok","models":["openai/gpt-4o"]}'
        tool_call_id: call_abc123
        tool_name: openrouter:fusion
        type: reasoning.server_tool_call
      properties:
        arguments:
          type: string
        format:
          $ref: '#/components/schemas/ReasoningFormat'
        id:
          type:
            - string
            - 'null'
        index:
          type: integer
        result:
          type: string
        tool_call_id:
          type:
            - string
            - 'null'
        tool_name:
          type: string
        type:
          enum:
            - reasoning.server_tool_call
          type: string
      required:
        - type
        - tool_name
        - arguments
        - result
      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:
          type:
            - string
            - 'null'
        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:
          type:
            - string
            - 'null'
        index:
          type: integer
        signature:
          type:
            - string
            - 'null'
        text:
          type:
            - string
            - 'null'
        type:
          enum:
            - reasoning.text
          type: string
      required:
        - type
      type: object
    ReasoningDetailUnion:
      description: Reasoning detail union schema
      discriminator:
        mapping:
          reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted'
          reasoning.server_tool_call: '#/components/schemas/ReasoningDetailServerToolCall'
          reasoning.summary: '#/components/schemas/ReasoningDetailSummary'
          reasoning.text: '#/components/schemas/ReasoningDetailText'
        propertyName: type
      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'
        - $ref: '#/components/schemas/ReasoningDetailServerToolCall'
    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:
        - max
        - xhigh
        - high
        - medium
        - low
        - minimal
        - none
        - null
      example: medium
      type:
        - string
        - 'null'
    ReasoningFormat:
      enum:
        - unknown
        - openai-responses-v1
        - azure-openai-responses-v1
        - bedrock-openai-responses-v1
        - xai-responses-v1
        - meta-responses-v1
        - anthropic-claude-v1
        - google-gemini-v1
        - null
      example: unknown
      type:
        - string
        - 'null'
    ReasoningItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemReasoning'
        - properties:
            content:
              items:
                $ref: '#/components/schemas/ReasoningTextContent'
              type:
                - array
                - 'null'
            format:
              $ref: '#/components/schemas/ReasoningFormat'
            signature:
              type:
                - string
                - 'null'
          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
    ReasoningMode:
      description: >-
        Selects the reasoning mode. `standard` is the default; `pro` engages
        deeper reasoning on models that support it, billed at standard token
        rates. Only supported by OpenAI GPT-5.6 and newer.
      enum:
        - standard
        - pro
        - null
      example: standard
      type:
        - string
        - 'null'
    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
      type:
        - string
        - 'null'
    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'
      type:
        - object
        - 'null'
    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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      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.
      properties:
        code:
          enum:
            - server_error
            - rate_limit_exceeded
            - invalid_prompt
            - vector_store_timeout
            - invalid_image
            - invalid_image_format
            - invalid_base64_image
            - invalid_image_url
            - image_too_large
            - image_too_small
            - image_parse_error
            - image_content_policy_violation
            - invalid_image_mode
            - image_file_too_large
            - unsupported_image_media_type
            - empty_image_file
            - failed_to_download_image
            - image_file_not_found
            - bio_policy
          type: string
        message:
          type: string
      required:
        - code
        - message
      type:
        - object
        - 'null'
    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:
          type:
            - boolean
            - 'null'
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        debug:
          $ref: '#/components/schemas/ChatDebugOptions'
        frequency_penalty:
          format: double
          type:
            - number
            - 'null'
        image_config:
          $ref: '#/components/schemas/ImageConfig'
        include:
          items:
            $ref: '#/components/schemas/ResponseIncludesEnum'
          type:
            - array
            - 'null'
        input:
          $ref: '#/components/schemas/Inputs'
        instructions:
          type:
            - string
            - 'null'
        max_output_tokens:
          type:
            - integer
            - 'null'
        max_tool_calls:
          description: >-
            Maximum number of server-tool (e.g. `openrouter:web_search`) agent
            steps the model may take during a request. Defaults to 30, which is
            also the maximum. Ignored when `stop_server_tools_when` is set.
          example: 30
          type:
            - integer
            - 'null'
        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:
          type:
            - boolean
            - 'null'
        plugins:
          description: >-
            Plugins you want to enable for this request, including their
            settings.
          items:
            discriminator:
              mapping:
                auto-beta-router: '#/components/schemas/AutoBetaRouterPlugin'
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                fusion: '#/components/schemas/FusionPlugin'
                moderation: '#/components/schemas/ModerationPlugin'
                pareto-router: '#/components/schemas/ParetoRouterPlugin'
                response-healing: '#/components/schemas/ResponseHealingPlugin'
                web: '#/components/schemas/WebSearchPlugin'
                web-fetch: '#/components/schemas/WebFetchPlugin'
              propertyName: id
            oneOf:
              - $ref: '#/components/schemas/AutoRouterPlugin'
              - $ref: '#/components/schemas/AutoBetaRouterPlugin'
              - $ref: '#/components/schemas/ModerationPlugin'
              - $ref: '#/components/schemas/WebSearchPlugin'
              - $ref: '#/components/schemas/WebFetchPlugin'
              - $ref: '#/components/schemas/FileParserPlugin'
              - $ref: '#/components/schemas/ResponseHealingPlugin'
              - $ref: '#/components/schemas/ContextCompressionPlugin'
              - $ref: '#/components/schemas/ParetoRouterPlugin'
              - $ref: '#/components/schemas/FusionPlugin'
          type: array
        presence_penalty:
          format: double
          type:
            - number
            - 'null'
        previous_response_id:
          description: >-
            Not supported. The Responses API is stateless: no responses are
            stored, so a previous response cannot be referenced. Requests with a
            non-null value are rejected with a 400 error. Send the full
            conversation history in `input` instead.
        prompt:
          $ref: '#/components/schemas/StoredPromptTemplate'
        prompt_cache_key:
          type:
            - string
            - 'null'
        prompt_cache_options:
          $ref: '#/components/schemas/PromptCacheOptions'
        provider:
          $ref: '#/components/schemas/ProviderPreferences'
        reasoning:
          $ref: '#/components/schemas/ReasoningConfig'
        route:
          $ref: '#/components/schemas/DeprecatedRoute'
        safety_identifier:
          description: >-
            Recommended per-end-user identifier for abuse isolation. Use a
            stable ID, hash, or pseudonym. When a provider requires a user
            identity, OpenRouter folds it into the hashed identity sent upstream
            and never forwards it raw. If omitted, requests use an account-level
            identity, so provider policy blocks can affect the whole account.
          example: user-123
          type:
            - string
            - 'null'
        service_tier:
          default: auto
          enum:
            - auto
            - default
            - flex
            - priority
            - scale
            - null
          type:
            - string
            - 'null'
        session_id:
          description: >-
            A unique identifier for grouping related requests (e.g., a
            conversation or agent workflow). When provided, OpenRouter uses it
            as the sticky routing key, routing all requests in the session to
            the same provider to maximize prompt cache hits. Also used for
            observability grouping. If provided in both the request body and the
            x-session-id header, the body value takes precedence. Maximum of 256
            characters.
          maxLength: 256
          type: string
        stop_server_tools_when:
          $ref: '#/components/schemas/StopServerToolsWhen'
        store:
          const: false
          default: false
          type: boolean
        stream:
          default: false
          type: boolean
        temperature:
          format: double
          type:
            - number
            - 'null'
        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/NamespaceTool'
              - $ref: '#/components/schemas/AdvisorServerTool_OpenRouter'
              - $ref: '#/components/schemas/SubagentServerTool_OpenRouter'
              - $ref: '#/components/schemas/DatetimeServerTool'
              - $ref: '#/components/schemas/FilesServerTool'
              - $ref: '#/components/schemas/FusionServerTool_OpenRouter'
              - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
              - $ref: '#/components/schemas/SearchModelsServerTool_OpenRouter'
              - $ref: '#/components/schemas/WebFetchServerTool'
              - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter'
              - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter'
              - $ref: '#/components/schemas/BashServerTool'
              - $ref: '#/components/schemas/ShellServerTool_OpenRouter'
          type: array
        top_k:
          type: integer
        top_logprobs:
          type:
            - integer
            - 'null'
        top_p:
          format: double
          type:
            - number
            - 'null'
        trace:
          $ref: '#/components/schemas/TraceConfig'
        truncation:
          $ref: '#/components/schemas/OpenAIResponsesTruncation'
        user:
          description: >-
            A unique identifier representing your end-user, which helps
            distinguish between different users of your app. This allows your
            app to identify specific users in case of abuse reports, preventing
            your entire app from being affected by the actions of individual
            users. Maximum of 256 characters.
          maxLength: 256
          type: string
      type: object
    ResponsesStreamingResponse:
      example:
        data:
          content_index: 0
          delta: Hello
          item_id: item-1
          logprobs: []
          output_index: 0
          sequence_number: 4
          type: response.output_text.delta
      properties:
        data:
          $ref: '#/components/schemas/StreamEvents'
      required:
        - data
      type: object
    RouterAttempt:
      example:
        model: openai/gpt-4o
        provider: OpenAI
        status: 200
      properties:
        model:
          type: string
        provider:
          type: string
        status:
          type: integer
      required:
        - provider
        - model
        - status
      type: object
    RouterParams:
      additionalProperties: {}
      example:
        version_group: anthropic/claude-sonnet-4
      properties:
        quality_floor:
          format: double
          type: number
        throughput_floor:
          format: double
          type: number
        version_group:
          type: string
      type: object
    RoutingStrategy:
      enum:
        - direct
        - auto
        - free
        - latest
        - alias
        - fallback
        - pareto
        - bodybuilder
        - fusion
      example: direct
      type: string
    SandboxSleepAfterSeconds:
      description: >-
        How long (in seconds) the container stays warm after its last command
        before sleeping, freeing its capacity slot. Idle-based: each command
        renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30
        days).
      example: 900
      type: integer
    SearchContextSizeEnum:
      description: Size of the search context for web search tools
      enum:
        - low
        - medium
        - high
      example: medium
      type: string
    SearchModelsServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: searches and filters AI models
        available on OpenRouter
      example:
        parameters:
          max_results: 5
        type: openrouter:experimental__search_models
      properties:
        parameters:
          $ref: '#/components/schemas/SearchModelsServerToolConfig'
        type:
          enum:
            - openrouter:experimental__search_models
          type: string
      required:
        - type
      type: object
    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. Applies to Exa, Parallel, and
        Perplexity engines; ignored with native provider search and Firecrawl.
        For Exa, pins a fixed per-result character cap (low=5,000,
        medium=15,000, high=30,000); when omitted, Exa picks an adaptive size
        per query and document (typically ~2,000–4,000 characters per result).
        For Parallel, controls the total characters across all results; when
        omitted, Parallel uses its own default size. For Perplexity, maps
        directly to the Search API's native search_context_size parameter.
        Overridden by `max_characters` when both are set.
      enum:
        - low
        - medium
        - high
      example: medium
      type: string
    ServerToolUseDetails:
      description: Usage for server-side tool execution (e.g., web search)
      example:
        tool_calls_executed: 2
        tool_calls_requested: 2
        web_search_requests: 2
      properties:
        tool_calls_executed:
          description: >-
            Number of OpenRouter server tool calls that executed and produced a
            result.
          type:
            - integer
            - 'null'
        tool_calls_requested:
          description: >-
            Total number of OpenRouter server-orchestrated tool calls the model
            requested, across all tool types. Provider-native tools (e.g. native
            web search) are not counted here.
          type:
            - integer
            - 'null'
        web_search_requests:
          description: >-
            Number of web searches performed by server-side tools. For
            server-orchestrated tool calls a web search is also counted in
            tool_calls_requested; provider-native web search may report
            web_search_requests only. Do not sum the two.
          type:
            - integer
            - 'null'
      type:
        - object
        - 'null'
    ServiceTier:
      enum:
        - auto
        - default
        - flex
        - priority
        - scale
        - null
      example: default
      type:
        - string
        - 'null'
    ServiceUnavailableResponse:
      description: Service Unavailable - Service temporarily unavailable
      example:
        error:
          code: 503
          message: Service temporarily unavailable
      properties:
        error:
          $ref: '#/components/schemas/ServiceUnavailableResponseErrorData'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    ShellCallItem:
      description: A shell command execution call (newer variant)
      example:
        action:
          commands:
            - ls
            - '-la'
          max_output_length: 10000
        call_id: call-abc123
        status: completed
        type: shell_call
      properties:
        action:
          properties:
            commands:
              items:
                type: string
              type: array
            max_output_length:
              type:
                - integer
                - 'null'
            timeout_ms:
              type:
                - integer
                - 'null'
          required:
            - commands
          type: object
        call_id:
          type: string
        environment: {}
        id:
          type:
            - string
            - 'null'
        status:
          anyOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - type: 'null'
        type:
          enum:
            - shell_call
          type: string
      required:
        - type
        - call_id
        - action
      type: object
    ShellCallOutputItem:
      description: Output from a shell command execution (newer variant)
      example:
        call_id: call-abc123
        output:
          - content: |
              total 0
            type: stdout
        status: completed
        type: shell_call_output
      properties:
        call_id:
          type: string
        id:
          type:
            - string
            - 'null'
        max_output_length:
          type:
            - integer
            - 'null'
        output:
          items:
            additionalProperties: {}
            properties:
              content:
                type:
                  - string
                  - 'null'
              exit_code:
                type:
                  - integer
                  - 'null'
              type:
                type: string
            required:
              - type
            type: object
          type: array
        status:
          anyOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - type: 'null'
        type:
          enum:
            - shell_call_output
          type: string
      required:
        - type
        - call_id
        - output
      type: object
    ShellCallStatus:
      description: Status of a shell call or its output.
      enum:
        - in_progress
        - completed
        - incomplete
      example: completed
      type: string
    ShellServerTool:
      description: Shell tool configuration
      example:
        type: shell
      properties:
        type:
          enum:
            - shell
          type: string
      required:
        - type
      type: object
    ShellServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: runs shell commands server-side in a
        sandboxed container (a sandbox-backed clone of OpenAI's hosted shell
        tool)
      example:
        parameters:
          engine: openrouter
          environment:
            type: container_auto
        type: openrouter:shell
      properties:
        parameters:
          $ref: '#/components/schemas/ShellServerToolConfig'
        type:
          enum:
            - openrouter:shell
          type: string
      required:
        - type
      type: object
    ShellServerToolConfig:
      description: Configuration for the openrouter:shell server tool
      example:
        engine: openrouter
        environment:
          type: container_auto
      properties:
        engine:
          $ref: '#/components/schemas/ShellServerToolEngine'
        environment:
          $ref: '#/components/schemas/ShellServerToolEnvironment'
        sleep_after_seconds:
          $ref: '#/components/schemas/SandboxSleepAfterSeconds'
      type: object
    ShellServerToolEngine:
      description: >-
        Which shell engine to use. "openrouter" runs commands server-side in the
        OpenRouter sandbox. "auto" (default) keeps the provider's native hosted
        shell when available (OpenAI); on other providers the call is routed to
        the OpenRouter sandbox.
      enum:
        - auto
        - openrouter
      example: openrouter
      type: string
    ShellServerToolEnvironment:
      description: >-
        Server-side execution environment for the shell tool. Only
        container-backed environments are supported; "local" shells are not.
      discriminator:
        mapping:
          container_auto: '#/components/schemas/ContainerAutoEnvironment'
          container_reference: '#/components/schemas/ContainerReferenceEnvironment'
        propertyName: type
      example:
        type: container_auto
      oneOf:
        - $ref: '#/components/schemas/ContainerAutoEnvironment'
        - $ref: '#/components/schemas/ContainerReferenceEnvironment'
    SpeechRequest:
      description: Text-to-speech request input
      example:
        input: Hello world
        model: mistralai/voxtral-mini-tts-2603
        response_format: pcm
        speed: 1
        voice: en_paul_neutral
      properties:
        input:
          description: Text to synthesize
          example: Hello world
          type: string
        model:
          description: TTS model identifier
          example: mistralai/voxtral-mini-tts-2603
          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: en_paul_neutral
          type: string
      required:
        - model
        - input
        - voice
      type: object
    StopServerToolsWhen:
      description: >-
        Stop conditions for the server-tool agent loop. Any condition firing
        halts the loop (OR logic). When set, this overrides `max_tool_calls`.
        When a condition fires while the model is still emitting tool calls, the
        pending tool calls are executed and one final turn is made with tool
        calls disabled so the response ends with a natural-language answer
        instead of an unfinished tool call.
      example:
        - step_count: 5
          type: step_count_is
        - max_cost_in_dollars: 0.5
          type: max_cost
      items:
        $ref: '#/components/schemas/StopServerToolsWhenCondition'
      minItems: 1
      type: array
    StopServerToolsWhenCondition:
      description: A single condition that, when met, halts the server-tool agent loop.
      discriminator:
        mapping:
          finish_reason_is: '#/components/schemas/StopServerToolsWhenFinishReasonIs'
          has_tool_call: '#/components/schemas/StopServerToolsWhenHasToolCall'
          max_cost: '#/components/schemas/StopServerToolsWhenMaxCost'
          max_tokens_used: '#/components/schemas/StopServerToolsWhenMaxTokensUsed'
          step_count_is: '#/components/schemas/StopServerToolsWhenStepCountIs'
        propertyName: type
      example:
        step_count: 5
        type: step_count_is
      oneOf:
        - $ref: '#/components/schemas/StopServerToolsWhenStepCountIs'
        - $ref: '#/components/schemas/StopServerToolsWhenHasToolCall'
        - $ref: '#/components/schemas/StopServerToolsWhenMaxTokensUsed'
        - $ref: '#/components/schemas/StopServerToolsWhenMaxCost'
        - $ref: '#/components/schemas/StopServerToolsWhenFinishReasonIs'
    StopServerToolsWhenFinishReasonIs:
      description: Stop when the upstream model emits this finish reason (e.g. `length`).
      example:
        reason: length
        type: finish_reason_is
      properties:
        reason:
          minLength: 1
          type: string
        type:
          enum:
            - finish_reason_is
          type: string
      required:
        - type
        - reason
      type: object
    StopServerToolsWhenHasToolCall:
      description: Stop after a tool with this name has been called.
      example:
        tool_name: finalize
        type: has_tool_call
      properties:
        tool_name:
          minLength: 1
          type: string
        type:
          enum:
            - has_tool_call
          type: string
      required:
        - type
        - tool_name
      type: object
    StopServerToolsWhenMaxCost:
      description: Stop once cumulative cost across the loop exceeds this dollar threshold.
      example:
        max_cost_in_dollars: 0.5
        type: max_cost
      properties:
        max_cost_in_dollars:
          format: double
          type: number
        type:
          enum:
            - max_cost
          type: string
      required:
        - type
        - max_cost_in_dollars
      type: object
    StopServerToolsWhenMaxTokensUsed:
      description: Stop once cumulative token usage across the loop exceeds this threshold.
      example:
        max_tokens: 10000
        type: max_tokens_used
      properties:
        max_tokens:
          type: integer
        type:
          enum:
            - max_tokens_used
          type: string
      required:
        - type
        - max_tokens
      type: object
    StopServerToolsWhenStepCountIs:
      description: Stop after the agent loop has executed this many steps.
      example:
        step_count: 5
        type: step_count_is
      properties:
        step_count:
          type: integer
        type:
          enum:
            - step_count_is
          type: string
      required:
        - type
        - step_count
      type: object
    StoredPromptTemplate:
      example:
        id: prompt-abc123
        variables:
          name: John
      properties:
        id:
          type: string
        variables:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/InputText'
              - $ref: '#/components/schemas/InputImage'
              - $ref: '#/components/schemas/InputFile'
          type:
            - object
            - 'null'
      required:
        - id
      type:
        - object
        - 'null'
    StreamEvents:
      description: Union of all possible event types emitted during response streaming
      discriminator:
        mapping:
          error: '#/components/schemas/ErrorEvent'
          response.apply_patch_call_operation_diff.delta: '#/components/schemas/ApplyPatchCallOperationDiffDeltaEvent'
          response.apply_patch_call_operation_diff.done: '#/components/schemas/ApplyPatchCallOperationDiffDoneEvent'
          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.custom_tool_call_input.delta: '#/components/schemas/CustomToolCallInputDeltaEvent'
          response.custom_tool_call_input.done: '#/components/schemas/CustomToolCallInputDoneEvent'
          response.debug: '#/components/schemas/DebugEvent'
          response.failed: '#/components/schemas/StreamEventsResponseFailed'
          response.function_call_arguments.delta: '#/components/schemas/FunctionCallArgsDeltaEvent'
          response.function_call_arguments.done: '#/components/schemas/FunctionCallArgsDoneEvent'
          response.fusion_call.analysis.completed: '#/components/schemas/FusionCallAnalysisCompletedEvent'
          response.fusion_call.analysis.in_progress: '#/components/schemas/FusionCallAnalysisInProgressEvent'
          response.fusion_call.completed: '#/components/schemas/FusionCallCompletedEvent'
          response.fusion_call.in_progress: '#/components/schemas/FusionCallInProgressEvent'
          response.fusion_call.panel.added: '#/components/schemas/FusionCallPanelAddedEvent'
          response.fusion_call.panel.completed: '#/components/schemas/FusionCallPanelCompletedEvent'
          response.fusion_call.panel.delta: '#/components/schemas/FusionCallPanelDeltaEvent'
          response.fusion_call.panel.failed: '#/components/schemas/FusionCallPanelFailedEvent'
          response.fusion_call.panel.reasoning.delta: '#/components/schemas/FusionCallPanelReasoningDeltaEvent'
          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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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'
        - $ref: '#/components/schemas/CustomToolCallInputDeltaEvent'
        - $ref: '#/components/schemas/CustomToolCallInputDoneEvent'
        - $ref: '#/components/schemas/ApplyPatchCallOperationDiffDeltaEvent'
        - $ref: '#/components/schemas/ApplyPatchCallOperationDiffDoneEvent'
        - $ref: '#/components/schemas/FusionCallInProgressEvent'
        - $ref: '#/components/schemas/FusionCallPanelAddedEvent'
        - $ref: '#/components/schemas/FusionCallPanelDeltaEvent'
        - $ref: '#/components/schemas/FusionCallPanelReasoningDeltaEvent'
        - $ref: '#/components/schemas/FusionCallPanelCompletedEvent'
        - $ref: '#/components/schemas/FusionCallPanelFailedEvent'
        - $ref: '#/components/schemas/FusionCallAnalysisInProgressEvent'
        - $ref: '#/components/schemas/FusionCallAnalysisCompletedEvent'
        - $ref: '#/components/schemas/FusionCallCompletedEvent'
        - $ref: '#/components/schemas/DebugEvent'
    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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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:
          completed_at: null
          created_at: 1704067200
          error: null
          frequency_penalty: 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
          presence_penalty: null
          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
        response_format:
          description: >-
            Output format. "json" (default) returns { text, usage }.
            "verbose_json" additionally returns task, language, duration, and
            segment-level timestamps; only supported by OpenAI-compatible
            providers.
          enum:
            - json
            - verbose_json
          example: json
          type: string
        temperature:
          description: Sampling temperature for transcription
          example: 0
          format: double
          type: number
        timestamp_granularities:
          description: >-
            Timestamp detail levels to include when response_format is
            "verbose_json". "segment" returns segment-level timestamps; "word"
            additionally returns word-level timestamps in the words array.
            Ignored unless response_format is "verbose_json".
          example:
            - segment
          items:
            $ref: '#/components/schemas/STTTimestampGranularity'
          type: array
      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:
        duration:
          description: >-
            Duration of the input audio in seconds, present when response_format
            is verbose_json
          example: 9.2
          format: double
          type: number
        language:
          description: >-
            Detected or forced language, present when response_format is
            verbose_json
          example: english
          type: string
        segments:
          description: >-
            Timestamped transcript segments, present when response_format is
            verbose_json
          items:
            $ref: '#/components/schemas/STTSegment'
          type: array
        task:
          description: The task performed, present when response_format is verbose_json
          example: transcribe
          type: string
        text:
          description: The transcribed text
          example: >-
            Hello, this is a test of OpenAI speech-to-text transcription. The
            weather is sunny today and the temperature is around 72 degrees.
          type: string
        usage:
          $ref: '#/components/schemas/STTUsage'
        words:
          description: >-
            Timestamped words, present when the provider returns word-level
            timestamps
          items:
            $ref: '#/components/schemas/STTWord'
          type: array
      required:
        - text
      type: object
    STTSegment:
      description: >-
        A timestamped transcript segment, returned when response_format is
        verbose_json
      example:
        avg_logprob: -0.28
        compression_ratio: 1.13
        end: 3.2
        id: 0
        no_speech_prob: 0.01
        seek: 0
        speaker: 0
        start: 0
        temperature: 0
        text: Hello there.
        tokens:
          - 50364
          - 2425
          - 456
      properties:
        avg_logprob:
          description: Average log probability of the segment
          format: double
          type: number
        compression_ratio:
          description: Compression ratio of the segment
          format: double
          type: number
        end:
          description: Segment end time in seconds
          example: 3.2
          format: double
          type: number
        id:
          description: Segment index within the transcript
          example: 0
          type: integer
        no_speech_prob:
          description: Probability the segment contains no speech
          format: double
          type: number
        seek:
          description: Seek offset of the segment
          example: 0
          type: integer
        speaker:
          description: >-
            Speaker index for the segment, present when the provider returns
            diarization data
          example: 0
          type: integer
        start:
          description: Segment start time in seconds
          example: 0
          format: double
          type: number
        temperature:
          description: Temperature used for the segment
          format: double
          type: number
        text:
          description: Transcribed text of the segment
          example: Hello there.
          type: string
        tokens:
          description: Token IDs of the segment
          items:
            type: integer
          type: array
      required:
        - id
        - start
        - end
        - text
      type: object
    STTTimestampGranularity:
      description: A timestamp detail level for verbose_json transcription responses.
      enum:
        - word
        - segment
      example: word
      type: string
    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
    STTWord:
      description: >-
        A timestamped word, returned when the provider includes word-level
        timestamps
      example:
        end: 0.4
        speaker: 0
        start: 0
        word: Hello
      properties:
        end:
          description: Word end time in seconds
          example: 0.4
          format: double
          type: number
        speaker:
          description: >-
            Speaker index for the word, present when the provider returns
            diarization data
          example: 0
          type: integer
        start:
          description: Word start time in seconds
          example: 0
          format: double
          type: number
        word:
          description: The transcribed word
          example: Hello
          type: string
      required:
        - word
        - start
        - end
      type: object
    SubagentNestedTool:
      additionalProperties: {}
      description: >-
        A tool made available to the subagent. Only OpenRouter server tools
        (e.g. openrouter:web_search) are supported; function tools are rejected
        because the worker has no way to execute them. The subagent tool may not
        list itself.
      example:
        type: openrouter:web_search
      properties:
        parameters:
          additionalProperties: {}
          type: object
        type:
          type: string
      required:
        - type
      type: object
    SubagentReasoning:
      description: >-
        Reasoning configuration forwarded to the subagent call. Use this to
        control reasoning effort and token budget for models that support
        extended thinking.
      example:
        effort: low
      properties:
        effort:
          description: Reasoning effort level for the subagent call.
          enum:
            - max
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
          type: string
        max_tokens:
          description: >-
            Maximum number of reasoning tokens the subagent may use. Accepted
            and validated but not yet forwarded to the subagent call.
          type: integer
      type: object
    SubagentServerTool_OpenRouter:
      description: >-
        OpenRouter built-in server tool: delegates self-contained tasks to a
        smaller, cheaper, faster worker model (any OpenRouter model)
        mid-generation and returns its outcome. The worker may run as a
        sub-agent with its own tools.
      example:
        parameters:
          model: ~anthropic/claude-haiku-latest
        type: openrouter:subagent
      properties:
        parameters:
          $ref: '#/components/schemas/SubagentServerToolConfig'
        type:
          enum:
            - openrouter:subagent
          type: string
      required:
        - type
      type: object
    SubagentServerToolConfig:
      description: Configuration for one openrouter:subagent server tool entry.
      example:
        model: ~anthropic/claude-haiku-latest
        name: summarizer
      properties:
        instructions:
          description: >-
            System instructions for the subagent. When omitted, the subagent
            responds with no system prompt of its own.
          example: >-
            You are a fast, focused worker. Complete the task exactly as
            described.
          type: string
        max_completion_tokens:
          description: >-
            Maximum number of output tokens (including reasoning) the subagent
            may produce. When omitted, the provider's default applies.
          example: 2048
          type: integer
        max_tool_calls:
          description: >-
            Maximum number of tool-calling steps the subagent may take during
            its agentic loop. Capped at 25. Only relevant when the subagent is
            given tools. Accepted and validated but not yet enforced on the
            subagent call.
          example: 5
          maximum: 25
          minimum: 1
          type: integer
        model:
          description: >-
            Slug of the model that executes delegated tasks (any OpenRouter
            model). Typically a smaller, cheaper, faster model than the one
            delegating. When omitted, the model from the outer API request is
            used. The subagent tool itself cannot be the subagent model.
          example: ~anthropic/claude-haiku-latest
          type: string
        name:
          description: >-
            Optional name for this subagent. The model sees one tool per named
            subagent (and one default for an unnamed entry). Names must be
            unique across subagent entries. Letters, digits, spaces,
            underscores, and dashes; trimmed; 1–64 chars.
          example: summarizer
          maxLength: 64
          minLength: 1
          pattern: ^[a-zA-Z0-9 _-]+$
          type: string
        reasoning:
          $ref: '#/components/schemas/SubagentReasoning'
        temperature:
          description: >-
            Sampling temperature forwarded to the subagent call. When omitted,
            the provider's default applies.
          example: 0.7
          format: double
          type: number
        tools:
          description: >-
            Tools the subagent may use while executing a delegated task. The
            subagent runs as an agentic sub-agent over these tools, then returns
            its outcome. Only OpenRouter server tools are supported — function
            tools are rejected — and the list must not include the subagent tool
            itself.
          items:
            $ref: '#/components/schemas/SubagentNestedTool'
          type: array
      type: object
    SubmitGenerationFeedbackRequest:
      description: Structured feedback about a specific generation
      example:
        category: incorrect_response
        comment: The model repeated the same paragraph three times.
        generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
      properties:
        category:
          description: The category of feedback being reported
          enum:
            - latency
            - incoherence
            - incorrect_response
            - formatting
            - billing
            - api_error
            - other
          example: incorrect_response
          type: string
        comment:
          description: An optional free-text comment describing the feedback
          example: The model repeated the same paragraph three times.
          maxLength: 1000
          type: string
        generation_id:
          description: The generation to submit feedback on
          example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
          minLength: 1
          type: string
      required:
        - generation_id
        - category
      type: object
    SubmitGenerationFeedbackResponse:
      description: Confirmation that the feedback was recorded
      example:
        data:
          success: true
      properties:
        data:
          properties:
            success:
              const: true
              description: Whether the feedback was recorded
              example: true
              type: boolean
          required:
            - success
          type: object
      required:
        - data
      type: object
    SupportedParameters:
      additionalProperties:
        $ref: '#/components/schemas/CapabilityDescriptor'
      description: >-
        Union of supported parameters across every endpoint of this model.
        Coarse discovery aid; the definitive per-endpoint set is behind the
        endpoints URL.
      example:
        output_compression:
          max: 100
          min: 0
          type: range
        resolution:
          type: enum
          values:
            - 1K
            - 2K
            - 4K
        seed:
          type: boolean
      type: object
    TaskClassificationItem:
      example:
        category_token_share: 0.48
        category_usage_share: 0.51
        display_name: Code Generation
        macro_category: code
        models:
          - id: openai/gpt-4.1-mini
            tag_token_share: 0.75
            tag_usage_share: 0.55
          - id: anthropic/claude-sonnet-4
            tag_token_share: 0.12
            tag_usage_share: 0.2
        tag: code:general_impl
        token_share: 0.31
        usage_share: 0.23
      properties:
        category_token_share:
          description: >-
            Fraction of this classification's token volume within its
            macro-category (0–1). Sums to 1 across all classifications sharing
            the same `macro_category`.
          example: 0.48
          format: double
          type: number
        category_usage_share:
          description: >-
            Fraction of this classification's usage within its macro-category
            (0–1). Sums to 1 across all classifications sharing the same
            `macro_category`.
          example: 0.51
          format: double
          type: number
        display_name:
          description: Human-readable label for the classification.
          example: Code Generation
          type: string
        macro_category:
          description: >-
            Coarse grouping derived from the tag prefix: `code`, `data`,
            `agent`, or `general`.
          example: code
          type: string
        models:
          description: >-
            Top models for this classification by request volume, sorted
            descending. Each entry reports the model's share of this
            classification's requests and tokens.
          items:
            $ref: '#/components/schemas/TaskClassificationModel'
          type: array
        tag:
          description: >-
            Classification tag identifier (e.g. `code:general_impl`,
            `agent:web_search`).
          example: code:general_impl
          type: string
        token_share:
          description: >-
            Fraction of classified sampled token volume (prompt + completion)
            attributed to this classification (0–1). The unclassified `other`
            bucket is excluded from the denominator.
          example: 0.31
          format: double
          type: number
        usage_share:
          description: >-
            Fraction of classified sampled requests attributed to this
            classification (0–1). The unclassified `other` bucket is excluded
            from the denominator.
          example: 0.23
          format: double
          type: number
      required:
        - tag
        - display_name
        - macro_category
        - usage_share
        - token_share
        - category_usage_share
        - category_token_share
        - models
      type: object
    TaskClassificationMacroCategory:
      example:
        key: code
        label: Code
        token_share: 0.52
        usage_share: 0.45
      properties:
        key:
          description: Macro-category identifier.
          example: code
          type: string
        label:
          description: Human-readable label for the macro-category.
          example: Code
          type: string
        token_share:
          description: >-
            Combined token share of all classifications in this macro-category
            (0–1).
          example: 0.52
          format: double
          type: number
        usage_share:
          description: >-
            Combined usage share of all classifications in this macro-category
            (0–1).
          example: 0.45
          format: double
          type: number
      required:
        - key
        - label
        - usage_share
        - token_share
      type: object
    TaskClassificationModel:
      example:
        id: openai/gpt-4.1-mini
        tag_token_share: 0.75
        tag_usage_share: 0.55
      properties:
        id:
          description: Model identifier (permaslug).
          example: openai/gpt-4.1-mini
          type: string
        tag_token_share:
          description: >-
            Fraction of this classification's sampled token volume attributed to
            this model (0–1). Sums to ≤1 across the returned models (only top-N
            are included and unattributed requests are excluded).
          example: 0.75
          format: double
          type: number
        tag_usage_share:
          description: >-
            Fraction of this classification's sampled requests attributed to
            this model (0–1). Sums to ≤1 across the returned models (only top-N
            are included and unattributed requests are excluded).
          example: 0.55
          format: double
          type: number
      required:
        - id
        - tag_usage_share
        - tag_token_share
      type: object
    TaskClassificationResponse:
      example:
        data:
          as_of: '2026-06-17'
          classifications:
            - category_token_share: 0.48
              category_usage_share: 0.51
              display_name: Code Generation
              macro_category: code
              models:
                - id: openai/gpt-4.1-mini
                  tag_token_share: 0.75
                  tag_usage_share: 0.55
              tag: code:general_impl
              token_share: 0.31
              usage_share: 0.23
          macro_categories:
            - key: code
              label: Code
              token_share: 0.52
              usage_share: 0.45
          window_days: 7
      properties:
        data:
          properties:
            as_of:
              description: >-
                UTC date (YYYY-MM-DD) of the window upper bound (yesterday).
                Data is exclusive of the current incomplete UTC day. This is the
                expected latest date in the snapshot; it does not confirm data
                presence for that date.
              example: '2026-06-17'
              type: string
            classifications:
              description: >-
                Per-task classification market-share data, sorted by usage_share
                descending.
              items:
                $ref: '#/components/schemas/TaskClassificationItem'
              type: array
            macro_categories:
              description: >-
                Aggregate market-share data per macro-category (code, data,
                agent, general).
              items:
                $ref: '#/components/schemas/TaskClassificationMacroCategory'
              type: array
            window_days:
              description: Number of trailing days covered by this snapshot.
              example: 7
              type: integer
          required:
            - window_days
            - as_of
            - classifications
            - macro_categories
          type: object
      required:
        - data
      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
          type:
            - string
            - 'null'
      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
              type:
                - string
                - 'null'
          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: {}
            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'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    TopProviderInfo:
      description: Information about the top provider for this model
      example:
        context_length: 8192
        is_moderated: true
        max_completion_tokens: 4096
      properties:
        context_length:
          description: Context length from the top provider
          example: 8192
          type:
            - integer
            - 'null'
        is_moderated:
          description: Whether the top provider moderates content
          example: true
          type: boolean
        max_completion_tokens:
          description: Maximum completion tokens from the top provider
          example: 4096
          type:
            - integer
            - 'null'
      required:
        - is_moderated
      type: object
    TraceConfig:
      additionalProperties: {}
      description: >-
        Metadata for observability and tracing. Known keys (trace_id,
        trace_name, span_name, generation_name, parent_span_id) have special
        handling. Additional keys are passed through as custom metadata to
        configured broadcast destinations.
      example:
        trace_id: trace-abc123
        trace_name: my-app-trace
      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
      type:
        - string
        - 'null'
    UnauthorizedResponse:
      description: Unauthorized - Authentication required or invalid credentials
      example:
        error:
          code: 401
          message: Missing Authentication header
      properties:
        error:
          $ref: '#/components/schemas/UnauthorizedResponseErrorData'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    UnifiedBenchmarkPricing:
      description: >-
        OpenRouter pricing per token for this model. Null if pricing is
        unavailable.
      example:
        completion: '0.000015'
        prompt: '0.000003'
      properties:
        completion:
          description: Cost per output token (USD, decimal string).
          example: '0.000015'
          type: string
        prompt:
          description: Cost per input token (USD, decimal string).
          example: '0.000003'
          type: string
      required:
        - prompt
        - completion
      type:
        - object
        - 'null'
    UnifiedBenchmarksAAItem:
      example:
        agentic_index: 58.3
        coding_index: 65.8
        display_name: GPT-4o
        intelligence_index: 71.2
        model_permaslug: openai/gpt-4o
        pricing:
          completion: '0.00001'
          prompt: '0.0000025'
        source: artificial-analysis
      properties:
        agentic_index:
          description: Artificial Analysis Agentic Index composite score. Higher is better.
          example: 58.3
          format: double
          type:
            - number
            - 'null'
        coding_index:
          description: Artificial Analysis Coding Index composite score. Higher is better.
          example: 65.8
          format: double
          type:
            - number
            - 'null'
        display_name:
          description: Model name as listed on Artificial Analysis.
          example: GPT-4o
          type: string
        intelligence_index:
          description: >-
            Artificial Analysis Intelligence Index composite score. Higher is
            better.
          example: 71.2
          format: double
          type:
            - number
            - 'null'
        model_permaslug:
          description: Stable OpenRouter model identifier.
          example: openai/gpt-4o
          type: string
        pricing:
          $ref: '#/components/schemas/UnifiedBenchmarkPricing'
        source:
          description: Benchmark source discriminator.
          enum:
            - artificial-analysis
          type: string
      required:
        - source
        - model_permaslug
        - display_name
        - intelligence_index
        - coding_index
        - agentic_index
        - pricing
      type: object
    UnifiedBenchmarksDAItem:
      example:
        arena: models
        avg_generation_time_ms: 3200
        category: codecategories
        display_name: Claude Sonnet 4
        elo: 1423
        model_permaslug: anthropic/claude-sonnet-4
        pricing:
          completion: '0.000015'
          prompt: '0.000003'
        source: design-arena
        tournament_stats:
          first_place: 12
          fourth_place: 2
          second_place: 8
          third_place: 5
          total: 27
        win_rate: 72
      properties:
        arena:
          description: Arena this ranking belongs to.
          example: models
          type: string
        avg_generation_time_ms:
          description: Average generation time in milliseconds.
          example: 3200
          format: double
          type:
            - number
            - 'null'
        category:
          description: Category within the arena.
          example: codecategories
          type: string
        display_name:
          description: Human-readable model name from Design Arena.
          example: Claude Sonnet 4
          type: string
        elo:
          description: ELO rating from head-to-head arena battles.
          example: 1423
          format: double
          type: number
        model_permaslug:
          description: >-
            Stable OpenRouter model identifier when mapped; otherwise the
            upstream Design Arena model id.
          example: anthropic/claude-sonnet-4
          type: string
        pricing:
          $ref: '#/components/schemas/UnifiedBenchmarkPricing'
        source:
          description: Benchmark source discriminator.
          enum:
            - design-arena
          type: string
        tournament_stats:
          description: Placement distribution from tournament matches.
          properties:
            first_place:
              type:
                - integer
                - 'null'
            fourth_place:
              type:
                - integer
                - 'null'
            second_place:
              type:
                - integer
                - 'null'
            third_place:
              type:
                - integer
                - 'null'
            total:
              type:
                - integer
                - 'null'
          required:
            - first_place
            - second_place
            - third_place
            - fourth_place
            - total
          type: object
        win_rate:
          description: Win rate as a percentage (0–100).
          example: 72
          format: double
          type: number
      required:
        - source
        - model_permaslug
        - display_name
        - arena
        - category
        - elo
        - win_rate
        - avg_generation_time_ms
        - tournament_stats
        - pricing
      type: object
    UnifiedBenchmarksMeta:
      example:
        as_of: '2026-06-03T12:00:00Z'
        citation: >-
          Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter
          (openrouter.ai/rankings).
        model_count: 50
        source: artificial-analysis
        source_url: https://artificialanalysis.ai
        task_type: null
        version: v1
      properties:
        as_of:
          description: ISO-8601 timestamp of when this data was last updated.
          example: '2026-06-03T12:00:00Z'
          type: string
        citation:
          description: >-
            Required attribution when republishing this data, or null when
            results span multiple sources (attribute each item individually by
            its `source` discriminator).
          example: >-
            Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter
            (openrouter.ai/rankings).
          type:
            - string
            - 'null'
        model_count:
          description: Number of unique models in the response.
          type: integer
        source:
          description: The source filter applied, or null when all sources are returned.
          enum:
            - artificial-analysis
            - design-arena
            - openrouter
            - null
          example: artificial-analysis
          type:
            - string
            - 'null'
        source_url:
          description: >-
            URL of the upstream data source, or null when results span multiple
            sources.
          example: https://artificialanalysis.ai
          type:
            - string
            - 'null'
        task_type:
          description: The task_type filter applied, or null if showing all.
          type:
            - string
            - 'null'
        version:
          description: Dataset version.
          enum:
            - v1
          type: string
      required:
        - as_of
        - version
        - source
        - source_url
        - citation
        - model_count
        - task_type
      type: object
    UnifiedBenchmarksORItem:
      example:
        accuracy: 0.72
        accuracy_stddev: 0.03
        avg_cost_per_task: 0.002
        benchmark_type: gpqa_diamond
        display_name: GPT-4o
        last_run_timestamp: '2026-06-03T12:00:00Z'
        model_permaslug: openai/gpt-4o
        source: openrouter
        total_tasks: 300
      properties:
        accuracy:
          description: Aggregate accuracy score from 0 to 1. Higher is better.
          example: 0.72
          format: double
          type: number
        accuracy_stddev:
          description: Standard deviation of run accuracy, or null for a single run.
          example: 0.03
          format: double
          type:
            - number
            - 'null'
        avg_cost_per_task:
          description: Average cost per task in USD, or null if unavailable.
          example: 0.002
          format: double
          type:
            - number
            - 'null'
        benchmark_type:
          description: OpenRouter benchmark evaluation type.
          enum:
            - gpqa_diamond
            - tau_bench_verified_airline
          example: gpqa_diamond
          type: string
        display_name:
          description: Human-readable model name.
          example: GPT-4o
          type: string
        last_run_timestamp:
          description: Timestamp of the most recent public benchmark run.
          example: '2026-06-03T12:00:00Z'
          type: string
        model_permaslug:
          description: Stable OpenRouter model identifier.
          example: openai/gpt-4o
          type: string
        source:
          description: Benchmark source discriminator.
          enum:
            - openrouter
          type: string
        total_tasks:
          description: Total benchmark tasks across runs.
          example: 300
          type: integer
      required:
        - source
        - model_permaslug
        - display_name
        - benchmark_type
        - accuracy
        - accuracy_stddev
        - avg_cost_per_task
        - total_tasks
        - last_run_timestamp
      type: object
    UnifiedBenchmarksResponse:
      example:
        data:
          - agentic_index: 58.3
            coding_index: 65.8
            display_name: GPT-4o
            intelligence_index: 71.2
            model_permaslug: openai/gpt-4o
            pricing:
              completion: '0.00001'
              prompt: '0.0000025'
            source: artificial-analysis
          - accuracy: 0.72
            accuracy_stddev: 0.03
            avg_cost_per_task: 0.002
            benchmark_type: gpqa_diamond
            display_name: GPT-4o
            last_run_timestamp: '2026-06-03T12:00:00Z'
            model_permaslug: openai/gpt-4o
            source: openrouter
            total_tasks: 300
        meta:
          as_of: '2026-06-03T12:00:00Z'
          citation: null
          model_count: 1
          source: null
          source_url: null
          task_type: null
          version: v1
      properties:
        data:
          items:
            discriminator:
              mapping:
                artificial-analysis: '#/components/schemas/UnifiedBenchmarksAAItem'
                design-arena: '#/components/schemas/UnifiedBenchmarksDAItem'
                openrouter: '#/components/schemas/UnifiedBenchmarksORItem'
              propertyName: source
            oneOf:
              - $ref: '#/components/schemas/UnifiedBenchmarksAAItem'
              - $ref: '#/components/schemas/UnifiedBenchmarksDAItem'
              - $ref: '#/components/schemas/UnifiedBenchmarksORItem'
          type: array
        meta:
          $ref: '#/components/schemas/UnifiedBenchmarksMeta'
      required:
        - data
        - meta
      type: object
    UnprocessableEntityResponse:
      description: Unprocessable Entity - Semantic validation failure
      example:
        error:
          code: 422
          message: Invalid argument
      properties:
        error:
          $ref: '#/components/schemas/UnprocessableEntityResponseErrorData'
        openrouter_metadata:
          additionalProperties: {}
          type:
            - object
            - 'null'
        user_id:
          type:
            - string
            - 'null'
      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: {}
          type:
            - object
            - 'null'
      required:
        - code
        - message
      type: object
    UpdateBYOKKeyRequest:
      example:
        disabled: false
        name: Updated OpenAI Key
      properties:
        allowed_models:
          description: >-
            Optional allowlist of model slugs this credential may be used for.
            `null` means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        allowed_user_ids:
          description: >-
            Optional allowlist of user IDs that may use this credential. `null`
            means no restriction.
          example: null
          items:
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        disabled:
          description: Whether this credential is disabled.
          example: false
          type: boolean
        is_fallback:
          description: >-
            Whether this credential is treated as a fallback — used only after
            non-fallback keys for the same provider have been tried.
          example: false
          type: boolean
        key:
          description: >-
            A new raw provider API key to rotate the credential in-place. The
            previous key material is overwritten and the masked label is
            regenerated. Encrypted at rest and never returned in API responses.
          example: sk-proj-newkey456...
          minLength: 1
          type: string
        name:
          description: Optional human-readable name for the credential.
          example: Updated OpenAI Key
          maxLength: 255
          type:
            - string
            - 'null'
      type: object
    UpdateBYOKKeyResponse:
      example:
        data:
          allowed_api_key_hashes: null
          allowed_models: null
          allowed_user_ids: null
          created_at: '2025-08-24T10:30:00Z'
          disabled: false
          id: 11111111-2222-3333-4444-555555555555
          is_fallback: false
          label: sk-...AbCd
          name: Updated OpenAI Key
          provider: openai
          sort_order: 0
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/BYOKKey'
            - description: The updated BYOK credential.
      required:
        - data
      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
          type:
            - array
            - 'null'
        allowed_providers:
          description: New list of allowed provider IDs
          example:
            - openai
            - anthropic
            - deepseek
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        content_filter_builtins:
          description: >-
            Builtin content filters to apply. Set to null to remove. Every
            builtin slug supports "block", "redact", and the detect-only "flag"
            action.
          example:
            - action: block
              slug: regex-prompt-injection
          items:
            $ref: '#/components/schemas/ContentFilterBuiltinEntryInput'
          type:
            - array
            - 'null'
        content_filters:
          description: Custom regex content filters to apply. Set to null to remove.
          example: null
          items:
            $ref: '#/components/schemas/ContentFilterEntry'
          type:
            - array
            - 'null'
        description:
          description: New description for the guardrail
          example: Updated description
          maxLength: 1000
          type:
            - string
            - 'null'
        enable_free_model_publication:
          description: Whether this guardrail allows free endpoints that publish prompts.
          example: false
          type:
            - boolean
            - 'null'
        enable_free_model_training:
          description: >-
            Whether this guardrail allows free endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enable_paid_model_training:
          description: >-
            Whether this guardrail allows paid endpoints that train on request
            data.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai,
            enforce_zdr_google, enforce_zdr_xai, and enforce_zdr_other instead.
            When provided, its value is copied into any of those per-provider
            fields that are not explicitly specified on the request.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr_anthropic:
          description: >-
            Whether to enforce zero data retention for Anthropic models. Falls
            back to enforce_zdr when not provided.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr_google:
          description: >-
            Whether to enforce zero data retention for Google models. Falls back
            to enforce_zdr when not provided.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr_openai:
          description: >-
            Whether to enforce zero data retention for OpenAI models. Falls back
            to enforce_zdr when not provided.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from
            Anthropic, OpenAI, Google, or xAI. Falls back to enforce_zdr when
            not provided.
          example: true
          type:
            - boolean
            - 'null'
        enforce_zdr_xai:
          description: >-
            Whether to enforce zero data retention for xAI models. Falls back to
            enforce_zdr when not provided.
          example: true
          type:
            - boolean
            - 'null'
        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
          type:
            - array
            - 'null'
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        include_byok_in_budgets:
          description: >-
            Whether BYOK (bring-your-own-key) inference spend counts toward this
            guardrail's limit_usd, in addition to OpenRouter credit spend. Omit
            to leave unchanged.
          example: true
          type: boolean
        limit_usd:
          description: New spending limit in USD
          example: 75
          format: double
          type:
            - number
            - 'null'
        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
          content_filter_builtins:
            - action: redact
              label: '[EMAIL]'
              slug: email
          content_filters: null
          created_at: '2025-08-24T10:30:00Z'
          description: Updated description
          enforce_zdr: null
          enforce_zdr_anthropic: true
          enforce_zdr_google: true
          enforce_zdr_openai: true
          enforce_zdr_other: true
          enforce_zdr_xai: true
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          include_byok_in_budgets: true
          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
    UpdateObservabilityDestinationRequest:
      example:
        enabled: false
        name: Updated Langfuse
      properties:
        api_key_hashes:
          description: >-
            Optional allowlist of OpenRouter API key hashes. `null` clears the
            filter (all keys). Omitting leaves the current value. Must contain
            at least one hash if provided.
          example: null
          items:
            type: string
          minItems: 1
          type:
            - array
            - 'null'
        config:
          additionalProperties: {}
          description: >-
            Provider-specific configuration fields to update. Masked values are
            ignored; unset fields keep their current value.
          example:
            baseUrl: https://us.cloud.langfuse.com
            publicKey: pk-l...EfGh
            secretKey: sk-l...AbCd
          type: object
        enabled:
          description: Whether the destination is enabled.
          example: true
          type: boolean
        filter_rules:
          allOf:
            - $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable'
            - description: >-
                Optional structured filter rules. `null` clears the rules.
                Omitting keeps the current value.
        name:
          description: Human-readable name for the destination.
          example: Production Langfuse
          type: string
        privacy_mode:
          description: >-
            When true, request/response bodies are not forwarded — only
            metadata.
          example: false
          type: boolean
        sampling_rate:
          description: Sampling rate between 0.0001 and 1 (1 = 100%).
          example: 1
          format: double
          type: number
      type: object
    UpdateObservabilityDestinationResponse:
      example:
        data:
          api_key_hashes: null
          config:
            baseUrl: https://us.cloud.langfuse.com
            publicKey: pk-l...EfGh
            secretKey: sk-l...AbCd
          created_at: '2025-08-24T10:30:00Z'
          enabled: true
          filter_rules: null
          id: 99999999-aaaa-bbbb-cccc-dddddddddddd
          name: Production Langfuse
          privacy_mode: false
          sampling_rate: 1
          type: langfuse
          updated_at: '2025-08-24T15:45:00Z'
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/ObservabilityDestination'
            - description: The updated observability destination.
      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
          type:
            - string
            - 'null'
        default_provider_sort:
          description: >-
            Default provider sort preference (price, throughput, latency,
            exacto)
          example: price
          type:
            - string
            - 'null'
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          type:
            - string
            - 'null'
        description:
          description: New description for the workspace
          example: Updated description
          maxLength: 500
          type:
            - string
            - 'null'
        io_logging_api_key_ids:
          description: Optional array of API key IDs to filter I/O logging
          example: null
          items:
            type: integer
          type:
            - array
            - 'null'
        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 (lowercase alphanumeric segments separated by
            single hyphens, no leading/trailing hyphens)
          example: updated-workspace
          maxLength: 50
          minLength: 1
          pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
          type: string
      type: object
    UpdateWorkspaceResponse:
      example:
        data:
          created_at: '2025-08-24T10:30:00Z'
          created_by: user_abc123
          default_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
          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
    UpsertWorkspaceBudgetRequest:
      example:
        limit_usd: 100
      properties:
        limit_usd:
          description: Spending limit in USD. Must be greater than 0.
          example: 100
          format: double
          type: number
      required:
        - limit_usd
      type: object
    UpsertWorkspaceBudgetResponse:
      example:
        data:
          created_at: '2025-08-24T10:30:00Z'
          id: 770e8400-e29b-41d4-a716-446655440000
          limit_usd: 100
          reset_interval: monthly
          updated_at: '2025-08-24T15:45:00Z'
          workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/WorkspaceBudget'
            - description: The created or updated budget
      required:
        - data
      type: object
    URLCitation:
      example:
        content: >-
          OpenRouter provides a unified API for accessing LLMs from multiple
          providers.
        end_index: 42
        start_index: 0
        title: OpenRouter Documentation
        type: url_citation
        url: https://openrouter.ai/docs
      properties:
        content:
          type: string
        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:
      anyOf:
        - allOf:
            - $ref: '#/components/schemas/OpenAIResponsesUsage'
            - properties:
                cost:
                  description: Cost of the completion
                  format: double
                  type:
                    - number
                    - 'null'
                cost_details:
                  properties:
                    upstream_inference_cost:
                      format: double
                      type:
                        - number
                        - 'null'
                    upstream_inference_input_cost:
                      format: double
                      type: number
                    upstream_inference_output_cost:
                      format: double
                      type: number
                  required:
                    - upstream_inference_input_cost
                    - upstream_inference_output_cost
                  type: object
                is_byok:
                  description: >-
                    Whether a request was made using a Bring Your Own Key
                    configuration
                  type: boolean
                server_tool_use_details:
                  $ref: '#/components/schemas/ServerToolUseDetails'
              type: object
        - type: 'null'
      description: Token usage information for the response
      example:
        cost: 0.0012
        cost_details:
          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'
            - '3:2'
            - '2:3'
            - '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 assets to guide video generation. Accepts image, audio,
            and video references. Audio and video references are only honored by
            providers that support them (currently BytePlus Seedance 2.0); other
            providers use image references and ignore the rest.
          items:
            $ref: '#/components/schemas/InputReference'
          type: array
        model:
          type: string
        prompt:
          description: >-
            Text prompt describing the video to generate. Optional for models
            that support generating a video from image input alone; required by
            all other models.
          example: A serene mountain landscape at sunset
          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:
        - model
      type: object
    VideoGenerationResponse:
      example:
        generation_id: gen-xyz789
        id: job-abc123
        polling_url: /api/v1/videos/job-abc123
        status: pending
      properties:
        error:
          type: string
        generation_id:
          description: >-
            The generation ID associated with this video generation job.
            Available once the job has been processed.
          type: string
        id:
          type: string
        polling_url:
          type: string
        status:
          enum:
            - pending
            - in_progress
            - completed
            - failed
            - cancelled
            - expired
          type: string
        unsigned_urls:
          items:
            type: string
          type: array
        usage:
          $ref: '#/components/schemas/VideoGenerationUsage'
      required:
        - id
        - polling_url
        - status
      type: object
    VideoGenerationUsage:
      description: >-
        Usage and cost information for the video generation. Available once the
        job has completed.
      example:
        cost: 0.5
        is_byok: false
      properties:
        cost:
          description: The cost of the video generation in USD.
          format: double
          type:
            - number
            - 'null'
        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
          type:
            - boolean
            - 'null'
        hugging_face_id:
          description: Hugging Face model identifier, if applicable
          example: microsoft/DialoGPT-medium
          type:
            - string
            - 'null'
        id:
          description: Unique identifier for the model
          example: openai/gpt-4
          type: string
        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
          type:
            - object
            - 'null'
        seed:
          description: >-
            Whether the model supports deterministic generation via seed
            parameter
          type:
            - boolean
            - 'null'
        supported_aspect_ratios:
          description: Supported output aspect ratios
          items:
            enum:
              - '16:9'
              - '9:16'
              - '1:1'
              - '4:3'
              - '3:4'
              - '3:2'
              - '2:3'
              - '21:9'
              - '9:21'
            type: string
          type:
            - array
            - 'null'
        supported_durations:
          description: Supported video durations in seconds
          items:
            type: integer
          type:
            - array
            - 'null'
        supported_frame_images:
          description: Supported frame image types (e.g. first_frame, last_frame)
          items:
            enum:
              - first_frame
              - last_frame
            type: string
          type:
            - array
            - 'null'
        supported_resolutions:
          description: Supported output resolutions
          items:
            enum:
              - 480p
              - 720p
              - 1080p
              - 1K
              - 2K
              - 4K
            type: string
          type:
            - array
            - 'null'
        supported_sizes:
          description: Supported output sizes (width x height)
          items:
            enum:
              - 480x480
              - 480x640
              - 480x720
              - 480x854
              - 480x1120
              - 640x480
              - 720x480
              - 720x720
              - 720x960
              - 720x1080
              - 720x1280
              - 720x1680
              - 854x480
              - 960x720
              - 1080x720
              - 1080x1080
              - 1080x1440
              - 1080x1620
              - 1080x1920
              - 1080x2520
              - 1120x480
              - 1280x720
              - 1440x1080
              - 1620x1080
              - 1680x720
              - 1920x1080
              - 2160x2160
              - 2160x2880
              - 2160x3240
              - 2160x3840
              - 2160x5040
              - 2520x1080
              - 2880x2160
              - 3240x2160
              - 3840x2160
              - 5040x2160
            type: string
          type:
            - array
            - 'null'
      required:
        - id
        - canonical_slug
        - name
        - created
        - supported_resolutions
        - supported_aspect_ratios
        - supported_sizes
        - supported_durations
        - supported_frame_images
        - generate_audio
        - seed
        - allowed_passthrough_parameters
      type: object
    VideoModelsListResponse:
      example:
        data:
          - allowed_passthrough_parameters: []
            canonical_slug: google/veo-3.1
            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. "openrouter" uses direct HTTP fetch.
        "firecrawl" uses Firecrawl scrape (requires BYOK). "parallel" uses the
        Parallel extract API.
      enum:
        - auto
        - native
        - openrouter
        - exa
        - parallel
        - firecrawl
      example: auto
      type: string
    WebFetchPlugin:
      example:
        id: web-fetch
        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
        id:
          enum:
            - web-fetch
          type: string
        max_content_tokens:
          description: >-
            Maximum content length in approximate tokens. Content exceeding this
            limit is truncated.
          type: integer
        max_uses:
          description: >-
            Maximum number of web fetches per request. Once exceeded, the tool
            returns an error.
          type: integer
      required:
        - id
      type: object
    WebFetchServerTool:
      description: >-
        OpenRouter built-in server tool: fetches full content from a URL (web
        page or PDF)
      example:
        parameters:
          max_uses: 10
        type: openrouter:web_fetch
      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, Firecrawl,
            Parallel, Perplexity, and most native providers (Anthropic, OpenAI,
            xAI). Cannot be used with excluded_domains.
          items:
            type: string
          type: array
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        excluded_domains:
          description: >-
            Exclude search results from these domains. Supported by Exa,
            Firecrawl, Parallel, Perplexity, Anthropic, OpenAI, and xAI. Cannot
            be used with allowed_domains.
          items:
            type: string
          type: array
        max_characters:
          description: >-
            Exact maximum number of characters of content per search result.
            Applies to the Exa, Parallel, and Perplexity engines; ignored with
            native provider search and Firecrawl. For Exa, caps highlight
            content per result. For Parallel, caps excerpt content per result
            (default 1,500 when omitted). For Perplexity, maps to the native
            `max_tokens_per_page` parameter (converted from characters to
            tokens) and trims the response to the exact character cap. When both
            `max_characters` and `search_context_size` are set, `max_characters`
            takes precedence. When omitted, falls back to `search_context_size`
            mapping (Exa) or engine defaults (Parallel, Perplexity).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults
            to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          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. Defaults to 50 when not specified.
          example: 50
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchQualityLevel'
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocationServerTool'
      type: object
    WebSearchDomainFilter:
      example:
        allowed_domains:
          - example.com
        blocked_domains:
          - spam.com
        excluded_domains:
          - spam.com
      properties:
        allowed_domains:
          items:
            type: string
          type:
            - array
            - 'null'
        blocked_domains:
          items:
            type: string
          type:
            - array
            - 'null'
        excluded_domains:
          items:
            type: string
          type:
            - array
            - 'null'
      type:
        - object
        - 'null'
    WebSearchEngine:
      description: The search engine to use for web search.
      enum:
        - native
        - exa
        - firecrawl
        - parallel
        - perplexity
      example: exa
      type: string
    WebSearchEngineEnum:
      description: >-
        Which search engine to use. "auto" (default) uses native if the provider
        supports it, otherwise Exa. "native" forces the provider's built-in
        search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl
        (requires BYOK). "parallel" uses the Parallel search API. "perplexity"
        uses the Perplexity Search API (raw ranked results).
      enum:
        - native
        - exa
        - parallel
        - firecrawl
        - perplexity
        - auto
      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, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          example: 5
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          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:
          $ref: '#/components/schemas/WebSearchServerToolConfig'
        type:
          enum:
            - openrouter:web_search
          type: string
      required:
        - type
      type: object
    WebSearchServerToolConfig:
      description: Configuration for the openrouter:web_search server tool
      example:
        max_results: 5
        search_context_size: medium
      properties:
        allowed_domains:
          description: >-
            Limit search results to these domains. Supported by Exa, Firecrawl,
            Parallel, Perplexity, and most native providers (Anthropic, OpenAI,
            xAI). Cannot be used with excluded_domains.
          items:
            type: string
          type: array
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        excluded_domains:
          description: >-
            Exclude search results from these domains. Supported by Exa,
            Firecrawl, Parallel, Perplexity, Anthropic, OpenAI, and xAI. Cannot
            be used with allowed_domains.
          items:
            type: string
          type: array
        max_characters:
          description: >-
            Exact maximum number of characters of content per search result.
            Applies to the Exa, Parallel, and Perplexity engines; ignored with
            native provider search and Firecrawl. For Exa, caps highlight
            content per result. For Parallel, caps excerpt content per result
            (default 1,500 when omitted). For Perplexity, maps to the native
            `max_tokens_per_page` parameter (converted from characters to
            tokens) and trims the response to the exact character cap. When both
            `max_characters` and `search_context_size` are set, `max_characters`
            takes precedence. When omitted, falls back to `search_context_size`
            mapping (Exa) or engine defaults (Parallel, Perplexity).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults
            to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines;
            ignored with native provider search. Perplexity supports a maximum
            of 20; values above 20 are clamped.
          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. Defaults to 50 when not specified.
          example: 50
          type: integer
        max_uses:
          description: >-
            Maximum number of web searches the model may perform in a single
            request. Once reached, further search calls return an error result
            instead of executing. Applies to the Exa, Firecrawl, Parallel, and
            Perplexity engines. With native provider search, forwarded only to
            Anthropic (as `max_uses`); other native search providers have no
            equivalent parameter and ignore it.
          example: 3
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchQualityLevel'
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocationServerTool'
      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
      properties:
        city:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
        region:
          type:
            - string
            - 'null'
        timezone:
          type:
            - string
            - 'null'
        type:
          enum:
            - approximate
          type: string
      type:
        - object
        - 'null'
    WebSearchUserLocationServerTool:
      description: Approximate user location for location-biased results.
      example:
        city: San Francisco
        country: US
        region: California
        timezone: America/Los_Angeles
        type: approximate
      properties:
        city:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
        region:
          type:
            - string
            - 'null'
        timezone:
          type:
            - string
            - 'null'
        type:
          enum:
            - approximate
          type: string
      type: object
    Workspace:
      example:
        created_at: '2025-08-24T10:30:00Z'
        created_by: user_abc123
        default_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
        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
          type:
            - string
            - 'null'
        default_guardrail_id:
          description: >-
            Deterministic ID of the workspace's implicitly-created default
            guardrail
          example: 595d5849-7e86-51fd-a7c0-705c34e4afff
          format: uuid
          type: string
        default_image_model:
          description: Default image model for this workspace
          example: openai/dall-e-3
          type:
            - string
            - 'null'
        default_provider_sort:
          description: >-
            Default provider sort preference (price, throughput, latency,
            exacto)
          example: price
          type:
            - string
            - 'null'
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          type:
            - string
            - 'null'
        description:
          description: Description of the workspace
          example: Production environment workspace
          type:
            - string
            - 'null'
        id:
          description: Unique identifier for the workspace
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        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
          type:
            - array
            - 'null'
        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'
          type:
            - string
            - 'null'
      required:
        - id
        - default_guardrail_id
        - name
        - slug
        - description
        - default_text_model
        - default_image_model
        - default_provider_sort
        - is_observability_io_logging_enabled
        - is_observability_broadcast_enabled
        - is_data_discount_logging_enabled
        - io_logging_sampling_rate
        - io_logging_api_key_ids
        - created_at
        - updated_at
        - created_by
      type: object
    WorkspaceBudget:
      example:
        created_at: '2025-08-24T10:30:00Z'
        id: 770e8400-e29b-41d4-a716-446655440000
        limit_usd: 100
        reset_interval: monthly
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        created_at:
          description: ISO 8601 timestamp of when the budget was created
          example: '2025-08-24T10:30:00Z'
          type: string
        id:
          description: Unique identifier for the budget
          example: 770e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        limit_usd:
          description: Spending limit in USD for this interval
          example: 100
          format: double
          type: number
        reset_interval:
          description: >-
            Interval at which spend resets. Null means a lifetime (one-time)
            budget.
          enum:
            - daily
            - weekly
            - monthly
            - null
          example: monthly
          type:
            - string
            - 'null'
        updated_at:
          description: ISO 8601 timestamp of when the budget was last updated
          example: '2025-08-24T15:45:00Z'
          type: string
        workspace_id:
          description: ID of the workspace the budget belongs to
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
      required:
        - id
        - workspace_id
        - limit_usd
        - reset_interval
        - created_at
        - updated_at
      type: object
    WorkspaceBudgetInterval:
      description: >-
        Budget reset interval. Use "lifetime" for a one-time budget that never
        resets.
      enum:
        - daily
        - weekly
        - monthly
        - lifetime
      example: monthly
      type: string
    WorkspaceMember:
      example:
        created_at: '2025-08-24T10:30:00Z'
        id: 660e8400-e29b-41d4-a716-446655440000
        role: member
        user_id: user_abc123
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      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
  /analytics/meta:
    get:
      description: >-
        Returns the available metrics, dimensions, filter operators, and
        granularities for the analytics query endpoint. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: getAnalyticsMeta
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  dimensions:
                    - display_label: Model
                      name: model
                  granularities:
                    - display_label: Day
                      name: day
                  metrics:
                    - display_format: number
                      display_label: Request Count
                      is_rate: false
                      name: request_count
                  operators:
                    - name: eq
                      value_type: scalar
              schema:
                properties:
                  data:
                    properties:
                      dimensions:
                        items:
                          properties:
                            display_label:
                              description: Human-readable label
                              example: Model
                              type: string
                            name:
                              description: Dimension identifier used in query requests
                              example: model
                              type: string
                          required:
                            - name
                            - display_label
                          type: object
                        type: array
                      granularities:
                        items:
                          properties:
                            display_label:
                              description: Human-readable label
                              example: Day
                              type: string
                            name:
                              description: Granularity identifier
                              enum:
                                - minute
                                - hour
                                - day
                                - week
                                - month
                              example: day
                              type: string
                          required:
                            - name
                            - display_label
                          type: object
                        type: array
                      metrics:
                        items:
                          properties:
                            display_format:
                              description: >-
                                How this metric value should be formatted for
                                display (e.g. percent → multiply by 100 and
                                append %, currency → prefix with $)
                              enum:
                                - number
                                - currency
                                - percent
                                - latency
                                - throughput
                              example: number
                              type: string
                            display_label:
                              description: Human-readable label
                              example: Request Count
                              type: string
                            is_rate:
                              description: >-
                                Whether this metric is a rate/ratio (averaged,
                                not summed)
                              type: boolean
                            name:
                              description: Metric identifier used in query requests
                              example: request_count
                              type: string
                          required:
                            - name
                            - display_label
                            - is_rate
                            - display_format
                          type: object
                        type: array
                      operators:
                        items:
                          properties:
                            name:
                              description: Operator identifier used in filter definitions
                              enum:
                                - eq
                                - neq
                                - in
                                - not_in
                                - gt
                                - gte
                                - lt
                                - lte
                              example: eq
                              type: string
                            value_type:
                              description: >-
                                Whether the operator expects a single value or
                                an array
                              enum:
                                - scalar
                                - array
                              type: string
                          required:
                            - name
                            - value_type
                          type: object
                        type: array
                    required:
                      - metrics
                      - dimensions
                      - operators
                      - granularities
                    type: object
                required:
                  - data
                type: object
          description: Returns analytics query metadata
        '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 available analytics metrics and dimensions
      tags:
        - beta.Analytics
  /analytics/query:
    post:
      description: >-
        Execute an analytics query with specified metrics, dimensions, filters,
        and time range. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: queryAnalytics
      requestBody:
        content:
          application/json:
            example:
              dimensions:
                - model
              granularity: day
              limit: 100
              metrics:
                - request_count
              time_range:
                end: '2025-01-08T00:00:00Z'
                start: '2025-01-01T00:00:00Z'
            schema:
              properties:
                classifier_dimensions:
                  description: >-
                    Group results by custom classifier tags, breaking down
                    metrics by the specified dimension values. Requires an
                    active classifier on the workspace.
                  properties:
                    classifier_id:
                      description: UUID of the classifier whose tags to group by.
                      example: 550e8400-e29b-41d4-a716-446655440000
                      format: uuid
                      type: string
                    dimension_names:
                      items:
                        description: >-
                          Classifier dimension name (snake_case identifier).
                          When exactly one name is provided, the response uses
                          it as the column key; with multiple names or none, the
                          response uses
                          `clf_dimension_name`/`clf_dimension_value` columns.
                        example: department
                        type: string
                      maxItems: 10
                      type: array
                    include_nulls:
                      description: >-
                        When true, also include generations that have no tag
                        from this classifier. Defaults to false, which returns
                        only classified generations.
                      type: boolean
                  required:
                    - classifier_id
                  type: object
                classifier_filters:
                  description: >-
                    Filter results to generations with specific classifier tag
                    values. Can be combined with classifier_dimensions (must use
                    the same classifier_id) or used independently with standard
                    dimensions.
                  properties:
                    classifier_id:
                      description: >-
                        UUID of the classifier whose tags to filter by. Must
                        match classifier_dimensions.classifier_id when both are
                        specified.
                      example: 550e8400-e29b-41d4-a716-446655440000
                      format: uuid
                      type: string
                    filters:
                      items:
                        properties:
                          field:
                            description: >-
                              Classifier dimension name to filter on (snake_case
                              identifier, e.g. "department", "work_type").
                            example: department
                            type: string
                          operator:
                            description: >-
                              Filter operator. Only equality/set operators are
                              supported (eq, neq, in, not_in) — ordered
                              comparisons are not available because
                              classification values are strings.
                            example: eq
                            type: string
                          value:
                            anyOf:
                              - type: string
                              - format: double
                                type: number
                              - items:
                                  anyOf:
                                    - type: string
                                    - format: double
                                      type: number
                                type: array
                            description: >-
                              Filter value. Use a scalar (string or number) for
                              eq/neq, or an array for in/not_in.
                            example: Engineering
                        required:
                          - field
                          - operator
                          - value
                        type: object
                      maxItems: 10
                      minItems: 1
                      type: array
                  required:
                    - classifier_id
                    - filters
                  type: object
                dimensions:
                  items:
                    description: >-
                      Dimension to group by (up to 2). Use the /meta endpoint
                      for available dimensions.
                    example: model
                    type: string
                  maxItems: 2
                  type: array
                filters:
                  items:
                    properties:
                      field:
                        description: >-
                          Dimension to filter on. Use the /meta endpoint for
                          available dimensions.
                        example: model
                        type: string
                      operator:
                        description: Filter operator
                        example: eq
                        type: string
                      value:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                          - items:
                              anyOf:
                                - type: string
                                - format: double
                                  type: number
                            type: array
                        description: >-
                          Filter value (scalar or array depending on operator).
                          Several dimensions are enriched in responses (returned
                          as human-readable labels), but filters must use the
                          underlying ID: `api_key_id` — numeric ID (from
                          generation metadata) or key hash (64-char hex from GET
                          /api/v1/keys, resolved server-side); `user` — Clerk
                          user ID (e.g. "user_abc123"), not the display name;
                          `workspace` — workspace UUID, not the workspace name;
                          `app` — numeric app ID, not the app title; `model` —
                          permaslug (e.g. "openai/gpt-4o"), not the display
                          name. Other dimensions (provider, origin, country,
                          etc.) are not enriched and accept the value as
                          returned.
                    required:
                      - field
                      - operator
                      - value
                    type: object
                  maxItems: 20
                  type: array
                granularity:
                  description: Time granularity
                  example: day
                  type: string
                group_limit:
                  description: >-
                    Maximum rows per distinct combination of dimensions. When
                    omitted on time-series queries (granularity + dimensions),
                    auto-computed to avoid truncating time windows. Explicit
                    values override the default and may truncate time buckets if
                    set lower than the number of buckets in the range. Ignored
                    when no dimensions are specified.
                  example: 100
                  type: integer
                limit:
                  description: >-
                    Maximum total rows returned. Defaults to 1000. On
                    time-series queries with dimensions and no explicit
                    group_limit, the server may raise this to accommodate the
                    expected number of unique time-bucket/dimension
                    combinations.
                  type: integer
                metrics:
                  items:
                    description: Metric name
                    example: request_count
                    type: string
                  minItems: 1
                  type: array
                order_by:
                  properties:
                    direction:
                      enum:
                        - asc
                        - desc
                      type: string
                    field:
                      description: >-
                        Field to order by: a metric included in `metrics` (or
                        "request_count", which may be ordered by without being
                        requested), a requested dimension, or "date".
                      example: request_count
                      type: string
                  required:
                    - field
                    - direction
                  type: object
                time_range:
                  properties:
                    end:
                      format: date-time
                      type: string
                    start:
                      format: date-time
                      type: string
                  required:
                    - start
                    - end
                  type: object
              required:
                - metrics
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  data:
                    - date__day: '2025-01-01T00:00:00.000Z'
                      request_count: 1500
                  metadata:
                    query_time_ms: 42
                    row_count: 1
                    truncated: false
              schema:
                properties:
                  data:
                    properties:
                      cachedAt:
                        format: double
                        type: number
                      data:
                        items:
                          description: A row of analytics data with metric/dimension values
                          type: object
                        type: array
                      metadata:
                        properties:
                          query_time_ms:
                            format: double
                            type: number
                          row_count:
                            type: integer
                          truncated:
                            type: boolean
                        required:
                          - query_time_ms
                          - row_count
                          - truncated
                        type: object
                      warnings:
                        description: >-
                          Warnings about filter resolution issues (e.g.
                          unresolvable api_key_id hashes). The query still runs
                          normally; these inform the caller that some filter
                          values could not be resolved.
                        items:
                          type: string
                        type: array
                    required:
                      - data
                      - metadata
                    type: object
                required:
                  - data
                type: object
          description: Analytics query results
        '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
        '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
        '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: Query analytics data
      tags:
        - beta.Analytics
  /audio/speech:
    post:
      description: >-
        Synthesizes audio from the input text. Returns a raw audio bytestream in
        the requested format (e.g. mp3, pcm, wav).
      operationId: createAudioSpeech
      requestBody:
        content:
          application/json:
            example:
              input: Hello world
              model: mistralai/voxtral-mini-tts-2603
              response_format: pcm
              speed: 1
              voice: en_paul_neutral
            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: <binary audio data>
                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 as JSON
        or an OpenAI-style multipart/form-data file upload, and returns the
        transcribed text.
      operationId: createAudioTranscriptions
      requestBody:
        content:
          application/json:
            example:
              input_audio:
                data: UklGRiQA...
                format: wav
              language: en
              model: openai/whisper-large-v3
            schema:
              $ref: '#/components/schemas/STTRequest'
          multipart/form-data:
            example:
              file: audio.wav
              language: en
              model: openai/whisper-large-v3
            schema:
              properties:
                file:
                  description: >-
                    The audio file to transcribe. The format is derived from the
                    filename extension or the file part content type. Max 25 MB;
                    send larger files as base64 JSON via input_audio.
                  format: binary
                  type: string
                language:
                  description: The language of the input audio (ISO-639-1).
                  type: string
                model:
                  description: The model to use for transcription.
                  type: string
                response_format:
                  description: >-
                    The response format. "json" (default) returns { text, usage
                    }; "verbose_json" additionally returns task, language,
                    duration, and segment-level timestamps (OpenAI-compatible
                    providers only).
                  enum:
                    - json
                    - verbose_json
                  type: string
                temperature:
                  description: The sampling temperature.
                  type: number
                timestamp_granularities[]:
                  description: >-
                    Timestamp detail levels to include when response_format is
                    "verbose_json". "word" additionally returns word-level
                    timestamps in the words array.
                  items:
                    enum:
                      - word
                      - segment
                    type: string
                  type: array
              required:
                - file
                - model
              type: object
        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
                  type:
                    - string
                    - 'null'
                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
                    type:
                      - string
                      - 'null'
                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.
                    Supports https URLs and localhost/127.0.0.1 URLs on any port
                    for local CLI tools.
                  example: https://myapp.com/auth/callback
                  format: uri
                  type: string
                code_challenge:
                  description: PKCE code challenge for enhanced security
                  example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
                  type: string
                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
                  type:
                    - string
                    - 'null'
                key_label:
                  description: >-
                    Optional custom label for the API key. Defaults to the app
                    name if not provided.
                  example: My Custom Key
                  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
                workspace_id:
                  description: Optional workspace ID to associate the API key with
                  format: uuid
                  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
        '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
        '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
  /benchmarks:
    get:
      description: >-
        Unified benchmark endpoint that aggregates scores from multiple
        benchmark sources (Artificial Analysis, Design Arena, and OpenRouter's
        own tau-bench and GPQA evals). Filter by source to reproduce the exact
        shapes from the legacy per-source endpoints, or use task_type to find
        models suited for specific workloads. Authenticate with any valid
        OpenRouter API key. Rate-limited to 30 requests/minute per key and 500
        requests/day per account.
      operationId: getBenchmarks
      parameters:
        - description: >-
            Benchmark source to query. Determines the shape of the returned
            items. When omitted, returns results from all sources.
          in: query
          name: source
          required: false
          schema:
            description: >-
              Benchmark source to query. Determines the shape of the returned
              items. When omitted, returns results from all sources.
            enum:
              - artificial-analysis
              - design-arena
              - openrouter
            example: artificial-analysis
            type: string
        - description: >-
            Filter results by task type. For Artificial Analysis, maps to the
            corresponding index. For Design Arena, maps to the matching
            category.
          in: query
          name: task_type
          required: false
          schema:
            description: >-
              Filter results by task type. For Artificial Analysis, maps to the
              corresponding index. For Design Arena, maps to the matching
              category.
            enum:
              - coding
              - intelligence
              - agentic
            example: coding
            type: string
        - description: >-
            Design Arena only: arena to query. Defaults to `models` when source
            is `design-arena`.
          in: query
          name: arena
          required: false
          schema:
            description: >-
              Design Arena only: arena to query. Defaults to `models` when
              source is `design-arena`.
            enum:
              - models
              - builders
              - agents
            example: models
            type: string
        - description: >-
            Design Arena only: category within the arena (e.g. `codecategories`,
            `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`).
            When omitted, returns all categories.
          in: query
          name: category
          required: false
          schema:
            description: >-
              Design Arena only: category within the arena (e.g.
              `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`,
              `image`, `video`, `svg`). When omitted, returns all categories.
            example: codecategories
            type: string
        - description: >-
            Maximum number of items to return. When omitted, all matching
            results are returned.
          in: query
          name: max_results
          required: false
          schema:
            description: >-
              Maximum number of items to return. When omitted, all matching
              results are returned.
            example: 50
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - agentic_index: 58.3
                    coding_index: 65.8
                    display_name: GPT-4o
                    intelligence_index: 71.2
                    model_permaslug: openai/gpt-4o
                    pricing:
                      completion: '0.00001'
                      prompt: '0.0000025'
                    source: artificial-analysis
                  - accuracy: 0.72
                    accuracy_stddev: 0.03
                    avg_cost_per_task: 0.002
                    benchmark_type: gpqa_diamond
                    display_name: GPT-4o
                    last_run_timestamp: '2026-06-03T12:00:00Z'
                    model_permaslug: openai/gpt-4o
                    source: openrouter
                    total_tasks: 300
                meta:
                  as_of: '2026-06-03T12:00:00Z'
                  citation: null
                  model_count: 1
                  source: null
                  source_url: null
                  task_type: null
                  version: v1
              schema:
                $ref: '#/components/schemas/UnifiedBenchmarksResponse'
          description: >-
            Benchmark results filtered by the specified source and optional task
            type.
        '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
        '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 Benchmarks
      tags:
        - Benchmarks
  /byok:
    get:
      description: >-
        List the bring-your-own-key (BYOK) provider credentials for the
        authenticated entity's default workspace. Use the `workspace_id` query
        parameter to scope the result to a different workspace, or the
        `provider` query parameter to filter by upstream provider. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listBYOKKeys
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: >-
            Optional workspace ID to filter by. Defaults to the authenticated
            entity's default workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Optional workspace ID to filter by. Defaults to the authenticated
              entity's default workspace.
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
        - description: >-
            Optional provider slug to filter by (e.g. `openai`, `anthropic`,
            `amazon-bedrock`).
          in: query
          name: provider
          required: false
          schema:
            description: >-
              Optional provider slug to filter by (e.g. `openai`, `anthropic`,
              `amazon-bedrock`).
            enum:
              - ai21
              - aion-labs
              - akashml
              - alibaba
              - amazon-bedrock
              - amazon-nova
              - ambient
              - anthropic
              - arcee-ai
              - atlas-cloud
              - avian
              - azure
              - baidu
              - baseten
              - black-forest-labs
              - byteplus
              - cerebras
              - chutes
              - cirrascale
              - clarifai
              - cloudflare
              - cohere
              - coreweave
              - crusoe
              - darkbloom
              - decart
              - deepgram
              - deepinfra
              - deepseek
              - dekallm
              - digitalocean
              - featherless
              - fireworks
              - fish-audio
              - friendli
              - gmicloud
              - google-ai-studio
              - google-vertex
              - groq
              - heygen
              - inception
              - inceptron
              - inferact-vllm
              - inference-net
              - infermatic
              - inflection
              - io-net
              - ionstream
              - krea
              - liquid
              - mancer
              - mara
              - meta
              - minimax
              - mistral
              - modal
              - modelrun
              - modular
              - moonshotai
              - morph
              - ncompass
              - nebius
              - nex-agi
              - nextbit
              - novita
              - nvidia
              - open-inference
              - openai
              - parasail
              - perceptron
              - perplexity
              - phala
              - poolside
              - quiver
              - recraft
              - reka
              - relace
              - runway
              - sail-research
              - sakana
              - sakana-ai
              - sambanova
              - seed
              - siliconflow
              - sourceful
              - stepfun
              - streamlake
              - switchpoint
              - tencent
              - tenstorrent
              - together
              - upstage
              - venice
              - wafer
              - wandb
              - wandb-legacy
              - xai
              - xiaomi
              - z-ai
            example: openai
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - allowed_api_key_hashes: null
                    allowed_models: null
                    allowed_user_ids: null
                    created_at: '2025-08-24T10:30:00Z'
                    disabled: false
                    id: 11111111-2222-3333-4444-555555555555
                    is_fallback: false
                    label: sk-...AbCd
                    name: Production OpenAI Key
                    provider: openai
                    sort_order: 0
                    workspace_id: 550e8400-e29b-41d4-a716-446655440000
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListBYOKKeysResponse'
          description: List of BYOK credentials
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List BYOK provider credentials
      tags:
        - BYOK
      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 bring-your-own-key (BYOK) provider credential. The raw key
        is encrypted at rest and never returned in API responses. Defaults to
        the authenticated entity's default workspace; use the `workspace_id`
        body field to scope to a different workspace. Treat the raw key as
        write-only; it is never returned after creation. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createBYOKKey
      requestBody:
        content:
          application/json:
            example:
              key: sk-proj-abc123...
              name: Production OpenAI Key
              provider: openai
            schema:
              $ref: '#/components/schemas/CreateBYOKKeyRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              example:
                data:
                  allowed_api_key_hashes: null
                  allowed_models: null
                  allowed_user_ids: null
                  created_at: '2025-08-24T10:30:00Z'
                  disabled: false
                  id: 11111111-2222-3333-4444-555555555555
                  is_fallback: false
                  label: sk-...AbCd
                  name: Production OpenAI Key
                  provider: openai
                  sort_order: 0
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/CreateBYOKKeyResponse'
          description: BYOK credential 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 BYOK provider credential
      tags:
        - BYOK
      x-speakeasy-name-override: create
  /byok/{id}:
    delete:
      description: >-
        Delete (soft-delete) a bring-your-own-key (BYOK) provider credential by
        its `id`. The encrypted key material is wiped and the record is marked
        as deleted. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: deleteBYOKKey
      parameters:
        - description: The BYOK credential ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The BYOK credential ID (UUID).
            example: 11111111-2222-3333-4444-555555555555
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                $ref: '#/components/schemas/DeleteBYOKKeyResponse'
          description: BYOK credential 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 BYOK provider credential
      tags:
        - BYOK
      x-speakeasy-name-override: delete
    get:
      description: >-
        Get a single bring-your-own-key (BYOK) provider credential by its `id`.
        [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: getBYOKKey
      parameters:
        - description: The BYOK credential ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The BYOK credential ID (UUID).
            example: 11111111-2222-3333-4444-555555555555
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  allowed_api_key_hashes: null
                  allowed_models: null
                  allowed_user_ids: null
                  created_at: '2025-08-24T10:30:00Z'
                  disabled: false
                  id: 11111111-2222-3333-4444-555555555555
                  is_fallback: false
                  label: sk-...AbCd
                  name: Production OpenAI Key
                  provider: openai
                  sort_order: 0
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/GetBYOKKeyResponse'
          description: BYOK credential 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 BYOK provider credential
      tags:
        - BYOK
      x-speakeasy-name-override: get
    patch:
      description: >-
        Update an existing bring-your-own-key (BYOK) provider credential by its
        `id`. Include the `key` field to rotate the raw provider API key
        in-place (the previous key material is overwritten). [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateBYOKKey
      parameters:
        - description: The BYOK credential ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The BYOK credential ID (UUID).
            example: 11111111-2222-3333-4444-555555555555
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            example:
              disabled: false
              name: Updated OpenAI Key
            schema:
              $ref: '#/components/schemas/UpdateBYOKKeyRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  allowed_api_key_hashes: null
                  allowed_models: null
                  allowed_user_ids: null
                  created_at: '2025-08-24T10:30:00Z'
                  disabled: false
                  id: 11111111-2222-3333-4444-555555555555
                  is_fallback: false
                  label: sk-...AbCd
                  name: Updated OpenAI Key
                  provider: openai
                  sort_order: 0
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/UpdateBYOKKeyResponse'
          description: BYOK credential 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 BYOK provider credential
      tags:
        - BYOK
      x-speakeasy-name-override: update
  /chat/completions:
    post:
      description: >-
        Sends a request for a model response for the given chat conversation.
        Supports both streaming and non-streaming modes.
      operationId: sendChatCompletionRequest
      parameters:
        - description: >-
            Opt-in to surface routing metadata on the response under
            `openrouter_metadata`. Defaults to `disabled`. The legacy header
            `X-OpenRouter-Experimental-Metadata` is also accepted for backward
            compatibility.
          example: enabled
          in: header
          name: X-OpenRouter-Metadata
          required: false
          schema:
            $ref: '#/components/schemas/MetadataLevel'
      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
                system_fingerprint: fp_44709d6fcb
                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:
                $ref: '#/components/schemas/ChatStreamingResponse'
              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
        '403':
          content:
            application/json:
              examples:
                guardrail-blocked:
                  summary: Guardrail blocked the request
                  value:
                    error:
                      code: 403
                      message: 'Request blocked: prompt injection patterns detected'
                      metadata:
                        patterns:
                          - ignore all previous instructions
                    openrouter_metadata:
                      attempt: 1
                      endpoints:
                        available:
                          - model: openai/gpt-4o
                            provider: OpenAI
                            selected: false
                        total: 1
                      is_byok: false
                      pipeline:
                        - data:
                            action: blocked
                            detected: true
                            engines:
                              - regex
                            patterns:
                              - ignore all previous instructions
                          guardrail_id: grd_abc123
                          guardrail_scope: api-key
                          name: regex_pi_detection
                          summary: >-
                            Blocked: prompt injection detected (1 pattern
                            matched)
                          type: guardrail
                      region: iad
                      requested: openai/gpt-4o
                      strategy: direct
                      summary: available=1
                insufficient-permissions:
                  summary: Insufficient permissions
                  value:
                    error:
                      code: 403
                      message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: >-
            Forbidden - Authentication successful but insufficient permissions,
            or a guardrail blocked the request. When guardrails block and the
            `X-OpenRouter-Metadata: enabled` header is present, the response
            includes `openrouter_metadata` with full routing context and a
            `pipeline` array containing guardrail stage details.
        '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
  /classifications/task:
    get:
      description: >-
        Returns the market-share breakdown of OpenRouter traffic by task
        classification

        (e.g. code generation, web search, summarization) over a trailing time
        window.


        Each classification reports its share of classified sampled requests
        (`usage_share`)

        and classified sampled token volume (`token_share`) as fractions between
        0 and 1.

        The unclassified `other` bucket is excluded. Absolute volumes are not
        exposed

        because the underlying data is sampled.


        Each classification also includes a `models` array listing the top
        models by

        request volume within that classification, with their within-tag usage
        and token shares.


        Classifications are grouped into macro-categories (Code, Data, Agent,
        General)

        with aggregate shares provided for each.


        Authenticate with any valid OpenRouter API key (same key used for
        inference).

        Rate-limited to 30 requests/minute per key and 500 requests/day per
        account.


        When republishing or quoting this data, cite as:

        "Source: OpenRouter (openrouter.ai/rankings), as of {as_of}."
      operationId: getTaskClassifications
      parameters:
        - description: >-
            Trailing time window for the classification data. Currently only
            `7d` (trailing 7 days) is supported.
          in: query
          name: window
          required: false
          schema:
            default: 7d
            description: >-
              Trailing time window for the classification data. Currently only
              `7d` (trailing 7 days) is supported.
            enum:
              - 7d
            example: 7d
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  as_of: '2026-06-17'
                  classifications:
                    - category_token_share: 0.48
                      category_usage_share: 0.51
                      display_name: Code Generation
                      macro_category: code
                      models:
                        - id: openai/gpt-4.1-mini
                          tag_token_share: 0.75
                          tag_usage_share: 0.55
                      tag: code:general_impl
                      token_share: 0.31
                      usage_share: 0.23
                  macro_categories:
                    - key: code
                      label: Code
                      token_share: 0.52
                      usage_share: 0.45
                  window_days: 7
              schema:
                $ref: '#/components/schemas/TaskClassificationResponse'
          description: >-
            Task classification market-share data for the requested trailing
            window.
        '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
        '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: Task classification market share
      tags:
        - Classifications
  /credits:
    get:
      description: >-
        Get total credits purchased and used for the authenticated user.
        [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: getCredits
      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
  /datasets/app-rankings:
    get:
      description: >-
        Returns the top public apps on OpenRouter ranked by token usage inside
        the requested

        date window, matching the public apps marketplace on openrouter.ai/apps.
        Token totals

        are `prompt_tokens + completion_tokens`; hidden and private apps are
        excluded and

        traffic from related app aliases is merged into the canonical visible
        app.


        `sort=popular` (default) ranks by total token volume inside the window.

        `sort=trending` ranks by absolute excess token growth: window volume
        minus the average

        volume of the three equal-length periods immediately preceding the
        window. Apps with

        no excess growth are omitted, so `trending` may return fewer than
        `limit` rows.


        Filter with `category` (marketplace category group, e.g. `coding`) or
        `subcategory`

        (e.g. `cli-agent`). Ranks are re-numbered 1..N after filtering. Page
        with `offset` —

        `rank` stays absolute, so the first row of `offset=50` is `rank: 51`.


        Authenticate with any valid OpenRouter API key (same key used for
        inference).

        Rate-limited to 30 requests/minute per key and 500 requests/day per
        account.


        When republishing or quoting this dataset, OpenRouter must be cited as:

        "Source: OpenRouter (openrouter.ai/apps), as of {as_of}."


        Token counts come from each upstream provider's own tokenizer, so a
        token attributed

        to one app is not directly comparable to a token attributed to another
        app whose

        traffic flows through a different provider.
      operationId: getAppRankings
      parameters:
        - description: >-
            Marketplace category group to filter by (e.g. `coding`). Only apps
            tagged with a subcategory inside this group are returned. Mutually
            combinable with `subcategory` — when both are supplied the
            `subcategory` must belong to the `category` group.
          in: query
          name: category
          required: false
          schema:
            description: >-
              Marketplace category group to filter by (e.g. `coding`). Only apps
              tagged with a subcategory inside this group are returned. Mutually
              combinable with `subcategory` — when both are supplied the
              `subcategory` must belong to the `category` group.
            enum:
              - coding
              - creative
              - productivity
              - entertainment
            example: coding
            type: string
        - description: >-
            Marketplace subcategory to filter by (e.g. `cli-agent`). Takes
            precedence over `category` for the actual filter; when `category` is
            also supplied the pair must be consistent.
          in: query
          name: subcategory
          required: false
          schema:
            description: >-
              Marketplace subcategory to filter by (e.g. `cli-agent`). Takes
              precedence over `category` for the actual filter; when `category`
              is also supplied the pair must be consistent.
            enum:
              - cli-agent
              - ide-extension
              - cloud-agent
              - programming-app
              - native-app-builder
              - creative-writing
              - video-gen
              - image-gen
              - audio-gen
              - roleplay
              - game
              - writing-assistant
              - general-chat
              - personal-agent
              - legal
            example: cli-agent
            type: string
        - description: >-
            `popular` ranks apps by total token volume inside the date window.
            `trending` ranks apps by absolute excess token growth: window volume
            minus the average volume of the three equal-length periods
            immediately preceding the window. Apps with no excess growth are
            omitted from `trending` results.
          in: query
          name: sort
          required: false
          schema:
            default: popular
            description: >-
              `popular` ranks apps by total token volume inside the date window.
              `trending` ranks apps by absolute excess token growth: window
              volume minus the average volume of the three equal-length periods
              immediately preceding the window. Apps with no excess growth are
              omitted from `trending` results.
            enum:
              - popular
              - trending
            example: popular
            type: string
        - description: >-
            Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
            30 days before `end_date`. The dataset begins at 2025-01-01; earlier
            values are clamped forward to that floor and the resolved value is
            echoed in `meta.start_date`.
          in: query
          name: start_date
          required: false
          schema:
            description: >-
              Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults
              to 30 days before `end_date`. The dataset begins at 2025-01-01;
              earlier values are clamped forward to that floor and the resolved
              value is echoed in `meta.start_date`.
            example: '2026-04-12'
            pattern: ^\d{4}-\d{2}-\d{2}$
            type: string
        - description: >-
            End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
            the most recent completed UTC day. Must be on or after 2025-01-01;
            earlier values are rejected with a 400.
          in: query
          name: end_date
          required: false
          schema:
            description: >-
              End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
              the most recent completed UTC day. Must be on or after 2025-01-01;
              earlier values are rejected with a 400.
            example: '2026-05-11'
            pattern: ^\d{4}-\d{2}-\d{2}$
            type: string
        - description: Maximum number of apps to return (1-100). Defaults to 50.
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of apps to return (1-100). Defaults to 50.
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: >-
            Number of ranked apps to skip before the first returned row (0-100).
            Defaults to 0. `rank` stays absolute, so the first row of
            `offset=50` is `rank: 51`.
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: >-
              Number of ranked apps to skip before the first returned row
              (0-100). Defaults to 0. `rank` stays absolute, so the first row of
              `offset=50` is `rank: 51`.
            example: 0
            maximum: 100
            minimum: 0
            type:
              - integer
              - 'null'
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - app_id: 12345
                    app_name: Cline
                    rank: 1
                    total_requests: 4321
                    total_tokens: '12345678'
                  - app_id: 67890
                    app_name: Roo Code
                    rank: 2
                    total_requests: 2109
                    total_tokens: '9876543'
                meta:
                  as_of: '2026-05-12T02:00:00Z'
                  end_date: '2026-05-11'
                  start_date: '2026-04-12'
                  version: v1
              schema:
                $ref: '#/components/schemas/AppRankingsResponse'
          description: >-
            Apps ranked per the requested `sort`, re-numbered 1..N. `popular`
            sorts by `total_tokens` descending; `trending` sorts by absolute
            excess token growth descending and may return fewer than `limit`
            rows.
        '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
        '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: Top apps by token usage
      tags:
        - Datasets
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
  /datasets/rankings-daily:
    get:
      description: >-
        Returns the top 50 public models per day by total token usage on
        OpenRouter, plus a

        single aggregated `other` row per day that sums every model outside that
        top 50.

        Token totals are `prompt_tokens + completion_tokens`, matching the
        public rankings

        chart on openrouter.ai/rankings.


        Each row is a distinct `(date, model_permaslug)` pair. The `other` row
        uses the

        reserved permaslug `other` and is always returned last within its date,
        so callers

        can compute `top-50 traffic / total daily traffic` without a second
        request.


        Optional filters slice the dataset. `period` (`day`/`week`/`month`) sets
        the time

        grain. `modality` and `context_bucket` narrow the exact dataset by
        output/input

        modality (or tool-calling activity) and request context length.
        `category` and

        `language_type` instead read a sampled, upsampled dataset whose
        `total_tokens` are

        weekly-grain estimates — they cannot be combined with each other or with
        the exact

        filters, and reject `period=day` with a 400.


        Authenticate with any valid OpenRouter API key (same key used for
        inference).

        Rate-limited to 30 requests/minute per key and 500 requests/day per
        account.


        When republishing or quoting this dataset, OpenRouter must be cited as:

        "Source: OpenRouter (openrouter.ai/rankings), as of {as_of}."


        Token counts come from each upstream provider's own tokenizer (Anthropic
        counts

        are as reported by Anthropic, OpenAI counts are as reported by OpenAI,
        etc.), so

        a token in one row is not directly comparable to a token in another row
        from a

        different provider.
      operationId: getRankingsDaily
      parameters:
        - description: >-
            Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
            30 days before `end_date`. The dataset begins at 2025-01-01; earlier
            values are clamped forward to that floor and the resolved value is
            echoed in `meta.start_date`.
          in: query
          name: start_date
          required: false
          schema:
            description: >-
              Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults
              to 30 days before `end_date`. The dataset begins at 2025-01-01;
              earlier values are clamped forward to that floor and the resolved
              value is echoed in `meta.start_date`.
            example: '2026-04-12'
            pattern: ^\d{4}-\d{2}-\d{2}$
            type: string
        - description: >-
            End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
            the most recent completed UTC day. Must be on or after 2025-01-01;
            earlier values are rejected with a 400.
          in: query
          name: end_date
          required: false
          schema:
            description: >-
              End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to
              the most recent completed UTC day. Must be on or after 2025-01-01;
              earlier values are rejected with a 400.
            example: '2026-05-11'
            pattern: ^\d{4}-\d{2}-\d{2}$
            type: string
        - description: >-
            Time grain of each row. `day` (default) returns the per-UTC-day
            series; `week` buckets by ISO week start; `month` buckets by month
            start. With `category` or `language_type` only `week` (default) and
            `month` are available — `day` is rejected with a 400 because those
            datasets are aggregated weekly. For those sampled datasets
            `period=month` buckets each week by its week-start month, so totals
            are approximate at month boundaries.
          in: query
          name: period
          required: false
          schema:
            description: >-
              Time grain of each row. `day` (default) returns the per-UTC-day
              series; `week` buckets by ISO week start; `month` buckets by month
              start. With `category` or `language_type` only `week` (default)
              and `month` are available — `day` is rejected with a 400 because
              those datasets are aggregated weekly. For those sampled datasets
              `period=month` buckets each week by its week-start month, so
              totals are approximate at month boundaries.
            enum:
              - day
              - week
              - month
            example: day
            type: string
        - description: >-
            Restrict to models for a modality surface: `text` / `image_output`
            match output modality, `image` / `audio` match input modality, and
            `tool_calling` keeps only rows that recorded at least one tool call.
            Exact dataset — cannot be combined with `category` or
            `language_type`.
          in: query
          name: modality
          required: false
          schema:
            description: >-
              Restrict to models for a modality surface: `text` / `image_output`
              match output modality, `image` / `audio` match input modality, and
              `tool_calling` keeps only rows that recorded at least one tool
              call. Exact dataset — cannot be combined with `category` or
              `language_type`.
            enum:
              - text
              - image
              - image_output
              - audio
              - tool_calling
            example: text
            type: string
        - description: >-
            Restrict to requests whose context length falls in this bucket
            (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact dataset — cannot be
            combined with `category` or `language_type`.
          in: query
          name: context_bucket
          required: false
          schema:
            description: >-
              Restrict to requests whose context length falls in this bucket
              (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact dataset — cannot be
              combined with `category` or `language_type`.
            enum:
              - 1K
              - 10K
              - 100K
              - 1M
              - 10M
            example: 100K
            type: string
        - description: >-
            Restrict to a use-case category (e.g. `programming`, `roleplay`).
            Sourced from a sampled, upsampled dataset, so `total_tokens` is an
            estimate and is aggregated weekly (the trailing weekly bucket may
            include traffic past `end_date`). Cannot be combined with
            `modality`, `context_bucket`, or `language_type`.
          in: query
          name: category
          required: false
          schema:
            description: >-
              Restrict to a use-case category (e.g. `programming`, `roleplay`).
              Sourced from a sampled, upsampled dataset, so `total_tokens` is an
              estimate and is aggregated weekly (the trailing weekly bucket may
              include traffic past `end_date`). Cannot be combined with
              `modality`, `context_bucket`, or `language_type`.
            enum:
              - programming
              - roleplay
              - marketing
              - marketing/seo
              - technology
              - science
              - translation
              - legal
              - finance
              - health
              - trivia
              - academia
            example: programming
            type: string
        - description: >-
            Restrict to natural-language or programming-language tagged
            activity. Sourced from a sampled, upsampled dataset, so
            `total_tokens` is an estimate and is aggregated weekly (the trailing
            weekly bucket may include traffic past `end_date`). Cannot be
            combined with `modality`, `context_bucket`, or `category`.
          in: query
          name: language_type
          required: false
          schema:
            description: >-
              Restrict to natural-language or programming-language tagged
              activity. Sourced from a sampled, upsampled dataset, so
              `total_tokens` is an estimate and is aggregated weekly (the
              trailing weekly bucket may include traffic past `end_date`).
              Cannot be combined with `modality`, `context_bucket`, or
              `category`.
            enum:
              - natural
              - programming
            example: natural
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - date: '2026-05-11'
                    model_permaslug: openai/gpt-4o-2024-05-13
                    total_tokens: '12345678'
                  - date: '2026-05-11'
                    model_permaslug: anthropic/claude-3.5-sonnet-20241022
                    total_tokens: '9876543'
                  - date: '2026-05-11'
                    model_permaslug: other
                    total_tokens: '4321098'
                meta:
                  as_of: '2026-05-12T02:00:00Z'
                  end_date: '2026-05-11'
                  start_date: '2026-04-12'
                  version: v1
              schema:
                $ref: '#/components/schemas/RankingsDailyResponse'
          description: >-
            Up to 51 rows per day — the top 50 public models by `total_tokens`
            plus a single aggregated `other` row covering every model outside
            that top 50. Sorted by `date` ascending, then by `total_tokens`
            descending, with `other` pinned last within its date.
        '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
        '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: Daily token totals for top 50 models
      tags:
        - Datasets
  /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:
                    - minLength: 1
                      type: string
                    - items:
                        minLength: 1
                        type: string
                      type: array
                    - items:
                        type: number
                      type: array
                    - items:
                        items:
                          type: number
                        type: array
                      type: array
                    - items:
                        properties:
                          content:
                            items:
                              oneOf:
                                - properties:
                                    text:
                                      minLength: 1
                                      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
                                - $ref: '#/components/schemas/ContentPartInputAudio'
                                - $ref: '#/components/schemas/ContentPartInputVideo'
                                - $ref: '#/components/schemas/ContentPartInputFile'
                            minItems: 1
                            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
                      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 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
                          file_tokens:
                            description: Number of file/document 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
      parameters:
        - description: >-
            Number of records to skip for pagination. When both offset and limit
            are omitted, the full list is returned
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: >-
              Number of records to skip for pagination. When both offset and
              limit are omitted, the full list is returned
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: >-
            Maximum number of records to return (max 1000). When both offset and
            limit are omitted, the full list is returned
          in: query
          name: limit
          required: false
          schema:
            default: 500
            description: >-
              Maximum number of records to return (max 1000). When both offset
              and limit are omitted, the full list is returned
            example: 500
            maximum: 1000
            minimum: 1
            type: integer
      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
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
  /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: 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
              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: 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:
                  data:
                    items:
                      $ref: '#/components/schemas/PublicEndpoint'
                    type: array
                required:
                  - data
                type: object
          description: Returns a list of endpoints
        '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: Preview the impact of ZDR on the available endpoints
      tags:
        - Endpoints
      x-speakeasy-name-override: listZdrEndpoints
  /files:
    get:
      description: Lists files belonging to the workspace of the authenticating API key.
      operationId: listFiles
      parameters:
        - description: Maximum number of files to return (1–1000).
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of files to return (1–1000).
            example: 100
            maximum: 1000
            minimum: 1
            type: integer
        - description: Opaque pagination cursor from a previous response.
          in: query
          name: cursor
          required: false
          schema:
            description: Opaque pagination cursor from a previous response.
            example: eyJjdXJzb3IiOiJvcl9maWxlXzAxMUNOaGE4aUNKY1Uxd1hOUjZxNFY4dyJ9
            type: string
        - description: >-
            Workspace to scope the request to. Defaults to the caller’s default
            workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Workspace to scope the request to. Defaults to the caller’s
              default workspace.
            example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                cursor: null
                data:
                  - created_at: '2025-01-01T00:00:00Z'
                    downloadable: false
                    filename: document.pdf
                    id: or_file_011CNha8iCJcU1wXNR6q4V8w
                    mime_type: application/pdf
                    size_bytes: 1024000
                    type: file
                first_id: or_file_011CNha8iCJcU1wXNR6q4V8w
                has_more: false
                last_id: or_file_011CNha8iCJcU1wXNR6q4V8w
              schema:
                $ref: '#/components/schemas/FileListResponse'
          description: A page of files.
        '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
        '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 files
      tags:
        - Files
      x-hidden: true
      x-speakeasy-name-override: list
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: cursor
            type: cursor
        outputs:
          nextCursor: $.cursor
          results: $.data
        type: cursor
    post:
      description: >-
        Uploads a file to be referenced in future API calls. The file is stored
        under the workspace of the authenticating API key. Maximum file size:
        100 MB.
      operationId: uploadFile
      parameters:
        - description: >-
            Workspace to scope the request to. Defaults to the caller’s default
            workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Workspace to scope the request to. Defaults to the caller’s
              default workspace.
            example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7
            format: uuid
            type: string
      requestBody:
        content:
          multipart/form-data:
            example:
              file: document.pdf
            schema:
              properties:
                file:
                  format: binary
                  type: string
              required:
                - file
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                created_at: '2025-01-01T00:00:00Z'
                downloadable: false
                filename: document.pdf
                id: or_file_011CNha8iCJcU1wXNR6q4V8w
                mime_type: application/pdf
                size_bytes: 1024000
                type: file
              schema:
                $ref: '#/components/schemas/FileMetadata'
          description: The uploaded file metadata.
        '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
        '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
        '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: Upload a file
      tags:
        - Files
      x-hidden: true
      x-speakeasy-name-override: upload
  /files/{file_id}:
    delete:
      description: >-
        Deletes a file owned by the requesting workspace. Deletion is
        irreversible.
      operationId: deleteFile
      parameters:
        - in: path
          name: file_id
          required: true
          schema:
            example: or_file_011CNha8iCJcU1wXNR6q4V8w
            type: string
        - description: >-
            Workspace to scope the request to. Defaults to the caller’s default
            workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Workspace to scope the request to. Defaults to the caller’s
              default workspace.
            example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                id: or_file_011CNha8iCJcU1wXNR6q4V8w
                type: file_deleted
              schema:
                $ref: '#/components/schemas/FileDeleteResponse'
          description: The file was deleted.
        '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 a file
      tags:
        - Files
      x-hidden: true
      x-speakeasy-name-override: delete
    get:
      description: Retrieves metadata for a single file owned by the requesting workspace.
      operationId: getFileMetadata
      parameters:
        - in: path
          name: file_id
          required: true
          schema:
            example: or_file_011CNha8iCJcU1wXNR6q4V8w
            type: string
        - description: >-
            Workspace to scope the request to. Defaults to the caller’s default
            workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Workspace to scope the request to. Defaults to the caller’s
              default workspace.
            example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                created_at: '2025-01-01T00:00:00Z'
                downloadable: false
                filename: document.pdf
                id: or_file_011CNha8iCJcU1wXNR6q4V8w
                mime_type: application/pdf
                size_bytes: 1024000
                type: file
              schema:
                $ref: '#/components/schemas/FileMetadata'
          description: The file metadata.
        '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 file metadata
      tags:
        - Files
      x-hidden: true
      x-speakeasy-name-override: retrieve
  /files/{file_id}/content:
    get:
      description: >-
        Downloads the raw bytes of a file. Only files created server-side are
        downloadable; uploaded files return 400.
      operationId: downloadFileContent
      parameters:
        - in: path
          name: file_id
          required: true
          schema:
            example: or_file_011CNha8iCJcU1wXNR6q4V8w
            type: string
        - description: >-
            Workspace to scope the request to. Defaults to the caller’s default
            workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Workspace to scope the request to. Defaults to the caller’s
              default workspace.
            example: a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/octet-stream:
              example: binary file contents
              schema:
                format: binary
                type: string
          description: The raw file content.
        '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: Download file content
      tags:
        - Files
      x-hidden: true
      x-speakeasy-name-override: download
  /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'
                  data_region: global
                  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_fetches: 0
                  num_input_audio_prompt: 0
                  num_media_completion: 0
                  num_media_prompt: 1
                  num_search_results: 5
                  origin: https://openrouter.ai/
                  preset_id: a9e8d400-592a-494f-908c-375efa66cafd
                  provider_name: Infermatic
                  provider_responses: null
                  request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
                  router: openrouter/auto
                  service_tier: priority
                  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
                  web_search_engine: exa
              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
  /generation/feedback:
    post:
      description: >-
        Submit structured feedback on a generation the authenticated user made.
        [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: submitGenerationFeedback
      requestBody:
        content:
          application/json:
            example:
              category: incorrect_response
              comment: The model repeated the same paragraph three times.
              generation_id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
            schema:
              $ref: '#/components/schemas/SubmitGenerationFeedbackRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  success: true
              schema:
                $ref: '#/components/schemas/SubmitGenerationFeedbackResponse'
          description: Feedback recorded 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: Submit feedback for a generation
      tags:
        - Generations
      x-speakeasy-name-override: submitFeedback
  /guardrails:
    get:
      description: >-
        List all guardrails for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listGuardrails
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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
                    include_byok_in_budgets: false
                    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
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: 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_anthropic: true
              enforce_zdr_google: false
              enforce_zdr_openai: true
              enforce_zdr_other: false
              enforce_zdr_xai: 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: null
                  enforce_zdr_anthropic: true
                  enforce_zdr_google: false
                  enforce_zdr_openai: true
                  enforce_zdr_other: false
                  enforce_zdr_xai: false
                  id: 550e8400-e29b-41d4-a716-446655440000
                  ignored_models: null
                  ignored_providers: null
                  include_byok_in_budgets: false
                  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
                  include_byok_in_budgets: false
                  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. Collection fields use replace semantics:
        send the full desired set on every update. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateGuardrail
      parameters:
        - description: The unique identifier of the guardrail to update
          in: path
          name: id
          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: null
                  enforce_zdr_anthropic: true
                  enforce_zdr_google: true
                  enforce_zdr_openai: true
                  enforce_zdr_other: true
                  enforce_zdr_xai: true
                  id: 550e8400-e29b-41d4-a716-446655440000
                  ignored_models: null
                  ignored_providers: null
                  include_byok_in_budgets: true
                  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:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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. A key may hold at most
        one guardrail; assigning replaces any existing assignment. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: bulkAssignKeysToGuardrail
      parameters:
        - description: The unique identifier of the guardrail
          in: path
          name: id
          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:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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
  /images:
    post:
      description: Generates an image from a text prompt via the image generation router
      operationId: createImages
      requestBody:
        content:
          application/json:
            example:
              model: bytedance-seed/seedream-4.5
              prompt: a red panda astronaut floating in space, studio lighting
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                created: 1748372400
                data:
                  - b64_json: <base64-encoded-image>
                usage:
                  completion_tokens: 4175
                  cost: 0.04
                  prompt_tokens: 0
                  total_tokens: 4175
              schema:
                $ref: '#/components/schemas/ImageGenerationResponse'
            text/event-stream:
              example:
                data:
                  b64_json: <base64-encoded-partial-image>
                  partial_image_index: 0
                  type: image_generation.partial_image
              schema:
                $ref: '#/components/schemas/ImageStreamingResponse'
              x-speakeasy-sse-sentinel: '[DONE]'
          description: Image generation 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
        '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
        '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
        '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: Generate an image
      tags:
        - Images
      x-speakeasy-name-override: generate
  /images/models:
    get:
      description: >-
        Lists every image generation model with its top-level
        supported-parameter superset and a URL to its full per-endpoint records.
      operationId: listImageModels
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - architecture:
                      input_modalities:
                        - text
                      output_modalities:
                        - image
                    created: 1692901234
                    description: A text-to-image model.
                    endpoints: >-
                      /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints
                    id: bytedance-seed/seedream-4.5
                    name: Seedream 4.5
                    supported_parameters:
                      resolution:
                        type: enum
                        values:
                          - 1K
                          - 2K
                          - 4K
                    supports_streaming: false
              schema:
                $ref: '#/components/schemas/ImageModelsListResponse'
          description: List of image generation models
        '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 image generation models
      tags:
        - Images
      x-speakeasy-name-override: listModels
  /images/models/{author}/{slug}/endpoints:
    get:
      description: >-
        Returns the full per-endpoint records for an image model: each
        endpoint's definitive supported parameters, pricing, and passthrough
        allowlist.
      operationId: listImageModelEndpoints
      parameters:
        - description: Model author/organization
          in: path
          name: author
          required: true
          schema:
            description: Model author/organization
            example: bytedance-seed
            type: string
        - description: Model slug
          in: path
          name: slug
          required: true
          schema:
            description: Model slug
            example: seedream-4.5
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                endpoints:
                  - allowed_passthrough_parameters: []
                    pricing:
                      - billable: output_image
                        cost_usd: 0.05
                        unit: image
                    provider_name: Bytedance
                    provider_slug: bytedance
                    provider_tag: bytedance
                    supported_parameters:
                      resolution:
                        type: enum
                        values:
                          - 1K
                          - 2K
                          - 4K
                    supports_streaming: false
                id: bytedance-seed/seedream-4.5
              schema:
                $ref: '#/components/schemas/ImageModelEndpointsResponse'
          description: The full per-endpoint records for an image model
        '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 endpoints for an image model
      tags:
        - Images
      x-speakeasy-name-override: listModelEndpoints
  /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
                        type:
                          - string
                          - 'null'
                      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
                        type:
                          - string
                          - 'null'
                      include_byok_in_limit:
                        description: >-
                          Whether to include external BYOK usage in the credit
                          limit
                        example: false
                        type: boolean
                      is_free_tier:
                        description: Whether this is a free tier API key
                        example: false
                        type: boolean
                      is_management_key:
                        description: Whether this is a management key
                        example: false
                        type: boolean
                      is_provisioning_key:
                        deprecated: true
                        description: Whether this is a management key
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        type:
                          - string
                          - 'null'
                      rate_limit:
                        deprecated: true
                        description: >-
                          Legacy rate limit information about a key. Will always
                          return -1.
                        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
            type:
              - integer
              - 'null'
        - description: >-
            Filter API keys by workspace ID. By default, keys in the default
            workspace are returned.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Filter API keys by workspace ID. By default, keys in the default
              workspace are returned.
            example: 0df9e665-d932-5740-b2c7-b52af166bc11
            format: uuid
            type: string
      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
                          type:
                            - string
                            - 'null'
                        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
                          type:
                            - string
                            - 'null'
                        hash:
                          description: Unique hash identifier for the API key
                          example: >-
                            f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                          type: string
                        include_byok_in_limit:
                          description: >-
                            Whether to include external BYOK usage in the credit
                            limit
                          example: false
                          type: boolean
                        label:
                          description: Human-readable label for the API key
                          example: sk-or-v1-0e6...1c96
                          type: string
                        limit:
                          description: Spending limit for the API key in USD
                          example: 100
                          format: double
                          type:
                            - number
                            - 'null'
                        limit_remaining:
                          description: Remaining spending limit in USD
                          example: 74.5
                          format: double
                          type:
                            - number
                            - 'null'
                        limit_reset:
                          description: Type of limit reset for the API key
                          example: monthly
                          type:
                            - string
                            - 'null'
                        name:
                          description: Name of the API key
                          example: My Production Key
                          type: string
                        updated_at:
                          description: >-
                            ISO 8601 timestamp of when the API key was last
                            updated
                          example: '2025-08-24T15:45:00Z'
                          type:
                            - string
                            - 'null'
                        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
        '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
        '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. The plaintext `key` is
        returned only in this response. Treat it as a write-only, sensitive
        value; it cannot be retrieved later. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createKeys
      requestBody:
        content:
          application/json:
            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
                  type:
                    - string
                    - 'null'
                expires_at:
                  description: >-
                    Optional ISO 8601 UTC timestamp when the API key should
                    expire. Must be UTC, other timezones will be rejected
                  example: '2027-12-31T23:59:59Z'
                  format: date-time
                  type:
                    - string
                    - 'null'
                include_byok_in_limit:
                  description: Whether to include BYOK usage in the limit
                  example: true
                  type: boolean
                limit:
                  description: Optional spending limit for the API key in USD
                  example: 50
                  format: double
                  type:
                    - number
                    - 'null'
                limit_reset:
                  description: >-
                    Type of limit reset for the API key (daily, weekly, monthly,
                    or null for no reset). Resets happen automatically at
                    midnight UTC, and weeks are Monday through Sunday.
                  enum:
                    - daily
                    - weekly
                    - monthly
                    - null
                  example: monthly
                  type:
                    - string
                    - 'null'
                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
                        type:
                          - string
                          - 'null'
                      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
                        type:
                          - string
                          - 'null'
                      hash:
                        description: Unique hash identifier for the API key
                        example: >-
                          f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: >-
                          Whether to include external BYOK usage in the credit
                          limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        type:
                          - string
                          - 'null'
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: >-
                          ISO 8601 timestamp of when the API key was last
                          updated
                        example: '2025-08-24T15:45:00Z'
                        type:
                          - string
                          - 'null'
                      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
                        type:
                          - string
                          - 'null'
                      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
                        type:
                          - string
                          - 'null'
                      hash:
                        description: Unique hash identifier for the API key
                        example: >-
                          f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: >-
                          Whether to include external BYOK usage in the credit
                          limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        type:
                          - string
                          - 'null'
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: >-
                          ISO 8601 timestamp of when the API key was last
                          updated
                        example: '2025-08-24T15:45:00Z'
                        type:
                          - string
                          - 'null'
                      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
                  type:
                    - number
                    - 'null'
                limit_reset:
                  description: >-
                    New limit reset type for the API key (daily, weekly,
                    monthly, or null for no reset). Resets happen automatically
                    at midnight UTC, and weeks are Monday through Sunday.
                  enum:
                    - daily
                    - weekly
                    - monthly
                    - null
                  example: daily
                  type:
                    - string
                    - 'null'
                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
                        type:
                          - string
                          - 'null'
                      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
                        type:
                          - string
                          - 'null'
                      hash:
                        description: Unique hash identifier for the API key
                        example: >-
                          f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: >-
                          Whether to include external BYOK usage in the credit
                          limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        type:
                          - number
                          - 'null'
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        type:
                          - string
                          - 'null'
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: >-
                          ISO 8601 timestamp of when the API key was last
                          updated
                        example: '2025-08-24T15:45:00Z'
                        type:
                          - string
                          - 'null'
                      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
      parameters:
        - description: >-
            Opt-in to surface routing metadata on the response under
            `openrouter_metadata`. Defaults to `disabled`. The legacy header
            `X-OpenRouter-Experimental-Metadata` is also accepted for backward
            compatibility.
          example: enabled
          in: header
          name: X-OpenRouter-Metadata
          required: false
          schema:
            $ref: '#/components/schemas/MetadataLevel'
      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:
                container: null
                content:
                  - citations: []
                    text: >-
                      I'm doing well, thank you for asking! How can I help you
                      today?
                    type: text
                id: msg_abc123
                model: anthropic/claude-sonnet-4
                role: assistant
                stop_details: null
                stop_reason: end_turn
                stop_sequence: null
                type: message
                usage:
                  cache_creation: null
                  cache_creation_input_tokens: null
                  cache_read_input_tokens: null
                  inference_geo: null
                  input_tokens: 12
                  output_tokens: 18
                  output_tokens_details: null
                  server_tool_use: null
                  service_tier: standard
              schema:
                $ref: '#/components/schemas/MessagesResult'
            text/event-stream:
              example:
                data:
                  delta:
                    text: Hello
                    type: text_delta
                  index: 0
                  type: content_block_delta
                event: content_block_delta
              schema:
                $ref: '#/components/schemas/MessagesStreamingResponse'
              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:
              examples:
                guardrail-blocked:
                  summary: Guardrail blocked the request
                  value:
                    error:
                      code: 403
                      message: 'Request blocked: prompt injection patterns detected'
                      metadata:
                        patterns:
                          - ignore all previous instructions
                    openrouter_metadata:
                      attempt: 1
                      endpoints:
                        available:
                          - model: openai/gpt-4o
                            provider: OpenAI
                            selected: false
                        total: 1
                      is_byok: false
                      pipeline:
                        - data:
                            action: blocked
                            detected: true
                            engines:
                              - regex
                            patterns:
                              - ignore all previous instructions
                          guardrail_id: grd_abc123
                          guardrail_scope: api-key
                          name: regex_pi_detection
                          summary: >-
                            Blocked: prompt injection detected (1 pattern
                            matched)
                          type: guardrail
                      region: iad
                      requested: openai/gpt-4o
                      strategy: direct
                      summary: available=1
                insufficient-permissions:
                  summary: Insufficient permissions
                  value:
                    error:
                      code: 403
                      message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: >-
            Forbidden - Authentication successful but insufficient permissions,
            or a guardrail blocked the request. When guardrails block and the
            `X-OpenRouter-Metadata: enabled` header is present, the response
            includes `openrouter_metadata` with full routing context and a
            `pipeline` array containing guardrail stage details.
        '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
  /model/{author}/{slug}:
    get:
      description: >-
        Returns full details for a single model identified by its author and
        slug (e.g. openai/gpt-4). Supports variant suffixes (e.g.
        openai/gpt-4:free) and resolves known slug aliases.
      operationId: getModel
      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, optionally including a variant suffix (e.g. gpt-4 or
            gpt-4:free)
          in: path
          name: slug
          required: true
          schema:
            description: >-
              The model slug, optionally including a variant suffix (e.g. gpt-4
              or gpt-4:free)
            example: gpt-4
            type: string
      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-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/ModelResponse'
          description: Returns the model details
        '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 a model by its slug
      tags:
        - Models
      x-speakeasy-name-override: get
  /models:
    get:
      operationId: getModels
      parameters:
        - description: >-
            Number of records to skip for pagination. When both offset and limit
            are omitted, the full list is returned
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: >-
              Number of records to skip for pagination. When both offset and
              limit are omitted, the full list is returned
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: >-
            Maximum number of records to return (max 1000). When both offset and
            limit are omitted, the full list is returned
          in: query
          name: limit
          required: false
          schema:
            default: 500
            description: >-
              Maximum number of records to return (max 1000). When both offset
              and limit are omitted, the full list is returned
            example: 500
            maximum: 1000
            minimum: 1
            type: integer
        - 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: >-
            Sort the returned models server-side. Prefer this over fetching the
            full list and sorting client-side. Options: pricing-low-to-high,
            pricing-high-to-low (average prompt/completion price),
            context-high-to-low (context length), throughput-high-to-low,
            latency-low-to-high (recent median performance), most-popular,
            top-weekly (tokens processed in the last week), newest (creation
            date), intelligence-high-to-low, coding-high-to-low,
            agentic-high-to-low (Artificial Analysis indices),
            design-arena-elo-high-to-low (best Design Arena ELO across arenas).
            Models without a score for the chosen benchmark are placed last.
            When omitted, the existing default ordering is preserved.
          in: query
          name: sort
          required: false
          schema:
            description: >-
              Sort the returned models server-side. Prefer this over fetching
              the full list and sorting client-side. Options:
              pricing-low-to-high, pricing-high-to-low (average
              prompt/completion price), context-high-to-low (context length),
              throughput-high-to-low, latency-low-to-high (recent median
              performance), most-popular, top-weekly (tokens processed in the
              last week), newest (creation date), intelligence-high-to-low,
              coding-high-to-low, agentic-high-to-low (Artificial Analysis
              indices), design-arena-elo-high-to-low (best Design Arena ELO
              across arenas). Models without a score for the chosen benchmark
              are placed last. When omitted, the existing default ordering is
              preserved.
            enum:
              - most-popular
              - newest
              - top-weekly
              - pricing-low-to-high
              - pricing-high-to-low
              - context-high-to-low
              - throughput-high-to-low
              - latency-low-to-high
              - intelligence-high-to-low
              - coding-high-to-low
              - agentic-high-to-low
              - design-arena-elo-high-to-low
            example: newest
            type: string
        - description: Return results as RSS feed
          in: query
          name: use_rss
          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
        - description: Free-text search by model name or slug.
          in: query
          name: q
          required: false
          schema:
            description: Free-text search by model name or slug.
            example: gpt-4
            type: string
        - description: >-
            Filter models by input modality. Comma-separated list of: text,
            image, audio, file.
          in: query
          name: input_modalities
          required: false
          schema:
            description: >-
              Filter models by input modality. Comma-separated list of: text,
              image, audio, file.
            example: text,image
            type: string
        - description: >-
            Minimum context length (tokens). Models with smaller context are
            excluded.
          in: query
          name: context
          required: false
          schema:
            description: >-
              Minimum context length (tokens). Models with smaller context are
              excluded.
            example: 128000
            minimum: 1
            type: integer
        - description: Minimum prompt price in $/M tokens.
          in: query
          name: min_price
          required: false
          schema:
            description: Minimum prompt price in $/M tokens.
            example: 0
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum prompt price in $/M tokens.
          in: query
          name: max_price
          required: false
          schema:
            description: Maximum prompt price in $/M tokens.
            example: 10
            minimum: 0
            type:
              - number
              - 'null'
        - description: >-
            Filter models by architecture/model family (e.g. GPT, Claude,
            Gemini, Llama).
          in: query
          name: arch
          required: false
          schema:
            description: >-
              Filter models by architecture/model family (e.g. GPT, Claude,
              Gemini, Llama).
            example: GPT
            type: string
        - description: >-
            Filter models by the organization that created the model.
            Comma-separated list of author slugs.
          in: query
          name: model_authors
          required: false
          schema:
            description: >-
              Filter models by the organization that created the model.
              Comma-separated list of author slugs.
            example: openai,anthropic
            type: string
        - description: >-
            Filter models by hosting provider. Comma-separated list of provider
            names.
          in: query
          name: providers
          required: false
          schema:
            description: >-
              Filter models by hosting provider. Comma-separated list of
              provider names.
            example: OpenAI,Anthropic
            type: string
        - description: >-
            Filter by distillation capability. "true" returns only distillable
            models, "false" excludes them.
          in: query
          name: distillable
          required: false
          schema:
            description: >-
              Filter by distillation capability. "true" returns only distillable
              models, "false" excludes them.
            enum:
              - 'true'
              - 'false'
            example: 'true'
            type: string
        - description: >-
            When set to "true", return only models with zero data retention
            endpoints.
          in: query
          name: zdr
          required: false
          schema:
            description: >-
              When set to "true", return only models with zero data retention
              endpoints.
            enum:
              - 'true'
            example: 'true'
            type: string
        - description: >-
            Filter to models with endpoints in the given data region. Currently
            only "eu" is supported.
          in: query
          name: region
          required: false
          schema:
            description: >-
              Filter to models with endpoints in the given data region.
              Currently only "eu" is supported.
            enum:
              - eu
            example: eu
            type: string
        - description: Minimum completion (output) price in $/M tokens.
          in: query
          name: min_output_price
          required: false
          schema:
            description: Minimum completion (output) price in $/M tokens.
            example: 0
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum completion (output) price in $/M tokens.
          in: query
          name: max_output_price
          required: false
          schema:
            description: Maximum completion (output) price in $/M tokens.
            example: 10
            minimum: 0
            type:
              - number
              - 'null'
        - description: Minimum model age in days since its creation date.
          in: query
          name: min_age_days
          required: false
          schema:
            description: Minimum model age in days since its creation date.
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum model age in days since its creation date.
          in: query
          name: max_age_days
          required: false
          schema:
            description: Maximum model age in days since its creation date.
            example: 90
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Minimum Artificial Analysis intelligence index.
          in: query
          name: min_intelligence_index
          required: false
          schema:
            description: Minimum Artificial Analysis intelligence index.
            example: 50
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum Artificial Analysis intelligence index.
          in: query
          name: max_intelligence_index
          required: false
          schema:
            description: Maximum Artificial Analysis intelligence index.
            example: 100
            minimum: 0
            type:
              - number
              - 'null'
        - description: Minimum Artificial Analysis coding index.
          in: query
          name: min_coding_index
          required: false
          schema:
            description: Minimum Artificial Analysis coding index.
            example: 50
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum Artificial Analysis coding index.
          in: query
          name: max_coding_index
          required: false
          schema:
            description: Maximum Artificial Analysis coding index.
            example: 100
            minimum: 0
            type:
              - number
              - 'null'
        - description: Minimum Artificial Analysis agentic index.
          in: query
          name: min_agentic_index
          required: false
          schema:
            description: Minimum Artificial Analysis agentic index.
            example: 50
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum Artificial Analysis agentic index.
          in: query
          name: max_agentic_index
          required: false
          schema:
            description: Maximum Artificial Analysis agentic index.
            example: 100
            minimum: 0
            type:
              - number
              - 'null'
        - description: >-
            Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9
            = 90% of requests finishing with a tool_calls finish reason).
          in: query
          name: min_tool_success_rate
          required: false
          schema:
            description: >-
              Minimum tool-calling success rate, as a fraction in [0, 1] (e.g.
              0.9 = 90% of requests finishing with a tool_calls finish reason).
            example: 0.9
            maximum: 1
            minimum: 0
            type:
              - number
              - 'null'
        - description: Maximum tool-calling success rate, as a fraction in [0, 1].
          in: query
          name: max_tool_success_rate
          required: false
          schema:
            description: Maximum tool-calling success rate, as a fraction in [0, 1].
            example: 1
            maximum: 1
            minimum: 0
            type:
              - number
              - 'null'
      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-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: <rss><channel><title>OpenRouter Models</title></channel></rss>
              schema:
                example: <rss><channel><title>OpenRouter Models</title></channel></rss>
                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
        '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: List all models and their properties
      tags:
        - Models
      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
  /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: 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
                    id: openai/gpt-4
                    name: GPT-4
                properties:
                  data:
                    $ref: '#/components/schemas/ListEndpointsResponse'
                required:
                  - data
                type: object
          description: Returns a list of endpoints
        '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: 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
        '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 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
      parameters:
        - description: >-
            Number of records to skip for pagination. When both offset and limit
            are omitted, the full list is returned
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: >-
              Number of records to skip for pagination. When both offset and
              limit are omitted, the full list is returned
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: >-
            Maximum number of records to return (max 1000). When both offset and
            limit are omitted, the full list is returned
          in: query
          name: limit
          required: false
          schema:
            default: 500
            description: >-
              Maximum number of records to return (max 1000). When both offset
              and limit are omitted, the full list is returned
            example: 500
            maximum: 1000
            minimum: 1
            type: integer
      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-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
        '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
      security:
        - bearer: []
      summary: >-
        List models filtered by user provider preferences, privacy settings, and
        guardrails
      tags:
        - Models
      x-speakeasy-name-override: listForUser
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
  /observability/destinations:
    get:
      description: >-
        List the observability destinations configured for the authenticated
        entity's default workspace. Use the `workspace_id` query parameter to
        scope the result to a different workspace. Only destinations with stable
        release status are surfaced — destinations of other types are excluded.
        [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: listObservabilityDestinations
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: >-
            Optional workspace ID to filter by. Defaults to the authenticated
            entity's default workspace.
          in: query
          name: workspace_id
          required: false
          schema:
            description: >-
              Optional workspace ID to filter by. Defaults to the authenticated
              entity's default workspace.
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - api_key_hashes: null
                    config:
                      baseUrl: https://us.cloud.langfuse.com
                      publicKey: pk-l...EfGh
                      secretKey: sk-l...AbCd
                    created_at: '2025-08-24T10:30:00Z'
                    enabled: true
                    filter_rules: null
                    id: 99999999-aaaa-bbbb-cccc-dddddddddddd
                    name: Production Langfuse
                    privacy_mode: false
                    sampling_rate: 1
                    type: langfuse
                    updated_at: '2025-08-24T15:45:00Z'
                    workspace_id: 550e8400-e29b-41d4-a716-446655440000
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListObservabilityDestinationsResponse'
          description: List of observability destinations
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List observability destinations
      tags:
        - Observability
      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 observability destination. A maximum of 5 destinations per
        type is allowed. Defaults to the authenticated entity's default
        workspace; use the `workspace_id` body field to scope to a different
        workspace. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createObservabilityDestination
      requestBody:
        content:
          application/json:
            example:
              config:
                baseUrl: https://us.cloud.langfuse.com
                publicKey: pk-l...EfGh
                secretKey: sk-l...AbCd
              name: Production Langfuse
              type: langfuse
            schema:
              $ref: '#/components/schemas/CreateObservabilityDestinationRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              example:
                data:
                  api_key_hashes: null
                  config:
                    baseUrl: https://us.cloud.langfuse.com
                    publicKey: pk-l...EfGh
                    secretKey: sk-l...AbCd
                  created_at: '2025-08-24T10:30:00Z'
                  enabled: true
                  filter_rules: null
                  id: 99999999-aaaa-bbbb-cccc-dddddddddddd
                  name: Production Langfuse
                  privacy_mode: false
                  sampling_rate: 1
                  type: langfuse
                  updated_at: '2025-08-24T15:45:00Z'
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/CreateObservabilityDestinationResponse'
          description: Destination 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
        '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 an observability destination
      tags:
        - Observability
      x-speakeasy-name-override: create
  /observability/destinations/{id}:
    delete:
      description: >-
        Delete an existing observability destination. This performs a soft
        delete. [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: deleteObservabilityDestination
      parameters:
        - description: The destination ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The destination ID (UUID).
            example: 99999999-aaaa-bbbb-cccc-dddddddddddd
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                $ref: '#/components/schemas/DeleteObservabilityDestinationResponse'
          description: Destination 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 an observability destination
      tags:
        - Observability
      x-speakeasy-name-override: delete
    get:
      description: >-
        Fetch a single observability destination by its UUID. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: getObservabilityDestination
      parameters:
        - description: The destination ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The destination ID (UUID).
            example: 99999999-aaaa-bbbb-cccc-dddddddddddd
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  api_key_hashes: null
                  config:
                    baseUrl: https://us.cloud.langfuse.com
                    publicKey: pk-l...EfGh
                    secretKey: sk-l...AbCd
                  created_at: '2025-08-24T10:30:00Z'
                  enabled: true
                  filter_rules: null
                  id: 99999999-aaaa-bbbb-cccc-dddddddddddd
                  name: Production Langfuse
                  privacy_mode: false
                  sampling_rate: 1
                  type: langfuse
                  updated_at: '2025-08-24T15:45:00Z'
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/GetObservabilityDestinationResponse'
          description: The observability destination
        '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 an observability destination
      tags:
        - Observability
      x-speakeasy-name-override: get
    patch:
      description: >-
        Update an existing observability destination. Only the fields provided
        in the request body are updated. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateObservabilityDestination
      parameters:
        - description: The destination ID (UUID).
          in: path
          name: id
          required: true
          schema:
            description: The destination ID (UUID).
            example: 99999999-aaaa-bbbb-cccc-dddddddddddd
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            example:
              enabled: false
              name: Updated Langfuse
            schema:
              $ref: '#/components/schemas/UpdateObservabilityDestinationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  api_key_hashes: null
                  config:
                    baseUrl: https://us.cloud.langfuse.com
                    publicKey: pk-l...EfGh
                    secretKey: sk-l...AbCd
                  created_at: '2025-08-24T10:30:00Z'
                  enabled: true
                  filter_rules: null
                  id: 99999999-aaaa-bbbb-cccc-dddddddddddd
                  name: Production Langfuse
                  privacy_mode: false
                  sampling_rate: 1
                  type: langfuse
                  updated_at: '2025-08-24T15:45:00Z'
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/UpdateObservabilityDestinationResponse'
          description: Destination 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
        '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: Update an observability destination
      tags:
        - Observability
      x-speakeasy-name-override: update
  /organization/members:
    get:
      description: >-
        List all members of the organization associated with the authenticated
        management key. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listOrganizationMembers
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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: org: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
                          type:
                            - string
                            - 'null'
                        id:
                          description: User ID of the organization member
                          example: user_2dHFtVWx2n56w6HkM0000000000
                          type: string
                        last_name:
                          description: Last name of the member
                          example: Doe
                          type:
                            - string
                            - 'null'
                        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
  /presets:
    get:
      description: >-
        Lists all presets for the authenticated user, ordered by most recently
        updated first.
      operationId: listPresets
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - created_at: '2026-04-20T10:00:00Z'
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    description: null
                    designated_version_id: 550e8400-e29b-41d4-a716-446655440000
                    id: 650e8400-e29b-41d4-a716-446655440001
                    name: my-preset
                    slug: my-preset
                    status: active
                    status_updated_at: null
                    updated_at: '2026-04-20T10:00:00Z'
                    workspace_id: 750e8400-e29b-41d4-a716-446655440002
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListPresetsResponse'
          description: Paginated list of presets.
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      security:
        - apiKey: []
      summary: List presets
      tags:
        - Presets
      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
  /presets/{slug}:
    get:
      description: >-
        Retrieves a preset by its slug with its currently designated version
        inline.
      operationId: getPreset
      parameters:
        - description: URL-safe slug identifying the preset.
          in: path
          name: slug
          required: true
          schema:
            description: URL-safe slug identifying the preset.
            example: my-preset
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2026-04-20T10:00:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  description: null
                  designated_version:
                    config:
                      model: openai/gpt-4o
                      temperature: 0.7
                    created_at: '2026-04-20T10:00:00Z'
                    creator_id: user_2dHFtVWx2n56w6HkM0000000000
                    id: 550e8400-e29b-41d4-a716-446655440000
                    preset_id: 650e8400-e29b-41d4-a716-446655440001
                    system_prompt: You are a helpful assistant.
                    updated_at: '2026-04-20T10:00:00Z'
                    version: 1
                  designated_version_id: 550e8400-e29b-41d4-a716-446655440000
                  id: 650e8400-e29b-41d4-a716-446655440001
                  name: my-preset
                  slug: my-preset
                  status: active
                  status_updated_at: null
                  updated_at: '2026-04-20T10:00:00Z'
                  workspace_id: 750e8400-e29b-41d4-a716-446655440002
              schema:
                $ref: '#/components/schemas/GetPresetResponse'
          description: Preset with its designated version.
        '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
      security:
        - apiKey: []
      summary: Get a preset
      tags:
        - Presets
      x-speakeasy-name-override: get
  /presets/{slug}/chat/completions:
    post:
      description: >-
        Creates a preset (or a new version of an existing one) from an inference
        request body. Only fields that overlap with the preset config are
        persisted; other fields (e.g. `messages`, `stream`, `prompt`) are
        silently ignored.
      operationId: createPresetsChatCompletions
      parameters:
        - description: URL-safe slug identifying the preset. Created if it does not exist.
          in: path
          name: slug
          required: true
          schema:
            description: >-
              URL-safe slug identifying the preset. Created if it does not
              exist.
            example: my-preset
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              messages:
                - content: You are a helpful assistant.
                  role: system
                - content: Hello!
                  role: user
              model: openai/gpt-5.4
              temperature: 0.7
            schema:
              $ref: '#/components/schemas/ChatRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2026-04-20T10:00:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  description: null
                  designated_version:
                    config:
                      model: openai/gpt-5.4
                      temperature: 0.7
                    created_at: '2026-04-20T10:00:00Z'
                    creator_id: user_2dHFtVWx2n56w6HkM0000000000
                    id: 550e8400-e29b-41d4-a716-446655440000
                    preset_id: 650e8400-e29b-41d4-a716-446655440001
                    system_prompt: You are a helpful assistant.
                    updated_at: '2026-04-20T10:00:00Z'
                    version: 1
                  designated_version_id: 550e8400-e29b-41d4-a716-446655440000
                  id: 650e8400-e29b-41d4-a716-446655440001
                  name: my-preset
                  slug: my-preset
                  status: active
                  status_updated_at: null
                  updated_at: '2026-04-20T10:00:00Z'
                  workspace_id: 750e8400-e29b-41d4-a716-446655440002
              schema:
                $ref: '#/components/schemas/CreatePresetFromInferenceResponse'
          description: Preset created or 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
        '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
      security:
        - apiKey: []
      summary: Create a preset from a chat-completions request body
      tags:
        - Presets
  /presets/{slug}/messages:
    post:
      description: >-
        Creates a preset (or a new version of an existing one) from an inference
        request body. Only fields that overlap with the preset config are
        persisted; other fields (e.g. `messages`, `stream`, `prompt`) are
        silently ignored.
      operationId: createPresetsMessages
      parameters:
        - description: URL-safe slug identifying the preset. Created if it does not exist.
          in: path
          name: slug
          required: true
          schema:
            description: >-
              URL-safe slug identifying the preset. Created if it does not
              exist.
            example: my-preset
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              max_tokens: 1024
              messages:
                - content: Hello!
                  role: user
              model: anthropic/claude-4.6-sonnet
              system: You are a helpful assistant.
            schema:
              $ref: '#/components/schemas/MessagesRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2026-04-20T10:00:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  description: null
                  designated_version:
                    config:
                      max_tokens: 1024
                      model: anthropic/claude-4.6-sonnet
                    created_at: '2026-04-20T10:00:00Z'
                    creator_id: user_2dHFtVWx2n56w6HkM0000000000
                    id: 550e8400-e29b-41d4-a716-446655440000
                    preset_id: 650e8400-e29b-41d4-a716-446655440001
                    system_prompt: You are a helpful assistant.
                    updated_at: '2026-04-20T10:00:00Z'
                    version: 1
                  designated_version_id: 550e8400-e29b-41d4-a716-446655440000
                  id: 650e8400-e29b-41d4-a716-446655440001
                  name: my-preset
                  slug: my-preset
                  status: active
                  status_updated_at: null
                  updated_at: '2026-04-20T10:00:00Z'
                  workspace_id: 750e8400-e29b-41d4-a716-446655440002
              schema:
                $ref: '#/components/schemas/CreatePresetFromInferenceResponse'
          description: Preset created or 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
        '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
      security:
        - apiKey: []
      summary: Create a preset from a messages request body
      tags:
        - Presets
  /presets/{slug}/responses:
    post:
      description: >-
        Creates a preset (or a new version of an existing one) from an inference
        request body. Only fields that overlap with the preset config are
        persisted; other fields (e.g. `messages`, `stream`, `prompt`) are
        silently ignored.
      operationId: createPresetsResponses
      parameters:
        - description: URL-safe slug identifying the preset. Created if it does not exist.
          in: path
          name: slug
          required: true
          schema:
            description: >-
              URL-safe slug identifying the preset. Created if it does not
              exist.
            example: my-preset
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              input: Hello!
              instructions: You are a helpful assistant.
              model: openai/gpt-5.4
            schema:
              $ref: '#/components/schemas/ResponsesRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2026-04-20T10:00:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  description: null
                  designated_version:
                    config:
                      model: openai/gpt-5.4
                    created_at: '2026-04-20T10:00:00Z'
                    creator_id: user_2dHFtVWx2n56w6HkM0000000000
                    id: 550e8400-e29b-41d4-a716-446655440000
                    preset_id: 650e8400-e29b-41d4-a716-446655440001
                    system_prompt: You are a helpful assistant.
                    updated_at: '2026-04-20T10:00:00Z'
                    version: 1
                  designated_version_id: 550e8400-e29b-41d4-a716-446655440000
                  id: 650e8400-e29b-41d4-a716-446655440001
                  name: my-preset
                  slug: my-preset
                  status: active
                  status_updated_at: null
                  updated_at: '2026-04-20T10:00:00Z'
                  workspace_id: 750e8400-e29b-41d4-a716-446655440002
              schema:
                $ref: '#/components/schemas/CreatePresetFromInferenceResponse'
          description: Preset created or 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
        '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
      security:
        - apiKey: []
      summary: Create a preset from a responses request body
      tags:
        - Presets
  /presets/{slug}/versions:
    get:
      description: >-
        Lists all versions of a preset, ordered by version number ascending
        (oldest first).
      operationId: listPresetVersions
      parameters:
        - description: URL-safe slug identifying the preset.
          in: path
          name: slug
          required: true
          schema:
            description: URL-safe slug identifying the preset.
            example: my-preset
            minLength: 1
            type: string
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - config:
                      model: openai/gpt-4o
                      temperature: 0.7
                    created_at: '2026-04-20T10:00:00Z'
                    creator_id: user_2dHFtVWx2n56w6HkM0000000000
                    id: 550e8400-e29b-41d4-a716-446655440000
                    preset_id: 650e8400-e29b-41d4-a716-446655440001
                    system_prompt: You are a helpful assistant.
                    updated_at: '2026-04-20T10:00:00Z'
                    version: 1
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListPresetVersionsResponse'
          description: Paginated list of preset versions.
        '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
      security:
        - apiKey: []
      summary: List versions of a preset
      tags:
        - Presets
      x-speakeasy-name-override: listVersions
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
  /presets/{slug}/versions/{version}:
    get:
      description: Retrieves a specific version of a preset by its slug and version number.
      operationId: getPresetVersion
      parameters:
        - description: URL-safe slug identifying the preset.
          in: path
          name: slug
          required: true
          schema:
            description: URL-safe slug identifying the preset.
            example: my-preset
            minLength: 1
            type: string
        - description: Version number of the preset.
          in: path
          name: version
          required: true
          schema:
            description: Version number of the preset.
            example: '1'
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  config:
                    model: openai/gpt-4o
                    temperature: 0.7
                  created_at: '2026-04-20T10:00:00Z'
                  creator_id: user_2dHFtVWx2n56w6HkM0000000000
                  id: 550e8400-e29b-41d4-a716-446655440000
                  preset_id: 650e8400-e29b-41d4-a716-446655440001
                  system_prompt: You are a helpful assistant.
                  updated_at: '2026-04-20T10:00:00Z'
                  version: 1
              schema:
                $ref: '#/components/schemas/GetPresetVersionResponse'
          description: The requested preset version.
        '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
      security:
        - apiKey: []
      summary: Get a specific version of a preset
      tags:
        - Presets
      x-speakeasy-name-override: getVersion
  /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
                          type:
                            - array
                            - 'null'
                        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
                          type:
                            - string
                            - 'null'
                        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
                          type:
                            - string
                            - 'null'
                        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
                          type:
                            - string
                            - 'null'
                        terms_of_service_url:
                          description: URL to the provider's terms of service
                          example: https://openai.com/terms
                          type:
                            - string
                            - 'null'
                      required:
                        - name
                        - slug
                        - privacy_policy_url
                      type: object
                    type: array
                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. Documents may be plain
                    strings, or structured objects with `text` and/or `image`
                    for multimodal models.
                  example:
                    - Paris is the capital of France.
                    - Berlin is the capital of Germany.
                  items:
                    anyOf:
                      - type: string
                      - description: >-
                          A structured document with optional text and/or image
                          content. At least one of `text` or `image` must be
                          provided.
                        properties:
                          image:
                            description: >-
                              An image associated with the document, as a remote
                              URL (http/https) or a base64-encoded data URI
                              (data:image/...).
                            example: >-
                              https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Phytogenic.png
                            type: string
                          text:
                            description: The document text
                            example: >-
                              AI enables robots to perceive, plan, and act
                              autonomously.
                            type: string
                        type: object
                    description: >-
                      A document to rerank. Either a plain string, or a
                      structured object with optional `text` and/or `image`.
                  minItems: 1
                  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 echoing the original input (text
                            and/or image)
                          properties:
                            image:
                              description: >-
                                The image (URL or data URI) from the original
                                document
                              example: https://example.com/image.png
                              type: string
                            text:
                              description: The document text
                              example: Paris is the capital of France.
                              type: string
                          type: object
                        index:
                          description: Index of the document in the original input list
                          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
      parameters:
        - description: >-
            Opt-in to surface routing metadata on the response under
            `openrouter_metadata`. Defaults to `disabled`. The legacy header
            `X-OpenRouter-Experimental-Metadata` is also accepted for backward
            compatibility.
          example: enabled
          in: header
          name: X-OpenRouter-Metadata
          required: false
          schema:
            $ref: '#/components/schemas/MetadataLevel'
      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:
                completed_at: 1700000010
                created_at: 1700000000
                error: null
                frequency_penalty: null
                id: resp_abc123
                incomplete_details: null
                instructions: null
                max_output_tokens: null
                metadata: null
                model: openai/gpt-4o
                object: response
                output:
                  - content:
                      - annotations: []
                        text: >-
                          Why did the chicken cross the road? To get to the
                          other side!
                        type: output_text
                    id: msg-abc123
                    role: assistant
                    status: completed
                    type: message
                parallel_tool_calls: true
                presence_penalty: null
                status: completed
                temperature: null
                tool_choice: auto
                tools: []
                top_p: null
                usage:
                  input_tokens: 10
                  input_tokens_details:
                    cached_tokens: 0
                  output_tokens: 20
                  output_tokens_details:
                    reasoning_tokens: 0
                  total_tokens: 30
              schema:
                $ref: '#/components/schemas/OpenResponsesResult'
            text/event-stream:
              example:
                data:
                  content_index: 0
                  delta: Hello
                  item_id: item-1
                  logprobs: []
                  output_index: 0
                  sequence_number: 4
                  type: response.output_text.delta
              schema:
                $ref: '#/components/schemas/ResponsesStreamingResponse'
              x-speakeasy-sse-sentinel: '[DONE]'
          description: Successful response
        '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
        '403':
          content:
            application/json:
              examples:
                guardrail-blocked:
                  summary: Guardrail blocked the request
                  value:
                    error:
                      code: 403
                      message: 'Request blocked: prompt injection patterns detected'
                      metadata:
                        patterns:
                          - ignore all previous instructions
                    openrouter_metadata:
                      attempt: 1
                      endpoints:
                        available:
                          - model: openai/gpt-4o
                            provider: OpenAI
                            selected: false
                        total: 1
                      is_byok: false
                      pipeline:
                        - data:
                            action: blocked
                            detected: true
                            engines:
                              - regex
                            patterns:
                              - ignore all previous instructions
                          guardrail_id: grd_abc123
                          guardrail_scope: api-key
                          name: regex_pi_detection
                          summary: >-
                            Blocked: prompt injection detected (1 pattern
                            matched)
                          type: guardrail
                      region: iad
                      requested: openai/gpt-4o
                      strategy: direct
                      summary: available=1
                insufficient-permissions:
                  summary: Insufficient permissions
                  value:
                    error:
                      code: 403
                      message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: >-
            Forbidden - Authentication successful but insufficient permissions,
            or a guardrail blocked the request. When guardrails block and the
            `X-OpenRouter-Metadata: enabled` header is present, the response
            includes `openrouter_metadata` with full routing context and a
            `pipeline` array containing guardrail stage details.
        '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:
        - 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: completed
                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
            type:
              - integer
              - 'null'
      responses:
        '200':
          content:
            video/mp4:
              example: <binary video data>
              schema:
                format: binary
                type: string
          description: >-
            Video content stream. The body is the raw video bytes proxied from
            the upstream provider, and the Content-Type reflects the provider
            media type (video/mp4).
        '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:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            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_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
                    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_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
                  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; remove the keys
        first. [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: deleteWorkspace
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          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_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
                  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_guardrail_id: 595d5849-7e86-51fd-a7c0-705c34e4afff
                  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}/budgets:
    get:
      description: >-
        List all budgets configured for a workspace. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listWorkspaceBudgets
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          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'
                    id: 770e8400-e29b-41d4-a716-446655440000
                    limit_usd: 100
                    reset_interval: monthly
                    updated_at: '2025-08-24T15:45:00Z'
                    workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/ListWorkspaceBudgetsResponse'
          description: Budgets retrieved 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: List workspace budgets
      tags:
        - Workspaces
      x-speakeasy-name-override: listBudgets
  /workspaces/{id}/budgets/{interval}:
    delete:
      description: >-
        Remove the budget for a given interval. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: deleteWorkspaceBudget
      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
        - description: >-
            Budget reset interval. Use "lifetime" for a one-time budget that
            never resets.
          example: monthly
          in: path
          name: interval
          required: true
          schema:
            $ref: '#/components/schemas/WorkspaceBudgetInterval'
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                $ref: '#/components/schemas/DeleteWorkspaceBudgetResponse'
          description: Budget 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 workspace budget
      tags:
        - Workspaces
      x-speakeasy-name-override: deleteBudget
    put:
      description: >-
        Create or update the budget for a given interval. Budget limits must
        strictly decrease as the interval narrows (lifetime > monthly > weekly >
        daily). [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      operationId: upsertWorkspaceBudget
      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
        - description: >-
            Budget reset interval. Use "lifetime" for a one-time budget that
            never resets.
          example: monthly
          in: path
          name: interval
          required: true
          schema:
            $ref: '#/components/schemas/WorkspaceBudgetInterval'
      requestBody:
        content:
          application/json:
            example:
              limit_usd: 100
            schema:
              $ref: '#/components/schemas/UpsertWorkspaceBudgetRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2025-08-24T10:30:00Z'
                  id: 770e8400-e29b-41d4-a716-446655440000
                  limit_usd: 100
                  reset_interval: monthly
                  updated_at: '2025-08-24T15:45:00Z'
                  workspace_id: 550e8400-e29b-41d4-a716-446655440000
              schema:
                $ref: '#/components/schemas/UpsertWorkspaceBudgetResponse'
          description: Budget created or 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: Create or update a workspace budget
      tags:
        - Workspaces
      x-speakeasy-name-override: setBudget
  /workspaces/{id}/members:
    get:
      description: >-
        List all members of a workspace. Returns paginated results. For the
        default workspace, returns all organization members (implicit
        membership). [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listWorkspaceMembers
      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
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            default: 0
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            type:
              - integer
              - 'null'
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - created_at: '2025-08-24T10:30:00Z'
                    id: 660e8400-e29b-41d4-a716-446655440000
                    role: member
                    user_id: user_abc123
                    workspace_id: 550e8400-e29b-41d4-a716-446655440000
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListWorkspaceMembersResponse'
          description: List of workspace 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
        '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: List workspace members
      tags:
        - Workspaces
      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
  /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. SCIM-managed members cannot be
        removed; changes must be made in your identity provider. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: bulkRemoveWorkspaceMembers
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          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: BYOK endpoints
    name: BYOK
  - description: Benchmarks endpoints
    name: Benchmarks
  - description: Chat completion endpoints
    name: Chat
  - description: Task classification market-share endpoints
    name: Classifications
  - description: Credit management endpoints
    name: Credits
  - description: Datasets endpoints
    name: Datasets
  - description: Text embedding endpoints
    name: Embeddings
  - description: Endpoint information
    name: Endpoints
  - description: Files endpoints
    name: Files
  - description: Generation history endpoints
    name: Generations
  - description: Guardrails endpoints
    name: Guardrails
  - description: Images endpoints
    name: Images
  - description: Model information endpoints
    name: Models
  - description: OAuth authentication endpoints
    name: OAuth
  - description: Observability endpoints
    name: Observability
  - description: Organization endpoints
    name: Organization
  - description: Presets endpoints
    name: Presets
  - description: Provider information endpoints
    name: Providers
  - description: Rerank endpoints
    name: Rerank
  - description: OpenAI-compatible Responses API endpoints
    name: Responses
  - description: Speech-to-text endpoints
    name: STT
    x-displayName: Transcriptions
  - description: Text-to-speech endpoints
    name: TTS
    x-displayName: Speech
  - description: Video Generation endpoints
    name: Video Generation
  - description: Workspaces endpoints
    name: Workspaces
  - description: beta.Analytics endpoints
    name: beta.Analytics
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
